Rust 的 derive 宏默认会附带 inline 提示
来源:yossarian.net — 2026-10-03
📋 概述
作者发现 Rust 的 #[derive(Debug)] 等派生实现会在生成的代码里自动加上 #[inline] 属性,让编译器倾向于内联这些实现。对简单的 Clone、Debug 而言通常有益,但对深度嵌套的错误类型,内联会把大量格式化代码塞进每一个调用点。作者实测通过阻止内联某个 Debug 实现,为 uv 的二进制体积瘦身约 160KB——这一行为并未写入语言保证,只是参考文档示例中隐含。
🔑 核心要点
- Rust 的 派生宏会自动附加 #[inline],该行为并非正式保证,只是示例中隐含
- #[inline] 只是提示,简单派生的 Clone、Debug 通常确实受益于内联
- 深度嵌套的错误枚举会让大量格式化代码被内联进每个调用点
- rustc 似乎对内联的体积与次数并不设上限
- 作者用自定义的 #[inline(never)] 宏替换 derive(Debug),为 uv 缩减约 160KB 体积
💡 金句
我们在 uv 上通过阻止 rustc 内联某个 Debug 实现,把二进制体积缩小了大约 160KB。
👍 0
👎 0
← 返回 Lobsters 首页