我正在尝试从Box<dyn T>
中获取一个&dyn T
,就像下面的示例一样。然而,它无法编译。
trait MyTrait {
}
struct Foo;
impl MyTrait for Foo {}
fn main() {
let b: Box<dyn MyTrait> = Box::new(Foo);
let c: &dyn MyTrait = &b;
}
错误信息如下:
error[E0277]: the trait bound `Box<dyn MyTrait>: MyTrait` is not satisfied
--> src/main.rs:10:27
|
10 | let c: &dyn MyTrait = &b;
| ^^ the trait `MyTrait` is not implemented for `Box<dyn MyTrait>`
|
= note: required for the cast to the object type `dyn MyTrait`
很明显,你可以从一个 Box<T>
获取一个 &T
。我不理解为什么你不能从一个 Box<dyn T>
获取一个 &dyn T
。