cartesian 0.3.0

QOL macro that creates the cartesian product of multiple iterators
Documentation
  • Coverage
  • 60%
    3 out of 5 items documented1 out of 3 items with examples
  • Size
  • Source code size: 7.96 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.26 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 10s Average build duration of successful builds.
  • all releases: 9s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • JM4ier/cartesian-rs
    4 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • JM4ier

cartesian-rs

A macro for combining iterators to the cartesian product. Using the macro it is possible to write code compacter, and use less indention space.

Writing one for-loop and iterating through the cartesian product of multiple iterators is similar to nesting for loops, in each loop iterating through one of the iterators. However, the semantics of break is changed.

Example

let (m, n, p) = (3, 3, 1);

let mut id = vec![vec![0; n]; m];
for (i, j) in cartesian!(0..m, 0..n) {
    id[i][j] = (i == j) as u32;
}

let col_vec = vec![vec![1], vec![2], vec![4]];

let mut res = vec![vec![0; p]; m];

for (i, j, k) in cartesian!(0..m, 0..n, 0..p) {
    res[i][k] += id[i][j] * col_vec[j][k];
}

assert_eq!(col_vec, res);

License

This package is licensed under the MIT license.