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

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

Trait to represent types that can be created by summing up an iterator.

This trait is used to implement the sum() method on iterators. Types which implement the trait can be generated by the sum() method. Like FromIterator this trait should rarely be called directly and instead interacted with through Iterator::sum().

Required methods

fn sum<I>(iter: I) -> Self where
    I: Iterator<Item = A>, 
[src]

Method which takes an iterator and generates Self from the elements by “summing up” the items.

Implementations on Foreign Types

impl<'a> Sum<&'a f32> for f32[src]

pub fn sum<I>(iter: I) -> f32 where
    I: Iterator<Item = &'a f32>, 
[src]

impl<'a> Sum<&'a u64> for u64[src]

pub fn sum<I>(iter: I) -> u64 where
    I: Iterator<Item = &'a u64>, 
[src]

impl Sum<i8> for i8[src]

pub fn sum<I>(iter: I) -> i8 where
    I: Iterator<Item = i8>, 
[src]

impl Sum<u16> for u16[src]

pub fn sum<I>(iter: I) -> u16 where
    I: Iterator<Item = u16>, 
[src]

impl Sum<usize> for usize[src]

pub fn sum<I>(iter: I) -> usize where
    I: Iterator<Item = usize>, 
[src]

impl<'a> Sum<&'a isize> for isize[src]

pub fn sum<I>(iter: I) -> isize where
    I: Iterator<Item = &'a isize>, 
[src]

impl Sum<i64> for i64[src]

pub fn sum<I>(iter: I) -> i64 where
    I: Iterator<Item = i64>, 
[src]

impl<'a> Sum<&'a usize> for usize[src]

pub fn sum<I>(iter: I) -> usize where
    I: Iterator<Item = &'a usize>, 
[src]

impl Sum<f64> for f64[src]

pub fn sum<I>(iter: I) -> f64 where
    I: Iterator<Item = f64>, 
[src]

impl<'a> Sum<&'a i8> for i8[src]

pub fn sum<I>(iter: I) -> i8 where
    I: Iterator<Item = &'a i8>, 
[src]

impl<'a> Sum<&'a u32> for u32[src]

pub fn sum<I>(iter: I) -> u32 where
    I: Iterator<Item = &'a u32>, 
[src]

impl<'a> Sum<&'a i32> for i32[src]

pub fn sum<I>(iter: I) -> i32 where
    I: Iterator<Item = &'a i32>, 
[src]

impl Sum<i16> for i16[src]

pub fn sum<I>(iter: I) -> i16 where
    I: Iterator<Item = i16>, 
[src]

impl<'a> Sum<&'a u16> for u16[src]

pub fn sum<I>(iter: I) -> u16 where
    I: Iterator<Item = &'a u16>, 
[src]

impl<'a> Sum<&'a i64> for i64[src]

pub fn sum<I>(iter: I) -> i64 where
    I: Iterator<Item = &'a i64>, 
[src]

impl Sum<f32> for f32[src]

pub fn sum<I>(iter: I) -> f32 where
    I: Iterator<Item = f32>, 
[src]

impl<'a> Sum<&'a f64> for f64[src]

pub fn sum<I>(iter: I) -> f64 where
    I: Iterator<Item = &'a f64>, 
[src]

impl<'a> Sum<&'a i128> for i128[src]

pub fn sum<I>(iter: I) -> i128 where
    I: Iterator<Item = &'a i128>, 
[src]

impl<'a> Sum<&'a i16> for i16[src]

pub fn sum<I>(iter: I) -> i16 where
    I: Iterator<Item = &'a i16>, 
[src]

impl Sum<isize> for isize[src]

pub fn sum<I>(iter: I) -> isize where
    I: Iterator<Item = isize>, 
[src]

impl Sum<u128> for u128[src]

pub fn sum<I>(iter: I) -> u128 where
    I: Iterator<Item = u128>, 
[src]

impl Sum<i128> for i128[src]

pub fn sum<I>(iter: I) -> i128 where
    I: Iterator<Item = i128>, 
[src]

impl Sum<u8> for u8[src]

pub fn sum<I>(iter: I) -> u8 where
    I: Iterator<Item = u8>, 
[src]

impl<'a> Sum<&'a u128> for u128[src]

pub fn sum<I>(iter: I) -> u128 where
    I: Iterator<Item = &'a u128>, 
[src]

impl Sum<u32> for u32[src]

pub fn sum<I>(iter: I) -> u32 where
    I: Iterator<Item = u32>, 
[src]

impl<'a> Sum<&'a u8> for u8[src]

pub fn sum<I>(iter: I) -> u8 where
    I: Iterator<Item = &'a u8>, 
[src]

impl Sum<i32> for i32[src]

pub fn sum<I>(iter: I) -> i32 where
    I: Iterator<Item = i32>, 
[src]

impl Sum<u64> for u64[src]

pub fn sum<I>(iter: I) -> u64 where
    I: Iterator<Item = u64>, 
[src]

impl<'a, T> Sum<&'a Ratio<T>> for Ratio<T> where
    T: Integer + Clone
[src]

pub fn sum<I>(iter: I) -> Ratio<T> where
    I: Iterator<Item = &'a Ratio<T>>, 
[src]

impl<T> Sum<Ratio<T>> for Ratio<T> where
    T: Integer + Clone
[src]

pub fn sum<I>(iter: I) -> Ratio<T> where
    I: Iterator<Item = Ratio<T>>, 
[src]

Implementors

impl Sum<Duration> for Duration1.16.0[src]

pub fn sum<I>(iter: I) -> Duration where
    I: Iterator<Item = Duration>, 
[src]

impl Sum<Wrapping<i8>> for Wrapping<i8>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<i8> where
    I: Iterator<Item = Wrapping<i8>>, 
[src]

impl Sum<Wrapping<i16>> for Wrapping<i16>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<i16> where
    I: Iterator<Item = Wrapping<i16>>, 
[src]

impl Sum<Wrapping<i32>> for Wrapping<i32>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<i32> where
    I: Iterator<Item = Wrapping<i32>>, 
[src]

impl Sum<Wrapping<i64>> for Wrapping<i64>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<i64> where
    I: Iterator<Item = Wrapping<i64>>, 
[src]

impl Sum<Wrapping<i128>> for Wrapping<i128>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<i128> where
    I: Iterator<Item = Wrapping<i128>>, 
[src]

impl Sum<Wrapping<isize>> for Wrapping<isize>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<isize> where
    I: Iterator<Item = Wrapping<isize>>, 
[src]

impl Sum<Wrapping<u8>> for Wrapping<u8>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<u8> where
    I: Iterator<Item = Wrapping<u8>>, 
[src]

impl Sum<Wrapping<u16>> for Wrapping<u16>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<u16> where
    I: Iterator<Item = Wrapping<u16>>, 
[src]

impl Sum<Wrapping<u32>> for Wrapping<u32>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<u32> where
    I: Iterator<Item = Wrapping<u32>>, 
[src]

impl Sum<Wrapping<u64>> for Wrapping<u64>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<u64> where
    I: Iterator<Item = Wrapping<u64>>, 
[src]

impl Sum<Wrapping<u128>> for Wrapping<u128>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<u128> where
    I: Iterator<Item = Wrapping<u128>>, 
[src]

impl Sum<Wrapping<usize>> for Wrapping<usize>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<usize> where
    I: Iterator<Item = Wrapping<usize>>, 
[src]

impl<'a> Sum<&'a Duration> for Duration1.16.0[src]

pub fn sum<I>(iter: I) -> Duration where
    I: Iterator<Item = &'a Duration>, 
[src]

impl<'a> Sum<&'a Wrapping<i8>> for Wrapping<i8>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<i8> where
    I: Iterator<Item = &'a Wrapping<i8>>, 
[src]

impl<'a> Sum<&'a Wrapping<i16>> for Wrapping<i16>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<i16> where
    I: Iterator<Item = &'a Wrapping<i16>>, 
[src]

impl<'a> Sum<&'a Wrapping<i32>> for Wrapping<i32>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<i32> where
    I: Iterator<Item = &'a Wrapping<i32>>, 
[src]

impl<'a> Sum<&'a Wrapping<i64>> for Wrapping<i64>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<i64> where
    I: Iterator<Item = &'a Wrapping<i64>>, 
[src]

impl<'a> Sum<&'a Wrapping<i128>> for Wrapping<i128>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<i128> where
    I: Iterator<Item = &'a Wrapping<i128>>, 
[src]

impl<'a> Sum<&'a Wrapping<isize>> for Wrapping<isize>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<isize> where
    I: Iterator<Item = &'a Wrapping<isize>>, 
[src]

impl<'a> Sum<&'a Wrapping<u8>> for Wrapping<u8>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<u8> where
    I: Iterator<Item = &'a Wrapping<u8>>, 
[src]

impl<'a> Sum<&'a Wrapping<u16>> for Wrapping<u16>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<u16> where
    I: Iterator<Item = &'a Wrapping<u16>>, 
[src]

impl<'a> Sum<&'a Wrapping<u32>> for Wrapping<u32>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<u32> where
    I: Iterator<Item = &'a Wrapping<u32>>, 
[src]

impl<'a> Sum<&'a Wrapping<u64>> for Wrapping<u64>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<u64> where
    I: Iterator<Item = &'a Wrapping<u64>>, 
[src]

impl<'a> Sum<&'a Wrapping<u128>> for Wrapping<u128>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<u128> where
    I: Iterator<Item = &'a Wrapping<u128>>, 
[src]

impl<'a> Sum<&'a Wrapping<usize>> for Wrapping<usize>1.14.0[src]

pub fn sum<I>(iter: I) -> Wrapping<usize> where
    I: Iterator<Item = &'a Wrapping<usize>>, 
[src]

impl<'a, T> Sum<&'a NotNan<T>> for NotNan<T> where
    T: 'a + Float + Sum<T>, 

pub fn sum<I>(iter: I) -> NotNan<T> where
    I: Iterator<Item = &'a NotNan<T>>, 

impl<T> Sum<NotNan<T>> for NotNan<T> where
    T: Float + Sum<T>, 

Adds a float directly.

Panics if the provided value is NaN.

pub fn sum<I>(iter: I) -> NotNan<T> where
    I: Iterator<Item = NotNan<T>>, 

impl<T, U> Sum<Option<U>> for Option<T> where
    T: Sum<U>, 
1.37.0[src]

pub fn sum<I>(iter: I) -> Option<T> where
    I: Iterator<Item = Option<U>>, 
[src]

Takes each element in the Iterator: if it is a None, no further elements are taken, and the None is returned. Should no None occur, the sum of all elements is returned.

Examples

This sums up the position of the character ‘a’ in a vector of strings, if a word did not have the character ‘a’ the operation returns 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));

impl<T, U, E> Sum<Result<U, E>> for Result<T, E> where
    T: Sum<U>, 
1.16.0[src]

pub fn sum<I>(iter: I) -> Result<T, E> where
    I: Iterator<Item = Result<U, E>>, 
[src]

Takes each element in the Iterator: if it is an Err, no further elements are taken, and the Err is returned. Should no Err occur, the sum of all elements is returned.

Examples

This sums up every integer in a vector, rejecting the sum if a negative element is encountered:

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));