支持 trait 对象的更多容器类型

Minimum Rust version: 1.2

在 Rust 1.0 中,只有某些特殊的类型可以创建成 trait objects.

在 Rust 1.2 中,这种限制被解除了,更多的类型可以做到这一点。 例如, Rc<T>,Rust 的引用计数类型之一:

  1. use std::rc::Rc;
  2. trait Foo {}
  3. impl Foo for i32 {
  4. }
  5. fn main() {
  6. let obj: Rc<dyn Foo> = Rc::new(5);
  7. }

这段代码在 Rust 1.0 中无法执行,但是现在可以了。

如果您之前没有看过 dyn 语法,请参阅相关章节。对于不支持它的版本,将 Rc <dyn Foo> 替换为 Rc <Foo>