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 ```rust 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](LICENSE).