转化为迭代器

  • .into_iter() 拿走所有权,并转化为迭代器
  • .iter() 对元素进行不可变借用的迭代器
  • .iter_mut() 对元素进行可变借用的迭代器,可以修改元素

Iterator Trait, IntoIterator Trait

两者稍有区别。前者定义了 next 方法使得可以访问元素,后者则定义了 into_iter(), iter(), iter_mut() 等迭代器转化方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pub trait Iterator {
type Item;

fn next(&mut self) -> Option<Self::Item>;

// 省略其余有默认实现的方法
}

impl<I: Iterator> IntoIterator for I {
type Item = I::Item;
type IntoIter = I;

#[inline]
fn into_iter(self) -> I {
self
}
}