File size: 807 Bytes
fea99b3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | package equal
import (
"github.com/openmeterio/openmeter/pkg/hasher"
)
// Equaler is an interface that can be used to compare two objects.
// This is already present in models, but we need it here so that we can avoid a circular dependency.
type Equaler[T any] interface {
Equal(other T) bool
}
func PtrEqual[T Equaler[T]](a, b *T) bool {
if a == nil && b == nil {
return true
}
if a == nil || b == nil {
return false
}
return (*a).Equal(*b)
}
func HasherPtrEqual[T hasher.Hasher](a, b *T) bool {
if a == nil && b == nil {
return true
}
if a == nil || b == nil {
return false
}
return (*a).Hash() == (*b).Hash()
}
func ComparablePtrEqual[T comparable](a, b *T) bool {
if a == nil && b == nil {
return true
}
if a == nil || b == nil {
return false
}
return *a == *b
}
|