diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2022-07-12 23:52:37 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2022-07-12 23:52:37 -0600 |
commit | f1e8040bc33e9057bd7a756a09c431c3f0d86226 (patch) | |
tree | c58814ec322b8f2a6a891e721ad9cc662f8d2cef /lib/util/generic.go | |
parent | fb589cdfc5acd6bd629c3fcfbe42f94700e78899 (diff) |
Add an `Ordered` interface for the Cmp method, have rbtree use it
Diffstat (limited to 'lib/util/generic.go')
-rw-r--r-- | lib/util/generic.go | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/util/generic.go b/lib/util/generic.go index 61e045b..a63a814 100644 --- a/lib/util/generic.go +++ b/lib/util/generic.go @@ -124,3 +124,24 @@ func (m *SyncMap[K, V]) Range(f func(key K, value V) bool) { }) } func (m *SyncMap[K, V]) Store(key K, value V) { m.inner.Store(key, value) } + +type Ordered[T interface{ Cmp(T) int }] interface { + Cmp(T) int +} + +type NativeOrdered[T constraints.Ordered] struct { + Val T +} + +func (a NativeOrdered[T]) Cmp(b NativeOrdered[T]) int { + switch { + case a.Val < b.Val: + return -1 + case a.Val > b.Val: + return 1 + default: + return 0 + } +} + +var _ Ordered[NativeOrdered[int]] = NativeOrdered[int]{} |