假設我有以下特征,我有一堆具體的實作。對于每個具體的 TokenParser,它只有一個具體的 TokenHolder。
trait Token {}
trait TokenHolder<T: Token> {}
trait TokenParser<H: TokenHolder<T>, T: Token> {}
我有一堆使用 TokenParser 的代碼,并希望減少我擁有的樣板數量。我覺得應該有辦法做到這一點
trait TokenParser<H: TokenHolder<T: Token>> {}
// or
trait TokenParser<H: TokenHolder<T>> where T: Token {}
uj5u.com熱心網友回復:
這不能真正使用泛型來實作,但是可以與使用相關聯的型別中TokenHolder
trait TokenHolder {
type Token: Token;
}
trait TokenParser<H: TokenHolder> {
// This signature demonstrates using the type on the holder
// in the signature for the parser.
fn extract_token(holder: H) -> H::Token;
}
更新
根據 Chayim Friedman 的評論更新為使用官方術語。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/401138.html
