本文介绍: 1. 对于一次性使用的类型, 可以直接对其实现迭代器 trait.2. 对于容器, 不应该对容器本身直接实现迭代器, 而是应该单独创建迭代器类型, 然后对其本身实现 `IntoIterator`
在 Rust 中, for 语句的执行依赖于类型对于 IntoIterator
的实现, 如果某类型实现了这个 trait, 那么它就可以直接使用 for 进行循环.
直接实现
在 Rust 中, 如果一个类型实现了 Iterator
, 那么它会被同时实现 IntoIterator
, 具体逻辑是返回自身, 因为自身就是迭代器.
但是如果自身就是迭代器的话, 就意味着自身必须存储迭代状态, 例如当前迭代的位置. 如果是这样的话, 迭代器就只能被使用一次. 况且自身直接被传入 into_iter
方法后, 所有权被转移, 该对象就无法被再次使用了.
定义类型本身:
直接为其实现迭代器:
手动实现迭代器
切片对迭代的实现
总结
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。