### 2 unstable releases

0.2.1 | Jun 5, 2022 |
---|---|

0.1.0 | Aug 7, 2019 |

#**876** in Algorithms

**1,080** downloads per month

**AGPL-3.0-or-later**

11KB

130 lines

# permute

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"]:

`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:

`red, green, blue,
green, red, blue,
blue, red, green,
red, blue, green,
green, blue, red,
blue, green, red,
`

This crate also provides the

, which allows
iterating over a slice using a slice of indices - that's how Heap's algorithm is
implemented here.`ArbitraryTandemControlIter`