我有一个实现另一个特征的特性:
trait RandomAccessIterator : Sub + VariousOthers {}
如何指定,对于此特征的所有实现,减法的结果(Output
中的Sub
类型)必须属于某种类型,例如isize
?这样,如果我编写一个使用实现此特征的对象的泛型函数,我知道(更重要的是,编译器知道)A - B
的结果是类型isize
。
答案 0 :(得分:2)
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
,