diff options
Diffstat (limited to 'internal/util/unique.go')
-rw-r--r-- | internal/util/unique.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/internal/util/unique.go b/internal/util/unique.go index be97a57b0..364c935b7 100644 --- a/internal/util/unique.go +++ b/internal/util/unique.go @@ -18,6 +18,8 @@ package util +import "net/url" + // UniqueStrings returns a deduplicated version of a given string slice. func UniqueStrings(s []string) []string { keys := make(map[string]bool, len(s)) @@ -30,3 +32,16 @@ func UniqueStrings(s []string) []string { } return list } + +// UniqueURIs returns a deduplicated version of a given *url.URL slice. +func UniqueURIs(s []*url.URL) []*url.URL { + keys := make(map[string]bool, len(s)) + list := []*url.URL{} + for _, entry := range s { + if _, value := keys[entry.String()]; !value { + keys[entry.String()] = true + list = append(list, entry) + } + } + return list +} |