package utils func WaitFor(fn func()) <-chan struct{} { ch := make(chan struct{}) go func() { defer close(ch) fn() }() return ch } func ToLookupMap[T comparable](s []T) map[T]struct{} { m := make(map[T]struct{}, len(s)) for _, item := range s { m[item] = struct{}{} } return m } func Reverse[T any](s []T) []T { length := len(s) reversed := make([]T, length) for i, item := range s { reversed[length-i-1] = item } return reversed }