devela::_dep::itertools

Macro iproduct

macro_rules! iproduct {
    (@flatten $I:expr,) => { ... };
    (@flatten $I:expr, $J:expr, $($K:expr,)*) => { ... };
    () => { ... };
    ($I:expr $(,)?) => { ... };
    ($I:expr, $J:expr $(,)?) => { ... };
    ($I:expr, $J:expr, $($K:expr),+ $(,)?) => { ... };
}
Available on crate feature dep_itertools only.
Expand description

Create an iterator over the “cartesian product” of iterators.

Iterator element type is like (A, B, ..., E) if formed from iterators (I, J, ..., M) with element types I::Item = A, J::Item = B, etc.

// Iterate over the coordinates of a 4 x 4 x 4 grid
// from (0, 0, 0), (0, 0, 1), .., (0, 1, 0), (0, 1, 1), .. etc until (3, 3, 3)
for (i, j, k) in iproduct!(0..4, 0..4, 0..4) {
   // ..
}