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


Rust DoubleEndedIterator.next_back用法及代码示例


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

用法

fn next_back(&mut self) -> Option<Self::Item>

从迭代器的末尾移除并返回一个元素。

当没有更多元素时返回None

trait-level 文档包含更多详细信息。

例子

基本用法:

let numbers = vec![1, 2, 3, 4, 5, 6];

let mut iter = numbers.iter();

assert_eq!(Some(&1), iter.next());
assert_eq!(Some(&6), iter.next_back());
assert_eq!(Some(&5), iter.next_back());
assert_eq!(Some(&2), iter.next());
assert_eq!(Some(&3), iter.next());
assert_eq!(Some(&4), iter.next());
assert_eq!(None, iter.next());
assert_eq!(None, iter.next_back());

评论

DoubleEndedIterator 的方法产生的元素可能与 Iterator 的方法产生的元素不同:

let vec = vec![(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b')];
let uniq_by_fst_comp = || {
    let mut seen = std::collections::HashSet::new();
    vec.iter().copied().filter(move |x| seen.insert(x.0))
};

assert_eq!(uniq_by_fst_comp().last(), Some((2, 'a')));
assert_eq!(uniq_by_fst_comp().next_back(), Some((2, 'b')));

assert_eq!(
    uniq_by_fst_comp().fold(vec![], |mut v, x| {v.push(x); v}),
    vec![(1, 'a'), (2, 'a')]
);
assert_eq!(
    uniq_by_fst_comp().rfold(vec![], |mut v, x| {v.push(x); v}),
    vec![(2, 'b'), (1, 'c')]
);

相关用法


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