MST

星途 面试题库

面试题:Rust特征的高级抽象与约束问题

定义一个特征`MathOperation`,包含方法`calculate`用于执行某种数学运算。然后定义两个结构体`Addition`和`Multiplication`实现该特征。接着编写一个泛型函数`perform_operation`,它接受一个实现了`MathOperation`特征的类型的实例以及两个`i32`类型参数,调用`calculate`方法并返回结果。同时,要求在函数定义中使用特征约束,确保传入的类型是实现了`MathOperation`特征的,并且只能接受`i32`作为输入参数。请写出完整代码。
44.7万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义特征
trait MathOperation {
    fn calculate(&self, a: i32, b: i32) -> i32;
}

// 定义结构体并实现特征
struct Addition;
impl MathOperation for Addition {
    fn calculate(&self, a: i32, b: i32) -> i32 {
        a + b
    }
}

struct Multiplication;
impl MathOperation for Multiplication {
    fn calculate(&self, a: i32, b: i32) -> i32 {
        a * b
    }
}

// 定义泛型函数
fn perform_operation<T: MathOperation>(operation: T, a: i32, b: i32) -> i32 {
    operation.calculate(a, b)
}