### 1 stable release

1.0.0 | Jul 22, 2021 |
---|

#**1463** in Algorithms

**790** downloads per month

Used in **2** crates
(via polynomen)

**GPL-3.0-only**

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

type.`Item`

It is similar to

algorithm from the `zip_longest`

python library.`itertool`

## 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

type.`Item`

It is similar to

algorithm from the `zip_longest`

python library.`itertool`

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