Skip to content

Collection, Iterator

迭代器用法

对于类型为 C 的集合 c

  • c.into_iter() 提供 Iterator 并消耗掉 c,需要 C 实现 IntoIterator;如果 c 类型是 Copy,调用 (&c).into_iter() 不会消耗 c
  • c.iter() 提供借用类型的迭代器,不消耗 c
  • c.iter_mut() 提供可变借用类型的迭代器

对于迭代器 i

  • i.next() 提供 c 的下一个元素的 Some(x),如果迭代完毕则为 None

对于循环

  • for x in c {} 调用 c.into_iter() 并循环直至为 None

迭代器兼容

  • let c = other_iter.collect::<C<_>> 从迭代器类型转化为 C 类型

支持在集合上的 for 循环

  • impl IntoIterator for Collection<T> {}
  • impl IntoIterator for &Collection<T> {}
  • impl IntoIterator for &mut Collection<T> {}

支持其它迭代器转化为该类型集合

  • impl FromIterator for Collection<T> {}

在迭代器上的操作

  • (1..10).map(f).collect()
  • names.iter().filter(|x| x.starts_with("A"))