0
我有一個實現另一個性狀的特質的成員的類型要求:穿上特質實施
trait RandomAccessIterator : Sub + VariousOthers {}
如何指定,對於這種特質的所有實現,減法的結果(Sub
中的Output
類型)必須是某種類型,例如isize
?這樣,如果我編寫一個使用實現此特徵的對象的泛型函數,我知道(更重要的是,編譯器知道)A - B
的結果是isize
。
我有一個實現另一個性狀的特質的成員的類型要求:穿上特質實施
trait RandomAccessIterator : Sub + VariousOthers {}
如何指定,對於這種特質的所有實現,減法的結果(Sub
中的Output
類型)必須是某種類型,例如isize
?這樣,如果我編寫一個使用實現此特徵的對象的泛型函數,我知道(更重要的是,編譯器知道)A - B
的結果是isize
。
trait RandomAccessIterator : Sub<Output = isize> + VariousOthers {}
正如The Rust Programming Language章中的部分大約爲associated types討論trait objects with associated types:
的
N=Node
語法允許我們提供一個具體類型,Node
,對於N
類型參數。同E=Edge
。如果我們沒有提供這個約束,我們不能確定哪個impl
與這個特徵對象匹配。
雖然這不是一個特徵對象,但同樣的語法也適用。大多數人碰到這個when using operators like Mul
,
'特徵RandomAccessIterator:Sub
@Shepmaster:是的,那是有效的,謝謝,我不知道如何顯示我的失敗嘗試會幫助你回答這個問題。以前沒有意識到,我可以對語法進行百次猜測,這對你有什麼幫助嗎? –
失敗的嘗試可能會有代碼在需求成功實現時開始工作。以驗證我的猜測是否真的有效,另外,[預計你會發現你在提問之前花費了很多功夫](http://meta.stackoverflow.com/q/261592/155423),包括你自己的代碼嘗試,但也是搜索你在SO和其他地方在互聯網上做了什麼搜索。沒有所有這些,問題轉移到「代碼破碎,你修復?」另見:[MCVE]。 – Shepmaster