package utils // Intersect returns a new slice containing the elements that are present in both input slices. // This provides a more efficient solution than using two nested loops. func Intersect[T comparable, Slice ~[]T](slice1 Slice, slice2 Slice) Slice { var result Slice seen := map[T]struct{}{} for i := range slice1 { seen[slice1[i]] = struct{}{} } for i := range slice2 { if _, ok := seen[slice2[i]]; ok { result = append(result, slice2[i]) } } return result }