當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust Iterator.take用法及代碼示例


本文簡要介紹rust語言中 std::iter::Iterator.take 的用法。

用法

fn take(self, n: usize) -> Take<Self>

創建一個迭代器,該迭代器產生第一個 n 元素,如果基礎迭代器結束得更快,則創建更少的元素。

take(n) 產生元素,直到產生 n 元素或到達迭代器的末尾(以先發生者為準)。如果原始迭代器至少包含 n 元素,則返回的迭代器是長度為 n 的前綴,否則它包含原始迭代器的所有(少於 n )元素。

例子

基本用法:

let a = [1, 2, 3];

let mut iter = a.iter().take(2);

assert_eq!(iter.next(), Some(&1));
assert_eq!(iter.next(), Some(&2));
assert_eq!(iter.next(), None);

take() 通常與無限迭代器一起使用,以使其有限:

let mut iter = (0..).take(3);

assert_eq!(iter.next(), Some(0));
assert_eq!(iter.next(), Some(1));
assert_eq!(iter.next(), Some(2));
assert_eq!(iter.next(), None);

如果可用的元素少於 n,則 take 將自身限製為底層迭代器的大小:

let v = vec![1, 2];
let mut iter = v.into_iter().take(5);
assert_eq!(iter.next(), Some(1));
assert_eq!(iter.next(), Some(2));
assert_eq!(iter.next(), None);

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 std::iter::Iterator.take。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。