Generics 名称'T'已用于泛型参数
以下内容无法编译:Generics 名称'T'已用于泛型参数,generics,rust,Generics,Rust,以下内容无法编译: fn main() { let add = Calculation { num1: 2, num2: 10 }; println!("{}", Calculation::addition(&add)); } #[derive(Debug)] struct Calculation<T> { num1: T, num2: T, } impl<T> Calculation<T>{
fn main() {
let add = Calculation { num1: 2, num2: 10 };
println!("{}", Calculation::addition(&add));
}
#[derive(Debug)]
struct Calculation<T> {
num1: T,
num2: T,
}
impl<T> Calculation<T>{
fn addition<T>(&self) -> &T {
&self.num1 + &self.num2
}
}
可能有什么问题?由于
计算
无需将添加
作为通用:
使用std::ops::Add;
#[导出(调试)]
结构计算{
num1:T,
num2:T,
}
impl计算
哪里
T:添加+复制
{
fn添加(&self)->T{
self.num1+self.num2
}
}
存在多个问题,您不需要内部的
。您需要要求T
同时实现Copy
和std::ops::Add
。您可能还希望返回T
,而不是&T
the name `T` is already used for a generic parameter