Skip to content

Commit

Permalink
Merge pull request #317 from gibizer/revert-stdlib-slices
Browse files Browse the repository at this point in the history
Revert "Deprecate strings/slices functions covered by stdlib slices"
  • Loading branch information
k8s-ci-robot committed Sep 2, 2024
2 parents f90d014 + 8866f61 commit 702e33f
Showing 1 changed file with 35 additions and 10 deletions.
45 changes: 35 additions & 10 deletions strings/slices/slices.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,21 @@ limitations under the License.
// replace "stringslices" if the "slices" package becomes standard.
package slices

import goslices "slices"

// Equal reports whether two slices are equal: the same length and all
// elements equal. If the lengths are different, Equal returns false.
// Otherwise, the elements are compared in index order, and the
// comparison stops at the first unequal pair.
// Deprecated: use [slices.Equal] instead.
var Equal = goslices.Equal[[]string, string]
func Equal(s1, s2 []string) bool {
if len(s1) != len(s2) {
return false
}
for i, n := range s1 {
if n != s2[i] {
return false
}
}
return true
}

// Filter appends to d each element e of s for which keep(e) returns true.
// It returns the modified d. d may be s[:0], in which case the kept
Expand All @@ -44,14 +51,32 @@ func Filter(d, s []string, keep func(string) bool) []string {
}

// Contains reports whether v is present in s.
// Deprecated: use [slices.Contains] instead.
var Contains = goslices.Contains[[]string, string]
func Contains(s []string, v string) bool {
return Index(s, v) >= 0
}

// Index returns the index of the first occurrence of v in s, or -1 if
// not present.
// Deprecated: use [slices.Index] instead.
var Index = goslices.Index[[]string, string]
func Index(s []string, v string) int {
// "Contains" may be replaced with "Index(s, v) >= 0":
// https://github.com/golang/go/issues/45955#issuecomment-873377947
for i, n := range s {
if n == v {
return i
}
}
return -1
}

// Functions below are not in https://github.com/golang/go/issues/45955

// Clone returns a new clone of s.
// Deprecated: use [slices.Clone] instead.
var Clone = goslices.Clone[[]string, string]
func Clone(s []string) []string {
// https://github.com/go101/go101/wiki/There-is-not-a-perfect-way-to-clone-slices-in-Go
if s == nil {
return nil
}
c := make([]string, len(s))
copy(c, s)
return c
}

0 comments on commit 702e33f

Please sign in to comment.