[−][src]Function permutator::heap_permutation
pub fn heap_permutation<'a, T>(d: &'a mut [T], cb: impl FnMut(&[T]) + 'a)
Heap permutation which permutate variable d
in place and call cb
function
for each permutation done on d
.
Parameter
d
a data to be permuted.cb
a callback function that will be called several times for each permuted value.
Example
use permutator::heap_permutation; heap_permutation(&mut [1, 2, 3], |p| { // call multiple times. It'll print [1, 2, 3], [2, 1, 3], [3, 1, 2], // [1, 3, 2], [2, 3, 1], and [3, 2, 1] respectively. println!("{:?}", p); });
See
- k_permutation_sync for example of how to implement multi-thread data sync
- The HeapPermutationIterator struct provide alternate way of getting permutation but in iterative way.
Warning
The permutation is done in place which mean the parameter d
will be
mutated.
Notes
- The value passed to callback function will equals to value inside parameter
d
.
Breaking change from 0.3.x to 0.4
Since version 0.4.0, the first result return by this iterator will be the original value