Rust中使用变量的途径有三种,所有权(ownership), 不可变引用(immutable reference) 和可变引用(mutable reference)。如果学习了Rust,我们会发现这三种使用值的办法充斥着Rust的角角落落。在此,我们来研究一下Rust Iterator,及其与这三种方式的联系。
首先,所有的迭代器都实现了Iterator Trait
,而next
方法无疑是Iterator Trait
中最基本的方法。我们来看下它的方法签名:
pub trait Iterator {
type Item;
fn next(&mut self) -> Option<Self::Item>;
}
来自:https://kaisery.github.io/trpl-zh-cn/ch13-02-iterators.html
我们可以看到,next
方法的参数是&mut self
,也就是可变的迭代器引用
。因此,call next
方法的类型一定是一个可变的迭代器,不可变迭代器不能call next
方法。
next
方法的返回值是Option<Self::Item>
这个enum
,目的是可以让我们判断是否有next value
。如果有下一个值,那么返回值就是Some<Item Type>
,如果没有下一个值,那么返回值就是None
。我们可以通过match
来判断。
现在我们