Macro concrete_core::zip[][src]

macro_rules! zip {
    ($($iterator : expr), *) => { ... };
    (@ zip $first : expr, $($iterator : expr), *) => { ... };
    (@ zip $first : expr) => { ... };
}
Expand description

This macro is used in tandem with the zip_args macro, to allow to zip iterators and access them in an non-nested fashion. This makes large zip iterators easier to write, but also, makes the code faster, as zipped-flatten iterators are hard to optimize for the compiler.

Example

use concrete_core::{zip, zip_args};
let a = [1, 2, 3];
let b = [2, 2, 3];
let c = [4, 5, 6];

// Normally we would do:
for (a, (b, c)) in a.iter().zip(b.iter().zip(c.iter())) {
    println!("{}{}{}", a, b, c);
}

// Now we can do:
for zip_args!(a, b, c) in zip!(a.iter(), b.iter(), c.iter()) {
    println!("{}{}{}", a, b, c);
}