在Rust中,实现泛型类型的特质的正确方式是什么?我希望我的向量由整数或浮点数组成。无论类型如何,我都希望get_magnitude()输出f64。如何让powi()和sqrt()起作用?有什么解决方法吗?我卡住了。
pub struct Vector<T> {
i: T,
j: T,
k: T,
}
impl<T> Vector<T> {
fn new(i: T, j: T, k: T) -> Vector<T> {
Vector {
i,
j,
k,
}
}
}
impl<T> Vector<T> {
fn get_magnitude(&self) -> f64 {
(self.i.powi(2) + self.j.powi(2) + self.k.powi(2)).sqrt()
}
}
f64
的powi
函数是在f64
上定义的。实际上,你唯一的选择是放弃尝试泛型化并声明实际类型。特别是因为没有测试要求你使用泛型。 - Ivan C