当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust DoubleEndedIterator.try_rfold用法及代码示例


本文简要介绍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-lang.org大神的英文原创作品 core::iter::DoubleEndedIterator.try_rfold。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。