當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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