Wann und warum sollte man das Attribut `#[inline]` in Rust verwenden? Ist es überhaupt nötig?
Hallo zusammen! Ich bin neu in Rust und versuche, mich mit Optimierungen vertraut zu machen. Ich habe gelesen, dass das Schlüsselwort `inline` in C/C++ den Code beschleunigen kann, indem es den Funktionsaufruf durch den Funktionskörper ersetzt. In Rust gibt es ebenfalls das Attribut `#[inline]`, aber ich verstehe nicht ganz, wann ich es anwenden soll.
Ich habe eine einfache Funktion zum Addieren zweier Zahlen geschrieben:
```rust
fn add(a: i32, b: i32) -> i32 {
a + b
}
```
Und eine weitere, die sie in einer Schleife aufruft:
```rust
fn sum_squares(n: i32) -> i32 {
let mut sum = 0;
for i in 0..n {
sum += add(i, i);
}
sum
}
```
Wenn ich `#[inline(always)]` zu `add` hinzufüge, wäre das sinnvoll? Würde der Compiler nicht selbst darauf kommen? Oder könnte `#[inline(never)]` im Gegenteil nützlich sein, um die Binary-Größe zu reduzieren?
Ich habe gesehen, dass in der Standardbibliothek von Rust einige Funktionen mit `#[inline]` markiert sind, aber nicht alle. Das bedeutet, man sollte es bewusst einsetzen. Wie entscheidet ein Entwickler, ob er `#[inline]` in seinen Code einfügen sollte? Gibt es empirische Regeln oder ist das immer vorzeitige Optimierung?