在 Rust 中,iter()
和迭代器适配器(iterator adaptor)都是用于操作和处理集合类型(如向量、列表等)中的元素的方法,但它们之间存在一些关键区别。
iter()
方法:
iter()
是 Rust 集合类型(如 Vec
、List
等)的一个方法,它返回一个实现了 Iterator
trait 的迭代器。Iterator
trait 是一个泛型 trait,它定义了迭代器的基本操作,如 next()
、count()
等。iter()
方法返回的迭代器是原始集合类型的引用,因此对集合的修改不会影响原始集合。示例:
let vec = vec![1, 2, 3, 4, 5];
let iterator = vec.iter(); // 返回一个迭代器
Iterator
trait 的迭代器作为参数,并返回一个新的迭代器。这些适配器可以用来对迭代器进行各种操作,如过滤、映射、归约等。迭代器适配器不会修改原始迭代器,而是创建一个新的迭代器来表示处理后的结果。示例:
let vec = vec![1, 2, 3, 4, 5];
let even_numbers = vec.iter().filter(|&x| x % 2 == 0); // 使用 filter 适配器过滤偶数
总结一下,iter()
方法用于从集合类型中创建一个迭代器,而迭代器适配器用于对迭代器进行各种操作。iter()
返回的是原始集合类型的引用,而迭代器适配器返回的是一个新的迭代器。