实际代码:
extern crate num_traits;
pub trait DigitCount {
fn decimal_digit_count(&self) -> usize;
}
impl <T: PartialOrd + num_traits::Zero + Into<f64>> DigitCount for T {
fn decimal_digit_count (&self) -> usize {
if self.is_zero() {
1
} else {
self.into().abs().log10().trunc() as usize + 1
}
}
}
必须对任何整数值调用该方法decimal_digit_count
并返回其中的小数位数:
println!("{}", 123u64.decimal_digit_count());
问题:如何正确编写转换T
→用于方法的f64
后续调用abs
,,,?在其当前形式中,编译器需要一个类型注释,但如果它被替换为 ( ),它表示需要 0 个类型参数。log10
trunc
into()
into::<T>()