reduce

Crates.ioreduce
lib.rsreduce
version0.1.5+deprecated
sourcesrc
created_at2016-06-19 22:29:49.327293
updated_at2022-12-19 18:35:45.423181
descriptionFold an iterator without an initial value
homepage
repositoryhttps://github.com/dtolnay/reduce
max_upload_size
id5428
size18,867
Lanthanum (github:zxtn:lanthanum)

documentation

https://docs.rs/reduce

README

iter.reduce(fn)

github crates.io docs.rs build status

This crate gives Iterators a reduce function that is similar to fold but without an initial value. The function returns None if the iterator is empty and Some(value) otherwise. This matches the distinction between reduce and fold in Scala.

[dependencies]
reduce = "0.1"

Examples

use reduce::Reduce;

fn main() {
    // Reduce a non-empty iterator into Some(value)
    let v = vec![1usize, 2, 3, 4, 5];
    let sum = v.into_iter().reduce(|a, b| a + b);
    assert_eq!(Some(15), sum);

    // Reduce an empty iterator into None
    let v = Vec::<usize>::new();
    let sum = v.into_iter().reduce(|a, b| a + b);
    assert_eq!(None, sum);
}

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Commit count: 52

cargo fmt