package slices func Reverse[T any](slice []T) []T { s := make([]T, len(slice)) for i := range slice { ri := len(slice) - 1 - i s[ri] = slice[i] } return s } func ReverseInPlace[S ~[]T, T any](s S) { for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 { s[i], s[j] = s[j], s[i] } }