Rust有一个"inline"属性,可以使用以下三种方式之一:
#[inline]
#[inline(always)]
#[inline(never)]
何时应该使用它们?
在Rust参考文献中,我们看到一个内联属性部分的说明:
编译器根据内部启发式方法自动内联函数。错误地内联函数实际上可能会使程序变慢,因此应谨慎使用。
在Rust内部论坛上,huon也保守地指定了内联。
但是我们在 Rust 源码中看到了相当多的使用情况,包括标准库。许多一行函数都添加了内联属性,这应该很容易让编译器根据参考文献通过启发式方法进行优化。那么这些实际上是不需要的吗?
inline(never)用于panic内置函数上,以确保优化器不会将仅在panic情况下调用的函数进行内联。 - oli_obk#[inline] pub fn f() { g() }这样的东西,如果希望将g内联到另一个板条箱中的f的调用者中,是否也应该注释#[inline]? - eggyal