MST

星途 面试题库

面试题:Rust中特质对象与动态派发的基础应用

请编写一段Rust代码,定义一个特质`Animal`,包含方法`speak`。然后创建两个结构体`Dog`和`Cat`,它们都实现`Animal`特质。最后,利用特质对象和动态派发,将`Dog`和`Cat`的实例放入一个`Vec`中,并遍历这个`Vec`调用`speak`方法。
12.5万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义特质Animal
trait Animal {
    fn speak(&self);
}

// 定义结构体Dog并实现Animal特质
struct Dog;
impl Animal for Dog {
    fn speak(&self) {
        println!("Woof!");
    }
}

// 定义结构体Cat并实现Animal特质
struct Cat;
impl Animal for Cat {
    fn speak(&self) {
        println!("Meow!");
    }
}

fn main() {
    // 创建一个Vec,元素为特质对象
    let animals: Vec<Box<dyn Animal>> = vec![
        Box::new(Dog),
        Box::new(Cat),
    ];

    // 遍历Vec并调用speak方法
    for animal in animals {
        animal.speak();
    }
}