【发布时间】:2021-07-02 18:58:50
【问题描述】:
在 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()
}
}
[https://www.codewars.com/kata/58ee4962dc4f81d6f400001c/rust][1]
【问题讨论】:
-
标准库中唯一返回
f64的powi定义在f64上。实际上,您唯一的选择是放弃尝试成为泛型并声明实际类型。特别是因为没有测试要求你是通用的。
标签: generics methods rust traits implementation