在Rust中,您可以将(x * x)
写为x.powi(2)
。
是否有理由/反对将(x * x)
(除了可读性和个人偏好)包装到Rust中的函数/宏中,或者这相当于使用x.powi(2)
?
(2
中的常量x.powi(2)
折叠并转换为x * x
)
答案 0 :(得分:7)
不,使用当前的Rust编译器它们是等效的,产生完全相同的结果。
您可以通过Rust Playground:
查看为这两种变体生成的汇编代码#![crate_type = "lib"]
pub fn square_mul(x:f64) -> f64 {
x*x
}
pub fn square_pow(x:f64) -> f64 {
x.powi(2)
}
选择频道并释放编辑模式,然后按左上角的ASM
按钮。这是Rust v1.10的输出:
// square_mul:
mulsd %xmm0, %xmm0
retq
// square_pow:
mulsd %xmm0, %xmm0
retq
因此,Rust为这两个函数生成完全相同的代码。
答案 1 :(得分:2)
如果它对你来说更好,这已经成为定义它的理由。你需要一个更好的理由,在这种情况下,我不认为有一个理由:好像没有人阅读代码会让squared
感到困惑。