pub fn heap_permutation<'a, T>(d: &'a mut [T], cb: impl FnMut(&[T]) + 'a)Expand description
Heap permutation which permutate variable d in place and call cb function
for each permutation done on d.
§Parameter
da data to be permuted.cba 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