cartesian 0.3.0

QOL macro that creates the cartesian product of multiple iterators
Documentation
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).