MST
星途 面试题库

面试题:Rust中trait默认实现与泛型的结合使用

定义一个`trait`叫`MathOps`,包含两个方法`add`和`subtract`,并为`add`方法提供默认实现。`add`方法接收两个泛型参数并返回它们的和。然后定义一个结构体`Calculator<T>`,它实现`MathOps` trait。编写代码实现让`Calculator<i32>`使用默认的`add`方法,同时为`Calculator<f64>`自定义`subtract`方法,使其返回两个`f64`类型参数的差。请展示完整的Rust代码实现。
13.2万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
trait MathOps<T> {
    fn add(&self, a: T, b: T) -> T {
        a + b
    }
    fn subtract(&self, a: T, b: T) -> T;
}

struct Calculator<T>;

impl MathOps<i32> for Calculator<i32> {
    fn subtract(&self, a: i32, b: i32) -> i32 {
        a - b
    }
}

impl MathOps<f64> for Calculator<f64> {
    fn subtract(&self, a: f64, b: f64) -> f64 {
        a - b
    }
}