Rust 迭代器的適配器:chain
chain
適配器將一個迭代器附加到另一個迭代器的末尾。具體來說就是,i1.chain(i2)
返回一個迭代器,該迭代器先從 i1
中獲取各項,直到 i1
被耗盡後再從 i2
中獲取項。
chain
適配器的簽名如下:
fn chain<U>(self, other: U) -> impl Iterator<Item=Self::Item>
where Self: Sized, U: IntoIterator<Item=Self::Item>;
換句話說,有了該適配器後,可以將一個迭代器與任何產生相同類型的可迭代對象進行鏈式連接。
比如:
let v: Vec<i32> = (1..4).chain(vec![20, 30, 40])
.collect();
assert_eq!(v, [1, 2, 3, 20, 30, 40]);
如果鏈式迭代器的兩個底層迭代器均可逆,那麼鏈式迭代器本身也可逆:
let v: Vec<i32> = (1..4).chain(vec![20, 30, 40])
.rev()
.collect();
assert_eq!(v, [40, 30, 20, 3, 2, 1]);
鏈式迭代器會跟蹤兩個底層迭代器是否返回了 None
,並根據需要在其中一個迭代器上調用 next
或 next_back
方法。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/yZWPtuojDrmcNosx20kv6g