mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-07 03:03:59 +00:00
update util/sets to use standard package cmp
This commit is contained in:
parent
24e6b03780
commit
c26bb7eb85
@ -1,53 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2022 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package sets
|
|
||||||
|
|
||||||
// ordered is a constraint that permits any ordered type: any type
|
|
||||||
// that supports the operators < <= >= >.
|
|
||||||
// If future releases of Go add new ordered types,
|
|
||||||
// this constraint will be modified to include them.
|
|
||||||
type ordered interface {
|
|
||||||
integer | float | ~string
|
|
||||||
}
|
|
||||||
|
|
||||||
// integer is a constraint that permits any integer type.
|
|
||||||
// If future releases of Go add new predeclared integer types,
|
|
||||||
// this constraint will be modified to include them.
|
|
||||||
type integer interface {
|
|
||||||
signed | unsigned
|
|
||||||
}
|
|
||||||
|
|
||||||
// float is a constraint that permits any floating-point type.
|
|
||||||
// If future releases of Go add new predeclared floating-point types,
|
|
||||||
// this constraint will be modified to include them.
|
|
||||||
type float interface {
|
|
||||||
~float32 | ~float64
|
|
||||||
}
|
|
||||||
|
|
||||||
// signed is a constraint that permits any signed integer type.
|
|
||||||
// If future releases of Go add new predeclared signed integer types,
|
|
||||||
// this constraint will be modified to include them.
|
|
||||||
type signed interface {
|
|
||||||
~int | ~int8 | ~int16 | ~int32 | ~int64
|
|
||||||
}
|
|
||||||
|
|
||||||
// unsigned is a constraint that permits any unsigned integer type.
|
|
||||||
// If future releases of Go add new predeclared unsigned integer types,
|
|
||||||
// this constraint will be modified to include them.
|
|
||||||
type unsigned interface {
|
|
||||||
~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr
|
|
||||||
}
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
|||||||
package sets
|
package sets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"cmp"
|
||||||
"sort"
|
"sort"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -193,7 +194,7 @@ func (s1 Set[T]) Equal(s2 Set[T]) bool {
|
|||||||
return len(s1) == len(s2) && s1.IsSuperset(s2)
|
return len(s1) == len(s2) && s1.IsSuperset(s2)
|
||||||
}
|
}
|
||||||
|
|
||||||
type sortableSliceOfGeneric[T ordered] []T
|
type sortableSliceOfGeneric[T cmp.Ordered] []T
|
||||||
|
|
||||||
func (g sortableSliceOfGeneric[T]) Len() int { return len(g) }
|
func (g sortableSliceOfGeneric[T]) Len() int { return len(g) }
|
||||||
func (g sortableSliceOfGeneric[T]) Less(i, j int) bool { return less[T](g[i], g[j]) }
|
func (g sortableSliceOfGeneric[T]) Less(i, j int) bool { return less[T](g[i], g[j]) }
|
||||||
@ -203,7 +204,7 @@ func (g sortableSliceOfGeneric[T]) Swap(i, j int) { g[i], g[j] = g[j], g[i]
|
|||||||
//
|
//
|
||||||
// This is a separate function and not a method because not all types supported
|
// This is a separate function and not a method because not all types supported
|
||||||
// by Generic are ordered and only those can be sorted.
|
// by Generic are ordered and only those can be sorted.
|
||||||
func List[T ordered](s Set[T]) []T {
|
func List[T cmp.Ordered](s Set[T]) []T {
|
||||||
res := make(sortableSliceOfGeneric[T], 0, len(s))
|
res := make(sortableSliceOfGeneric[T], 0, len(s))
|
||||||
for key := range s {
|
for key := range s {
|
||||||
res = append(res, key)
|
res = append(res, key)
|
||||||
@ -236,6 +237,6 @@ func (s Set[T]) Len() int {
|
|||||||
return len(s)
|
return len(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
func less[T ordered](lhs, rhs T) bool {
|
func less[T cmp.Ordered](lhs, rhs T) bool {
|
||||||
return lhs < rhs
|
return lhs < rhs
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user