#iterator #zip #product #data-structures #no-alloc

no-std supply-chain-trust-example-crate-000032

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

1 unstable release

0.13.0 Nov 4, 2024

#1844 in Rust patterns

MIT/Apache

440KB
8K SLoC

Itertools

Extra iterator adaptors, functions and macros.

Please read the API documentation here.

How to use with Cargo:

[dependencies]
itertools = "0.13.0"

How to use in your crate:

use itertools::Itertools;

How to contribute

If you're not sure what to work on, try checking the help wanted label.

See our CONTRIBUTING.md for a detailed guide.

License

Dual-licensed to be compatible with the Rust project.

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


lib.rs:

Extra iterator adaptors, functions and macros.

To extend Iterator with methods in this crate, import the Itertools trait:

use itertools::Itertools;

Now, new methods like interleave are available on all iterators:

use itertools::Itertools;

let it = (1..3).interleave(vec![-1, -2]);
itertools::assert_equal(it, vec![1, -1, 2, -2]);

Most iterator methods are also provided as functions (with the benefit that they convert parameters using IntoIterator):

use itertools::interleave;

for elt in interleave(&[1, 2, 3], &[2, 3, 4]) {
    /* loop body */
    # let _ = elt;
}

Crate Features

  • use_std
    • Enabled by default.
    • Disable to compile itertools using #![no_std]. This disables any item that depend on allocations (see the use_alloc feature) and hash maps (like unique, counts, into_grouping_map and more).
  • use_alloc
    • Enabled by default.
    • Enables any item that depend on allocations (like chunk_by, kmerge, join and many more).

Rust Version

This version of itertools requires Rust 1.63.0 or later.

Dependencies