我还没有找到为什么这行不通,或者是什么使它通过的正确方法。
我在要由VM(playground)执行的外部包装箱中具有一个特征:
trait Foo {}
trait Bar {}
trait OtherFoo: Bar {}
impl Foo for dyn OtherFoo {}
fn use_foo(_: &dyn Foo) {}
fn use_other_foo_as_foo(other_foo: &dyn OtherFoo) {
use_foo(other_foo)
}
我知道
error[E0308]: mismatched types
--> src/lib.rs:12:13
|
12 | use_foo(other_foo)
| ^^^^^^^^^ expected trait `Foo`, found trait `OtherFoo`
|
= note: expected reference `&dyn Foo`
found reference `&dyn OtherFoo`
我认为,由于它实现了允许被传递的特征,但是我意识到Rust并不是通过引用来进行的,因此需要某种类型的转换,但是我不知道如何进行转换
它说我不能使用as
,因为它仅适用于原始类型转换,而我却无法准确找到所需的内容。