computer_knowledge_notes/Languages/Rust/lib_std/mod_iter.md

1.8 KiB
Raw Blame History

简介

可组合的外部的迭代。

组织
  • 特性 - 迭代器的核心部分。定义了迭代器的种类与用法。这些特性里定义的方法是值得学习的。
  • 函数 - 提供了创建基本迭代器的方法。
  • 结构体 - 基本上就是特性里提供的各种方法的返回类型。你应该看的创建这些结构体的方法,而不是这些结构体本身。
Iterator特性

这个模块的心脏与灵魂就是Iterator特性。Iterator的核心看起来是这样的:

trait Iterator {
    type Item;
    fn next(&mut self) -> Option<Self::Item>;
}

迭代器的next方法会返回一个Option<Item>。当还有元素的时候,返回Some(Item)。当没有元素的时候,则返回None

Iterator的其它方法都是构建于next之上的。

迭代器是可组合的,所以可以把它们链接起来进行更复杂的操作。

迭代的三种形式

从collection创建迭代器的三种方法

  • iter() - 迭代的是&T
  • iter_mut() - 迭代的是&mut T
  • into_iter() - 迭代的是T
实现迭代器

创建一个迭代器分两步:

  1. 创建一个结构体来保存迭代器的状态。
  2. 为这个结构体实现迭代器。
for循环与IntoIterator特性
适配

函数接收一个迭代器再返回一个迭代器,常被叫做“迭代器的适配”,它是“模式适配”的一种形式。

惰性
对引用进行迭代
无限

迭代器不必是有限的。

结构体

特性

Iterator

一个处理迭代器的接口。是迭代器最主要的特性。

  • 相关类型

  • 依赖的方法

  • 提供的方法

    pub fn for_each<F>(self, f: F) // 在迭代器的每个元素上调用闭包。
    

函数