Rust의 derive는 종종 inline을 암시한다
Rust's derive often implies inline
Rust에서 #[derive(Debug)] 등은 자동으로 #[inline]을 붙인다. 이는 보장된 동작은 아니지만 레퍼런스에서 예시로 확인할 수 있다. 대부분의 경우 바람직하지만, 깊게 중첩된 에러 열거형에서는 인라인된 Debug 구현이 바이너리 크기를 크게 늘릴 수 있다. 실제로 uv에서는 특정 Debug 구현의 인라인을 막아 약 160KB를 줄였다. rustc가 인라인 크기나 횟수에 제한을 두지 않는 점이 놀라웠다.
우리는 uv의 바이너리 크기를 약 160KB 줄일 수 있다는 것을 발견했다. 이는 주어진 Debug 구현을 rustc가 인라인하지 않도록 함으로써 가능했다.