MST

星途 面试题库

面试题:Rust自定义特征的泛型与约束

实现一个自定义特征 `MathOperation`,它有一个关联类型 `Output`,以及一个方法 `operate`,接受两个相同类型的参数并返回 `Output` 类型的值。然后定义一个泛型函数 `perform_operation`,它接受实现了 `MathOperation` 特征的类型的实例以及两个该类型的参数,并调用 `operate` 方法返回结果。请用代码展示如何为 `i32` 类型实现 `MathOperation` 特征,使得 `operate` 方法实现加法操作。
40.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义自定义特征 MathOperation
trait MathOperation {
    type Output;
    fn operate(&self, a: Self::Input, b: Self::Input) -> Self::Output;
}

// 为 i32 类型实现 MathOperation 特征
struct Add;
impl MathOperation for Add {
    type Output = i32;
    fn operate(&self, a: i32, b: i32) -> i32 {
        a + b
    }
}

// 定义泛型函数 perform_operation
fn perform_operation<T: MathOperation>(op: &T, a: T::Input, b: T::Input) -> T::Output {
    op.operate(a, b)
}

你可以这样调用:

fn main() {
    let add_op = Add;
    let result = perform_operation(&add_op, 5, 3);
    println!("The result is: {}", result);
}