Rust学习_8.迭代器
迭代器
一、Iterator trait 和 next 方法
1. Iterator trait 定义:
1 | pub trait Iterator{ |
例:
1 | fn iterator_demo(){ |
调用next()
方法改变了迭代器内部用来记录序列位置的状态,所以获取的迭代器v1_iter
必须是可变的;
使用
for
循环可以不要求v1_iter
可变,因为循环取得了v1_iter
的所有权并在内部使得它可变了。
2. 获取迭代器方法
iter()
:获取不可变引用的迭代器(如:上例中v1.iter()获取的为v1的不可变引用,无法在遍历过程中修改v1中元素的值);into_iter()
:获取所有权,并返回元素本身的迭代器;iter_mut()
:获取可变引用的迭代器;
二、生成其他迭代器的方法:
迭代适配器(iterator adapter)
: 将已有的迭代器转换成其他不同类型的迭代器。
因为所有的迭代器都是惰性的,所以必须调用一个消耗适配器的方法,才能从迭代器适配器中获得结果。