From fd6ba43b97ef756f898cf04e8fb3175f248aa8c8 Mon Sep 17 00:00:00 2001 From: Maisem Ali Date: Fri, 3 May 2024 18:38:59 -0700 Subject: [PATCH] types/views: remove duplicate SliceContainsFunc We already have `(Slice[T]).ContainsFunc`. Updates #cleanup Signed-off-by: Maisem Ali --- ipn/ipnlocal/local.go | 4 ++-- net/tsaddr/tsaddr.go | 2 +- types/views/views.go | 12 +----------- types/views/views_test.go | 2 -- 4 files changed, 4 insertions(+), 16 deletions(-) diff --git a/ipn/ipnlocal/local.go b/ipn/ipnlocal/local.go index 68a6080f0..ef5463a95 100644 --- a/ipn/ipnlocal/local.go +++ b/ipn/ipnlocal/local.go @@ -3696,8 +3696,8 @@ func dnsConfigForNetmap(nm *netmap.NetworkMap, peers map[tailcfg.NodeID]tailcfg. } // selfV6Only is whether we only have IPv6 addresses ourselves. - selfV6Only := views.SliceContainsFunc(nm.GetAddresses(), tsaddr.PrefixIs6) && - !views.SliceContainsFunc(nm.GetAddresses(), tsaddr.PrefixIs4) + selfV6Only := nm.GetAddresses().ContainsFunc(tsaddr.PrefixIs6) && + !nm.GetAddresses().ContainsFunc(tsaddr.PrefixIs4) dcfg.OnlyIPv6 = selfV6Only // Populate MagicDNS records. We do this unconditionally so that diff --git a/net/tsaddr/tsaddr.go b/net/tsaddr/tsaddr.go index 126f6302a..530c23641 100644 --- a/net/tsaddr/tsaddr.go +++ b/net/tsaddr/tsaddr.go @@ -181,7 +181,7 @@ func NewContainsIPFunc(addrs views.Slice[netip.Prefix]) func(ip netip.Addr) bool // If any addr is more than a single IP, then just do the slow // linear thing until // https://github.com/inetaf/netaddr/issues/139 is done. - if views.SliceContainsFunc(addrs, func(p netip.Prefix) bool { return !p.IsSingleIP() }) { + if addrs.ContainsFunc(func(p netip.Prefix) bool { return !p.IsSingleIP() }) { acopy := addrs.AsSlice() return func(ip netip.Addr) bool { for _, a := range acopy { diff --git a/types/views/views.go b/types/views/views.go index 379b80c59..245734961 100644 --- a/types/views/views.go +++ b/types/views/views.go @@ -274,12 +274,7 @@ func (v Slice[T]) IndexFunc(f func(T) bool) int { // // As it runs in O(n) time, use with care. func (v Slice[T]) ContainsFunc(f func(T) bool) bool { - for _, x := range v.ж { - if f(x) { - return true - } - } - return false + return slices.ContainsFunc(v.ж, f) } // SliceContains reports whether v contains element e. @@ -289,11 +284,6 @@ func SliceContains[T comparable](v Slice[T], e T) bool { return slices.Contains(v.ж, e) } -// SliceContainsFunc reports whether f reports true for any element in v. -func SliceContainsFunc[T any](v Slice[T], f func(T) bool) bool { - return slices.ContainsFunc(v.ж, f) -} - // SliceEqual is like the standard library's slices.Equal, but for two views. func SliceEqual[T comparable](a, b Slice[T]) bool { return slices.Equal(a.ж, b.ж) diff --git a/types/views/views_test.go b/types/views/views_test.go index 96c1a8b9c..0173d3207 100644 --- a/types/views/views_test.go +++ b/types/views/views_test.go @@ -124,8 +124,6 @@ func TestViewUtils(t *testing.T) { c.Check(v.IndexFunc(func(s string) bool { return strings.HasPrefix(s, "z") }), qt.Equals, -1) c.Check(SliceContains(v, "bar"), qt.Equals, true) c.Check(SliceContains(v, "baz"), qt.Equals, false) - c.Check(SliceContainsFunc(v, func(s string) bool { return strings.HasPrefix(s, "f") }), qt.Equals, true) - c.Check(SliceContainsFunc(v, func(s string) bool { return len(s) > 3 }), qt.Equals, false) c.Check(SliceEqualAnyOrder(v, v), qt.Equals, true) c.Check(SliceEqualAnyOrder(v, SliceOf([]string{"bar", "foo"})), qt.Equals, true) c.Check(SliceEqualAnyOrder(v, SliceOf([]string{"foo"})), qt.Equals, false)