El compilador de Rust (rustc) emite implícitamente el atributo #[inline] en las implementaciones de traits fundamentales como Debug, Display y Clone cuando se generan mediante el macro #[derive]. Aunque la documentación de referencia sugiere que esto es una recomendación y no una garantía estricta, la expansión de macros confirma que el compilador aplica esta optimización por defecto. Esta práctica es generalmente beneficiosa, ya que las implementaciones derivadas suelen ser triviales y el inlining mejora el rendimiento en escenarios de alta frecuencia, como el registro de depuración (debug logging).
Sin embargo, el impacto de esta optimización puede ser significativo en estructuras de datos complejas. Por ejemplo, en una jerarquía de errores anidada donde cada nivel contiene múltiples campos o referencias, la implementación de Debug se expande a un código extenso. En casos extremos, la acumulación de código que puede ser inlined en cada invocación puede representar una fracción considerable del tamaño total del binario de Rust. Estudios recientes indican que prevenir el inlining de estas implementaciones derivadas puede reducir el tamaño del binario de herramientas como uv en aproximadamente 160 KB. Este hallazgo destaca la importancia de comprender las implicaciones de rendimiento de las optimizaciones automáticas del compilador, especialmente en proyectos donde el tamaño del binario es un factor crítico de rendimiento.
