 Rust 程序设计语言 简体中文版 1.85.0用了 next 方法,这也就是为什么在 实现 Iterator trait 时要求实现 next 方法的原因。 这些调用 next 方法的方法被称为消费适配器(consuming adaptors),因为调用它们会消耗 迭代器。一个消费适配器的例子是 sum 方法,这个方法获取迭代器的所有权并反复调用 next 来遍历迭代器,从而消费迭代器。在遍历过程中,它将每个项累加到一个运行时总和中,并在 迭代完成时返回这个总和。示例 时它会获取迭代器的所有权。 产生其他迭代器的方法 Iterator trait 中定义了另一类方法,被称为迭代器适配器(iterator adaptors),它们不会消 耗当前的迭代器,而是通过改变原始迭代器的某些方面来生成不同的迭代器。 示例 13-14 展示了一个调用迭代器适配器方法 map 的例子,该方法使用一个闭包对每个元素 进行操作。map 方法返回一个新的迭代器,该迭代器生成经过修改的元素。这里的闭包创建了 文件名:src/main.rs let v1: Vec Rust 程序设计语言 简体中文版 1.85.0用了 next 方法,这也就是为什么在 实现 Iterator trait 时要求实现 next 方法的原因。 这些调用 next 方法的方法被称为消费适配器(consuming adaptors),因为调用它们会消耗 迭代器。一个消费适配器的例子是 sum 方法,这个方法获取迭代器的所有权并反复调用 next 来遍历迭代器,从而消费迭代器。在遍历过程中,它将每个项累加到一个运行时总和中,并在 迭代完成时返回这个总和。示例 时它会获取迭代器的所有权。 产生其他迭代器的方法 Iterator trait 中定义了另一类方法,被称为迭代器适配器(iterator adaptors),它们不会消 耗当前的迭代器,而是通过改变原始迭代器的某些方面来生成不同的迭代器。 示例 13-14 展示了一个调用迭代器适配器方法 map 的例子,该方法使用一个闭包对每个元素 进行操作。map 方法返回一个新的迭代器,该迭代器生成经过修改的元素。这里的闭包创建了 文件名:src/main.rs let v1: Vec- = vec![1, 2, 3]; v1.iter().map(|x| x + 1); 示例 13-14:调用迭代器适配器 map 来创建一个新迭代器 不过这些代码会产生一个警告: $ cargo run Compiling iterators v0.1.0 (file:///projects/iterators) 0 码力 | 562 页 | 3.23 MB | 25 天前3
共 1 条
- 1













