// 定义一个trait MathOps,包含add和subtract方法
trait MathOps {
fn add(&self, a: Self, b: Self) -> Self;
fn subtract(&self, a: Self, b: Self) -> Self;
}
// 定义一个泛型结构体Calculator<T>,其中T实现了MathOps
struct Calculator<T>
where
T: MathOps,
{
value: T,
}
// 编写一个函数perform_calculation,它接收一个Calculator<T>类型的实例,
// 并使用trait完全限定语法分别调用add和subtract方法
fn perform_calculation<T>(calc: &Calculator<T>)
where
T: MathOps,
{
let a = calc.value.clone();
let b = calc.value.clone();
// 使用trait完全限定语法调用add方法
let result_add = <T as MathOps>::add(&a, a, b);
// 使用trait完全限定语法调用subtract方法
let result_subtract = <T as MathOps>::subtract(&a, a, b);
println!("Addition result: {:?}", result_add);
println!("Subtraction result: {:?}", result_subtract);
}