本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。