本文简要介绍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 DoubleEndedIterator.nth_back用法及代码示例
- Rust DoubleEndedIterator.try_rfold用法及代码示例
- Rust DoubleEndedIterator.rfold用法及代码示例
- Rust DoubleEndedIterator.rfind用法及代码示例
- Rust DoubleEndedIterator.advance_back_by用法及代码示例
- Rust DoubleEndedIterator用法及代码示例
- Rust DirBuilder.new用法及代码示例
- Rust DirEntry.metadata用法及代码示例
- Rust Duration.as_micros用法及代码示例
- Rust Duration.subsec_nanos用法及代码示例
- Rust DebugList.entries用法及代码示例
- Rust Duration.checked_add用法及代码示例
- Rust Div用法及代码示例
- Rust Drain.as_slice用法及代码示例
- Rust DirBuilder.recursive用法及代码示例
- Rust Duration.new用法及代码示例
- Rust DerefMut用法及代码示例
- Rust DirBuilder.create用法及代码示例
- Rust Drop用法及代码示例
- Rust DebugList用法及代码示例
- Rust DirEntry.path用法及代码示例
- Rust DebugMap.key用法及代码示例
- Rust Duration.subsec_micros用法及代码示例
- Rust DirEntry.file_type用法及代码示例
- Rust Duration.mul_f64用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 core::iter::DoubleEndedIterator.next_back。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。