Rust 特性(Traits)深入解析
1. 多方法特性(Traits with Multiple Methods)
在 Rust 中,同一作用域内不允许有两个同名的函数。但有时我们需要一个能计算浮点数绝对值的四次方根的方法。
1.1 原程序及问题
若将之前示例中的 100f64 和 100f32 替换为 -100f64 和 -100f32 ,程序会输出 NaN NaN ,因为对负数求平方根会得到非数字(NaN)结果。
1.2 改进程序
为解决上述问题,我们可以编写如下程序:
// Removed the standalone sqrt function.
trait HasSqrtAndAbs {
fn sqrt(self) -> Self;
fn abs(self) -> Self;
}
impl HasSqrtAndAbs for f32 {
fn sqrt(self) -> Self { self.sqrt() }
fn abs(self) -> Self { self.abs() }
}
impl HasSqrtAndAbs for f64 {
fn sqrt(self) -> Self { self.sqrt() }
fn abs(self) -> Self { self.abs() }
}
fn ab
超级会员免费看
订阅专栏 解锁全文
53

被折叠的 条评论
为什么被折叠?



