Avatar ·

Rust类型中`dyn`关键字是什么意思?

你好!我开始学习Rust,遇到了一件奇怪的事情。在一些例子中我看到`Box`,而在其他例子中只是`Box`或`&dyn Trait`。我试图理解`dyn`关键字到底是做什么的。 例如,我有这样的代码: ```rust trait Animal { fn speak(&self); } struct Dog; impl Animal for Dog { fn speak(&self) { println!("汪!"); } } fn main() { let pet: Box = Box::new(Dog); pet.speak(); } ``` 如果我删除`dyn`并只写`Box`,编译器会报错:"the trait `Animal` cannot be made into an object"。但我不明白为什么会这样,以及`dyn`到底是什么意思。它是一种特殊类型吗?还是一个修饰符?什么时候应该使用它,什么时候不应该? 请像对新手一样解释一下。提前谢谢! <<>>

dyn是什么以及为什么需要它?

Rust中的关键字dyn是一个语法标记,它指示动态分发。