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