名称' 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
}
}

并给出以下错误:

the name `T` is already used for a generic parameter

可能出什么事了?

由于Calculation不需要addition是通用的:

use std::ops::Add;
#[derive(Debug)]
struct Calculation<T> {
num1: T,
num2: T,
}
impl<T> Calculation<T>
where
T: Add<Output = T> + Copy
{
fn addition(&self) -> T {
self.num1 + self.num2
}
}

最新更新