当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。