以下代码无法编译:
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
}
}