对特征实现的成员类型提出要求

时间:2016-09-15 17:12:52

标签: rust traits

我有一个实现另一个特征的特性:

trait RandomAccessIterator : Sub + VariousOthers {}

如何指定,对于此特征的所有实现,减法的结果(Output中的Sub类型)必须属于某种类型,例如isize ?这样,如果我编写一个使用实现此特征的对象的泛型函数,我知道(更重要的是,编译器知道)A - B的结果是类型isize

1 个答案:

答案 0 :(得分:2)

trait RandomAccessIterator : Sub<Output = isize> + VariousOthers {}

正如The Rust Programming Language章节中关于associated typestrait objects with associated types部分所讨论的那样:

  

N=Node语法允许我们为Node类型参数提供具体类型N。与E=Edge相同。如果我们没有提供此约束,我们无法确定哪个impl匹配此特征对象。

虽然这不是特质对象,但适用相同的语法。大多数人遇到这个when using operators like Mul