23、Rust 特性(Traits)深入解析

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值