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


Rust Iterator.position用法及代码示例


本文简要介绍rust语言中 std::iter::Iterator.position 的用法。

用法

fn position<P>(&mut self, predicate: P) -> Option<usize> where    P: FnMut(Self::Item) -> bool,

在迭代器中搜索元素,返回其索引。

position() 采用返回 truefalse 的闭包。它将这个闭包应用于迭代器的每个元素,如果其中一个返回 true ,则 position() 返回 Some(index) 。如果它们都返回 false ,则返回 None

position() 短路;换句话说,它会在找到 true 后立即停止处理。

溢出行为

该方法没有防止溢出,因此如果有超过 usize::MAX 个不匹配的元素,它或者产生错误的结果,或者产生Panics。如果启用了调试断言,则保证会出现Panics。

Panics

如果迭代器有多个 usize::MAX 不匹配的元素,此函数可能会出现Panics。

例子

基本用法:

let a = [1, 2, 3];

assert_eq!(a.iter().position(|&x| x == 2), Some(1));

assert_eq!(a.iter().position(|&x| x == 5), None);

停在第一个 true

let a = [1, 2, 3, 4];

let mut iter = a.iter();

assert_eq!(iter.position(|&x| x >= 2), Some(1));

// we can still use `iter`, as there are more elements.
assert_eq!(iter.next(), Some(&3));

// The returned index depends on iterator state
assert_eq!(iter.position(|&x| x == 4), Some(0));

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::iter::Iterator.position。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。