MST
星途 面试题库

面试题:Rust中特质对象的基础使用

请简述在Rust中如何创建和使用特质对象,假设你有一个`Animal`特质,包含`speak`方法,以及`Dog`和`Cat`结构体都实现了`Animal`特质,给出一段代码示例展示如何使用特质对象调用`speak`方法。
29.0万 热度难度
编程语言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() {
    // 创建特质对象的向量
    let animals: Vec<Box<dyn Animal>> = vec![
        Box::new(Dog),
        Box::new(Cat),
    ];

    // 通过特质对象调用speak方法
    for animal in animals {
        animal.speak();
    }
}

在上述代码中:

  1. 首先定义了Animal特质,包含speak方法。
  2. 接着DogCat结构体分别实现了Animal特质。
  3. main函数中,创建了一个Vec<Box<dyn Animal>>类型的向量,其中Box<dyn Animal>就是特质对象,它可以存放任何实现了Animal特质的类型。
  4. 最后通过遍历这个向量,调用每个特质对象的speak方法。