#iterator #data-structure #zip #product #group-by

itertools

Extra iterator adaptors, iterator methods, free functions, and macros

120 releases

✓ Uses Rust 2018 edition

0.9.0 Mar 7, 2020
0.8.2 Nov 23, 2019
0.8.1 Oct 27, 2019
0.8.0 Dec 9, 2018
0.0.3 Nov 29, 2014

#13 in Rust patterns

Download history 124980/week @ 2019-12-17 71446/week @ 2019-12-24 92795/week @ 2019-12-31 141123/week @ 2020-01-07 139854/week @ 2020-01-14 144793/week @ 2020-01-21 136846/week @ 2020-01-28 125973/week @ 2020-02-04 116421/week @ 2020-02-11 112268/week @ 2020-02-18 117858/week @ 2020-02-25 122223/week @ 2020-03-03 125485/week @ 2020-03-10 139014/week @ 2020-03-17 149428/week @ 2020-03-24 137535/week @ 2020-03-31

516,950 downloads per month
Used in 3,351 crates (818 directly)

MIT/Apache

255KB
5K SLoC

Itertools

Extra iterator adaptors, functions and macros.

Please read the API documentation here

build_status crates

How to use with cargo:

How to use in your crate:

How to contribute

  • Fix a bug or implement a new thing
  • Include tests for your new feature, preferably a quickcheck test
  • Make a Pull Request

For new features, please first consider filing a PR to rust-lang/rust, adding your new feature to the Iterator trait of the standard library, if you believe it is reasonable. If it isn't accepted there, proposing it for inclusion in itertools is a good idea. The reason for doing is this is so that we avoid future breakage as with .flatten(). However, if your feature involves heap allocation, such as storing elements in a Vec<T>, then it can't be accepted into libcore, and you should propose it for itertools directly instead.

License

Dual-licensed to be compatible with the Rust project.

Licensed under the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 or the MIT license http://opensource.org/licenses/MIT, at your option. This file may not be copied, modified, or distributed except according to those terms.

Dependencies