MST

星途 面试题库

面试题:Rust中特征与泛型结合实现简单计算器

请使用Rust的特征(Trait)与泛型(Generic)实现一个简单的计算器。定义一个`Operation`特征,包含`calculate`方法,分别实现`Add`、`Subtract`、`Multiply`和`Divide`结构体来实现这个特征,并且编写一个泛型函数`perform_operation`,它接受两个数字和一个实现了`Operation`特征的对象,返回计算结果。
31.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

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

// 实现Add结构体
struct Add;
impl Operation for Add {
    fn calculate(&self, a: f64, b: f64) -> f64 {
        a + b
    }
}

// 实现Subtract结构体
struct Subtract;
impl Operation for Subtract {
    fn calculate(&self, a: f64, b: f64) -> f64 {
        a - b
    }
}

// 实现Multiply结构体
struct Multiply;
impl Operation for Multiply {
    fn calculate(&self, a: f64, b: f64) -> f64 {
        a * b
    }
}

// 实现Divide结构体
struct Divide;
impl Operation for Divide {
    fn calculate(&self, a: f64, b: f64) -> f64 {
        if b == 0.0 {
            panic!("Division by zero");
        }
        a / b
    }
}

// 泛型函数perform_operation
fn perform_operation<O: Operation>(a: f64, b: f64, op: &O) -> f64 {
    op.calculate(a, b)
}

你可以使用以下方式测试这些函数:

fn main() {
    let add_op = Add;
    let subtract_op = Subtract;
    let multiply_op = Multiply;
    let divide_op = Divide;

    let a = 10.0;
    let b = 5.0;

    println!("Addition: {}", perform_operation(a, b, &add_op));
    println!("Subtraction: {}", perform_operation(a, b, &subtract_op));
    println!("Multiplication: {}", perform_operation(a, b, &multiply_op));
    println!("Division: {}", perform_operation(a, b, &divide_op));
}