Procedural macro for unzipping iterators-over-n-length-tuples into n collections.
Here's a brief example of what it is capable of:
use unzip_n;
unzip_n!;
use Unzip3 as _; // Just a verification of the trait name.
// Or simply leave the visibility modifier absent for inherited visibility
// (which usually means "private").
// unzip_n!(3);
let v = vec!;
let = v.into_iter.unzip_n_vec;
assert_eq!;
assert_eq!;
assert_eq!;
Or you could give the trait an explicit name:
use unzip_n;
unzip_n!;
use MyTrait as _; // Just a verification that the trait is generated with the desired name.
let v = vec!;
let = v.into_iter.unzip_n_vec;
assert_eq!;
assert_eq!;
assert_eq!;
Or generate multiple traits at once using a range:
use unzip_n;
unzip_n!; // Generates Unzip2, Unzip3, Unzip4
let pairs = vec!;
let = pairs.into_iter.unzip_n_vec;
assert_eq!;
assert_eq!;
let triples = vec!;
let = triples.into_iter.unzip_n_vec;
assert_eq!;
assert_eq!;
assert_eq!;
With an explicit trait name prefix:
use unzip_n;
unzip_n!; // Generates MyUnzip2, MyUnzip3
use MyUnzip2 as _;
use MyUnzip3 as _;
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.