Package slices contains a collection of helpful generic functions for
working with slices. It is currently not part of the public interface and
must be consider as highly instable.
func PermuteDo[T any](slice []T, do func([]T), i int)
PermuteDo permutates the given slice starting at the position given by the
index and call the `do` function on each permutation to collect the result.
For a full permutation the `index` must start with `0`.