Skip to content

Commit 8866f61

Browse files
committed
Revert "Deprecate strings/slices functions covered by stdlib slices"
This reverts commit 4965b0f as it incorrectly started using stdlib slices without declaring that this repo is now only compatible with golang >=1.21.
1 parent f90d014 commit 8866f61

File tree

1 file changed

+35
-10
lines changed

1 file changed

+35
-10
lines changed

strings/slices/slices.go

+35-10
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,21 @@ limitations under the License.
2020
// replace "stringslices" if the "slices" package becomes standard.
2121
package slices
2222

23-
import goslices "slices"
24-
2523
// Equal reports whether two slices are equal: the same length and all
2624
// elements equal. If the lengths are different, Equal returns false.
2725
// Otherwise, the elements are compared in index order, and the
2826
// comparison stops at the first unequal pair.
29-
// Deprecated: use [slices.Equal] instead.
30-
var Equal = goslices.Equal[[]string, string]
27+
func Equal(s1, s2 []string) bool {
28+
if len(s1) != len(s2) {
29+
return false
30+
}
31+
for i, n := range s1 {
32+
if n != s2[i] {
33+
return false
34+
}
35+
}
36+
return true
37+
}
3138

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

4653
// Contains reports whether v is present in s.
47-
// Deprecated: use [slices.Contains] instead.
48-
var Contains = goslices.Contains[[]string, string]
54+
func Contains(s []string, v string) bool {
55+
return Index(s, v) >= 0
56+
}
4957

5058
// Index returns the index of the first occurrence of v in s, or -1 if
5159
// not present.
52-
// Deprecated: use [slices.Index] instead.
53-
var Index = goslices.Index[[]string, string]
60+
func Index(s []string, v string) int {
61+
// "Contains" may be replaced with "Index(s, v) >= 0":
62+
// https://github.com/golang/go/issues/45955#issuecomment-873377947
63+
for i, n := range s {
64+
if n == v {
65+
return i
66+
}
67+
}
68+
return -1
69+
}
70+
71+
// Functions below are not in https://github.com/golang/go/issues/45955
5472

5573
// Clone returns a new clone of s.
56-
// Deprecated: use [slices.Clone] instead.
57-
var Clone = goslices.Clone[[]string, string]
74+
func Clone(s []string) []string {
75+
// https://github.com/go101/go101/wiki/There-is-not-a-perfect-way-to-clone-slices-in-Go
76+
if s == nil {
77+
return nil
78+
}
79+
c := make([]string, len(s))
80+
copy(c, s)
81+
return c
82+
}

0 commit comments

Comments
 (0)