diff --git a/dns/dns.go b/dns/dns.go index 95649a1..da3c888 100644 --- a/dns/dns.go +++ b/dns/dns.go @@ -749,11 +749,7 @@ func (r *Resolver) LookupIPs(ctx context.Context, name string) ([]netip.Addr, er if err != nil { return nil, err } - - ips := make([]netip.Addr, 0, len(result.IPv6)+len(result.IPv4)) - ips = append(ips, result.IPv6...) - ips = append(ips, result.IPv4...) - return ips, nil + return slices.Concat(result.IPv6, result.IPv4), nil } // SystemResolver resolves names using [net.DefaultResolver]. diff --git a/slicehelper/slicehelper.go b/slicehelper/slicehelper.go index 4feb642..19363d6 100644 --- a/slicehelper/slicehelper.go +++ b/slicehelper/slicehelper.go @@ -1,15 +1,11 @@ package slicehelper +import "slices" + // Extend extends the input slice by n elements. head is the full extended // slice, while tail is the appended part. If the original slice has sufficient // capacity no allocation is performed. func Extend[S ~[]E, E any](in S, n int) (head, tail S) { - if total := len(in) + n; cap(in) >= total { - head = in[:total] - } else { - head = make(S, total) - copy(head, in) - } - tail = head[len(in):] - return + head = slices.Grow(in, n)[:len(in)+n] + return head, head[len(in):] }