我無法瞭解關聯的類型。我的問題代碼:實現具有相關特徵類型的特徵
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
不被使用。
但是,此功能上的official docs顯示實現基礎關聯類型的對象 - 但不是特徵。在這個例子中,DB
不知道哪些結構可能被傳入store_foo(..)
,所以它需要使用特徵來解決這個問題。
說了這麼多,在impl
期間,如何獲得關聯類型以使用特徵?也就是說,我怎麼寫type T = Fooer;
?或者我以某種方式使用這個錯誤?
注意:我在構建這個示例時遇到了一些麻煩,現在我試圖糾正這個問題。我有錯誤是:
cargo: the trait `Fooer` cannot be made into an object [E0038]