Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
| ... | ... |
@@ -1,5 +1,18 @@ |
| 1 | 1 |
package sliceutil |
| 2 | 2 |
|
| 3 |
+func Deref[T any](slice []*T) []T {
|
|
| 4 |
+ if slice == nil {
|
|
| 5 |
+ return nil |
|
| 6 |
+ } |
|
| 7 |
+ out := make([]T, 0, len(slice)) |
|
| 8 |
+ for _, p := range slice {
|
|
| 9 |
+ if p != nil {
|
|
| 10 |
+ out = append(out, *p) |
|
| 11 |
+ } |
|
| 12 |
+ } |
|
| 13 |
+ return out |
|
| 14 |
+} |
|
| 15 |
+ |
|
| 3 | 16 |
func Dedup[T comparable](slice []T) []T {
|
| 4 | 17 |
keys := make(map[T]struct{})
|
| 5 | 18 |
out := make([]T, 0, len(slice)) |