From 502fef431dc8999243935a2b345e658f86387e49 Mon Sep 17 00:00:00 2001 From: Grégoire Duchêne Date: Sun, 11 Dec 2022 14:13:07 +0000 Subject: Add SliceMap --- util.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'util.go') diff --git a/util.go b/util.go index daf2817..ec2a3dd 100644 --- a/util.go +++ b/util.go @@ -11,6 +11,19 @@ func Must[T any](val T, err error) T { return val } +// SliceMap applies a function to a slice and returns a new slice made +// of the returned values. +func SliceMap[T ~[]S, S, U any](f func(S) U, ts T) []U { + if len(ts) == 0 { + return nil + } + ret := make([]U, len(ts)) + for i, t := range ts { + ret[i] = f(t) + } + return ret +} + // NoCopy flags a type that embeds it as not to be copied. Go does not // prevent values from being copied, but ‘go vet’ will pick it up and // signal it, which can then be caught by many CI/CD pipelines. -- cgit v1.2.3-70-g09d2