Trait std::iter::Sum1.12.0[][src]

pub trait Sum<A = Self> {
    fn sum<I>(iter: I) -> Self
    where
        I: Iterator<Item = A>
; }
Expand description

Trait 表示可以通过汇总迭代器创建的类型。

这个 trait 用于实现 Iterator::sum()。 可以通过在迭代器上使用 sum() 方法生成实现此 trait 的类型。 和 FromIterator 一样,这个 trait 应该很少被直接调用。

Required methods

使用迭代器并通过 “summing up” 项从元素生成 Self 的方法。

Implementors

接受 Iterator 中的每个元素: 如果它是 None,则不再获取其他元素,并返回 None。 如果没有发生 None,则返回所有元素的总和。

Examples

这总结了字符 ‘a’ 在字符串 vector 中的位置,如果单词没有字符 ‘a’,则该操作返回 None:

let words = vec!["have", "a", "great", "day"];
let total: Option<usize> = words.iter().map(|w| w.find('a')).sum();
assert_eq!(total, Some(5));
Run

接受 Iterator 中的每个元素: 如果它是 Err,则不再获取其他元素,并返回 Err。 如果没有发生 Err,则返回所有元素的总和。

Examples

这将对 vector 中的每个整数求和,如果遇到负元素,则拒绝求和:

let v = vec![1, 2];
let res: Result<i32, &'static str> = v.iter().map(|&x: &i32|
    if x < 0 { Err("Negative element found") }
    else { Ok(x) }
).sum();
assert_eq!(res, Ok(3));
Run