预期特征“ Foo”,发现特征“ MyFoo”

时间:2020-04-17 17:00:06

标签: rust traits

我还没有找到为什么这行不通,或者是什么使它通过的正确方法。

我在要由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,因为它仅适用于原始类型转换,而我却无法准确找到所需的内容。

0 个答案:

没有答案