我在学习关联类型时遇到了麻烦。我的问题代码:
trait Fooer {
fn foo(&self);
}
trait FooStore {
type T: Fooer;
fn store_foo(&self, fooer: Self::T);
}
#[allow(dead_code)]
struct DB {}
impl FooStore for DB {
type T = Fooer;
fn store_foo(&self, _fooer: Self::T) {}
}
fn main() {}
这里的目的是使用关联类型来使FooStore
特征不需要笨拙和有问题的语法,impl<F:Fooer, T: FooStore<F>> FooStore<F> for DB
因为这经常抱怨F
没有被使用。
但是,有关此功能的官方文档显示了实现底层关联类型的对象 - 但不是特征。在这个例子中,DB
不知道可能会传入什么结构体store_foo(..)
,所以它需要使用一个 trait 来解决这个问题。
话虽如此,我怎样才能让关联类型在 期间使用特征impl
?也就是说,我该怎么写type T = Fooer;
?还是我以某种方式使用了这个错误?
注意:我在构建这个例子时遇到了一些麻烦,我现在正在尝试纠正这个问题。我遇到的错误是:
cargo: the trait `Fooer` cannot be made into an object [E0038]