Generate permutations of a slice in a memory-efficient and deterministic manner, using Heap's algorithm.
For instance, printing all the permutations of the sequence ["red", "green", "blue"]:
```rust use permute::permutations_of;
for permutation in permutations_of(&["red", "green", "blue"]) { for element in permutation { print!("{}, ", element); } println!(""); } ```
Based on the ordering provided by Heap’s algorithm, it’s guaranteed that this program will produce:
text
red, green, blue,
green, red, blue,
blue, red, green,
red, blue, green,
green, blue, red,
blue, green, red,
This crate also provides the ArbitraryTandemControlIter
, which allows
iterating over a slice using a slice of indices - that's how Heap's algorithm is
implemented here.