diff --git a/misc.go b/misc.go index a37d40e..f787f08 100644 --- a/misc.go +++ b/misc.go @@ -103,3 +103,15 @@ func SerializeInterface(w io.Writer, val interface{}) (err error) { return } + +func ShrinkSlice[T any](in []T, compare func(elem T) bool) []T { + cursor := 0 + for i := 0; i < len(in); i++ { + if compare(in[i]) { + continue + } + in[cursor] = in[i] + cursor++ + } + return in[:cursor] +}