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是一个语法标记,它指示动态分发。