本文简要介绍rust语言中 Trait std::iter::DoubleEndedIterator
的用法。
用法
pub trait DoubleEndedIterator: Iterator {
fn next_back(&mut self) -> Option<Self::Item>;
fn advance_back_by(&mut self, n: usize) -> Result<(), usize> { ... }
fn nth_back(&mut self, n: usize) -> Option<Self::Item> { ... }
fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R where F: FnMut(B, Self::Item) -> R, R: Try<Output = B>,
{ ... }
fn rfold<B, F>(self, init: B, f: F) -> B where F: FnMut(B, Self::Item) -> B,
{ ... }
fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item> where P: FnMut(&Self::Item) -> bool,
{ ... }
}
能够从两端产生元素的迭代器。
实现 DoubleEndedIterator
的东西比实现 Iterator
的东西有一项额外的函数:能够从后面和前面获取 Item
。
需要注意的是,前后工作都在同一范围内进行,并且不会交叉:当它们在中间相遇时,迭代就结束了。
与 Iterator
协议类似,一旦 DoubleEndedIterator
从 next_back()
返回 None
,再次调用它可能会或可能不会再次返回 Some
。为此目的, next()
和 next_back()
可以互换。
例子
基本用法:
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());
相关用法
- Rust DoubleEndedIterator.try_rfold用法及代码示例
- Rust DoubleEndedIterator.rfold用法及代码示例
- Rust DoubleEndedIterator.rfind用法及代码示例
- Rust DoubleEndedIterator.nth_back用法及代码示例
- Rust DoubleEndedIterator.advance_back_by用法及代码示例
- Rust DoubleEndedIterator.next_back用法及代码示例
- 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-lang.org大神的英文原创作品 Trait std::iter::DoubleEndedIterator。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。