1 stable release
1.0.0 | Jul 22, 2021 |
---|
#1463 in Algorithms
790 downloads per month
Used in 2 crates
(via polynomen)
15KB
193 lines
zip-fill - Iterator Library
Zip two iterators, if they have different length, the shortest is extended using a default value.
The two iterators must have the same Item
type.
It is similar to zip_longest
algorithm from the itertool
python library.
Example
use zip_fill::ZipFill;
let a = [ 1, 2, 3, 4];
let b = [ 1, 2];
let z: Vec<_> = a.iter().zip_longest(&b, &0).collect();
assert_eq!(vec!((&1, &1), (&2, &2), (&3, &0), (&4, &0)), z);
let z: Vec<_> = zip_fill::zip_longest_with(&a, &b, &0, |a, b| a + b).collect();
assert_eq!(vec!(2, 4, 3, 4), z);
Requirements
Minimum tested rustc version: 1.44
lib.rs
:
Iterator extensions
Zip two iterators, if they have different length, the shortest is extended using a default value.
The two iterators must have the same Item
type.
It is similar to zip_longest
algorithm from the itertool
python library.
Example
use zip_fill::ZipFill;
let a = [ 1, 2, 3, 4];
let b = [ 1, 2];
let z: Vec<_> = a.iter().zip_longest(&b, &0).collect();
assert_eq!(vec!((&1, &1), (&2, &2), (&3, &0), (&4, &0)), z);
let z: Vec<_> = zip_fill::zip_longest_with(&a, &b, &0, |a, b| a + b).collect();
assert_eq!(vec!(2, 4, 3, 4), z);