¿Cuándo y por qué usar el atributo `#[inline]` en Rust? ¿Es siquiera necesario?
¡Hola a todos! Soy nuevo en Rust y estoy tratando de entender las optimizaciones. Leí que en C/C++ la palabra clave `inline` puede acelerar el código reemplazando la llamada a la función con su cuerpo. En Rust también existe el atributo `#[inline]`, pero no termino de entender cuándo aplicarlo.
Escribí una función simple para sumar dos números:
```rust
fn add(a: i32, b: i32) -> i32 {
a + b
}
```
Y otra que la llama en un bucle:
```rust
fn sum_squares(n: i32) -> i32 {
let mut sum = 0;
for i in 0..n {
sum += add(i, i);
}
sum
}
```
Si agrego `#[inline(always)]` a `add`, ¿tendría sentido? ¿El compilador no lo adivina por sí solo? O, por el contrario, ¿`#[inline(never)]` podría ser útil para reducir el tamaño del binario?
Vi que en la biblioteca estándar de Rust algunas funciones están marcadas con `#[inline]`, pero no todas. Entonces, esto debe hacerse de manera consciente. ¿Cómo decide un desarrollador si vale la pena poner `#[inline]` en su código? ¿Existen reglas empíricas o esto siempre es una optimización prematura?
No answers yet.
Inicia sesión para dejar una respuesta