package utils func TypedSliceToInterfaceSlice[T any](s []T) []interface{} { is := make([]interface{}, 0, len(s)) for _, t := range s { is = append(is, t) } return is } func InterfaceSliceToTypedSlice[T any](s []interface{}) []T { ts := make([]T, 0, len(s)) for _, t := range s { ts = append(ts, t.(T)) } return ts } func RemoveFromUnorderedSlice[T comparable](s []T, o T) []T { for i, t := range s { if t != o { continue } s[i] = s[len(s) - 1] return s[:len(s) - 1] } return s }