本文简要介绍rust语言中 core::iter::DoubleEndedIterator.try_rfold
的用法。
用法
fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R where Self: Sized, F: FnMut(B, Self::Item) -> R, R: Try<Output = B>,
这是 Iterator::try_fold()
的反向版本:它从迭代器的后面开始获取元素。
例子
基本用法:
let a = ["1", "2", "3"];
let sum = a.iter()
.map(|&s| s.parse::<i32>())
.try_rfold(0, |acc, x| x.and_then(|y| Ok(acc + y)));
assert_eq!(sum, Ok(6));
短路:
let a = ["1", "rust", "3"];
let mut it = a.iter();
let sum = it
.by_ref()
.map(|&s| s.parse::<i32>())
.try_rfold(0, |acc, x| x.and_then(|y| Ok(acc + y)));
assert!(sum.is_err());
// Because it short-circuited, the remaining elements are still
// available through the iterator.
assert_eq!(it.next_back(), Some(&"1"));
相关用法
- 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 Duration.mul_f64用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 core::iter::DoubleEndedIterator.try_rfold。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。