首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘`Iterator`’特征中的‘`type Item’是什么意思?

‘`Iterator`’特征中的‘`type Item’是什么意思?
EN

Stack Overflow用户
提问于 2016-03-29 14:01:58
回答 1查看 968关注 0票数 4

Iterator特性定义如下:

代码语言:javascript
复制
pub trait Iterator {
    type Item;
    fn next(&mut self) -> Option<Self::Item>;
}

type Item;是什么意思?怎么叫呢?

上面的定义是否等同于这个定义?

代码语言:javascript
复制
pub trait Iterator<T> {
    fn next(&mut self) -> Option<T>;
}

如果是一样的话,为什么要这样宣布呢?如果不一样,那有什么区别?

EN

回答 1

Stack Overflow用户

发布于 2016-03-29 14:15:49

TL;DRtype Item; in Iterator是一种关联类型。

锈病泛型有输入和输出两种类型:

  • 输入类型是在特征声明中指定的类型(trait X<T, U>TU作为输入类型)加上Self (正在实现该特性的具体类型)。
  • 输出类型是通过type X;在特征定义中指定的类型。

引入关联项的RFC是RFC 195:相关项目。具体来说,它的动机部分引用了拥有相关性状的好处。

对我来说,最重要的一点是unicity:为该特性的任何给定实现定义一个类型,例如,它允许为DerefIndex特征提供干净的电源。在一个DerefIndex可能产生许多可能类型的世界中,类型推断将更加复杂。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36286630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档