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

标签 rust traits

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

trait RandomAccessIterator : Sub + VariousOthers {}

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

最佳答案

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

The Rust Programming Language 中所述关于associated types的章节在 trait objects with associated types 部分:

The N=Node syntax allows us to provide a concrete type, Node, for the N type parameter. Same with E=Edge. If we didn’t provide this constraint, we couldn’t be sure which impl to match this trait object to.

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

关于rust - 对特征实现成员的类型提出要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39516770/

相关文章:

design-patterns - 如何使用特征对象链实现责任链模式?

rust - 结构可以在 Rust 中实现两个具有冲突方法名称的特征吗?

rust - 找出介于0和带符号int的无符号int之和之间的最大值

mysql - 如何使用 Diesel 创建和解析原始 SQL 查询?

error-handling - 怎么样了?运算符与 From 特征交互?

generics - 如何制作通用的绝对值函数?

c++ - 如何在类(class)结束时获得填充的大小

rust - 仅在 Rust `Default` 实现中设置一个字段

php - 特征继承检查 PHP

rust - 如何将 `Arc<dyn SubTrait>` 转换为 `Arc<dyn SuperTrait >` ?