summaryrefslogtreecommitdiff
path: root/internal/paging/boundary.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/paging/boundary.go')
-rw-r--r--internal/paging/boundary.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/internal/paging/boundary.go b/internal/paging/boundary.go
index 15af65e0c..83d265515 100644
--- a/internal/paging/boundary.go
+++ b/internal/paging/boundary.go
@@ -131,3 +131,20 @@ func (b Boundary) Find(in []string) int {
}
return -1
}
+
+// Boundary_FindFunc is functionally equivalent to Boundary{}.Find() but for an arbitrary type with ID.
+// Note: this is not a Boundary{} method as Go generics are not supported in method receiver functions.
+func Boundary_FindFunc[T any](b Boundary, in []T, get func(T) string) int { //nolint:revive
+ if get == nil {
+ panic("nil function")
+ }
+ if b.Value == "" {
+ return -1
+ }
+ for i := range in {
+ if get(in[i]) == b.Value {
+ return i
+ }
+ }
+ return -1
+}