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


Rust DoubleEndedIterator.next_back用法及代碼示例


本文簡要介紹rust語言中 core::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大神的英文原創作品 core::iter::DoubleEndedIterator.next_back。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。