相关疑难解决方法(0)

将通用参数与impl中的关联类型匹配

我有一个关联类型和通用结构的特征::

trait Generator {
    type Foo;
    fn generate(&self) -> Self::Foo;
}

struct Baz<A, B>
where
    A: Generator,
{
    generator: A, // will be some struct implementing Generator, but the exact type will vary
    vec: Vec<B>,  // Each element will be A::Foo
}
Run Code Online (Sandbox Code Playgroud)

我想把generate它放到我的矢量中:

impl<A: Generator, B> Baz<A, B> {
    fn addFoo(&mut self) {
        self.vec.push(self.generator.generate());
    }
}
Run Code Online (Sandbox Code Playgroud)

嗯,哦!编译错误:

error[E0308]: mismatched types
  --> src/main.rs:16:27
   |
16 |             self.vec.push(self.generator.generate());
   |                           ^^^^^^^^^^^^^^^^^^^^^^^^^ expected type parameter, found associated type
   |
   = note: expected …
Run Code Online (Sandbox Code Playgroud)

generics rust

18
推荐指数
3
解决办法
4360
查看次数

标签 统计

generics ×1

rust ×1