From 8325b0bcc602cdaeb71de95c6e7553f7a8620df1 Mon Sep 17 00:00:00 2001
From: Garet Halliday <me@garet.holiday>
Date: Fri, 6 Oct 2023 14:06:26 -0500
Subject: [PATCH] a

---
 lib/gat/poolers/session/pooler.go |  1 +
 lib/util/slices/delete.go         | 16 ++++++++++++++++
 lib/util/slices/remove.go         | 20 +-------------------
 3 files changed, 18 insertions(+), 19 deletions(-)
 create mode 100644 lib/util/slices/delete.go

diff --git a/lib/gat/poolers/session/pooler.go b/lib/gat/poolers/session/pooler.go
index 8f0dd004..ab067e6b 100644
--- a/lib/gat/poolers/session/pooler.go
+++ b/lib/gat/poolers/session/pooler.go
@@ -6,6 +6,7 @@ import (
 	"github.com/google/uuid"
 
 	"gfx.cafe/gfx/pggat/lib/gat/pool"
+
 	"gfx.cafe/gfx/pggat/lib/util/slices"
 )
 
diff --git a/lib/util/slices/delete.go b/lib/util/slices/delete.go
new file mode 100644
index 00000000..e0ab94da
--- /dev/null
+++ b/lib/util/slices/delete.go
@@ -0,0 +1,16 @@
+package slices
+
+// Delete is similar to Remove but doesn't retain order.
+func Delete[T comparable](slice []T, item T) []T {
+	i := Index(slice, item)
+	if i == -1 {
+		return slice
+	}
+	return DeleteIndex(slice, i)
+}
+
+func DeleteIndex[T any](slice []T, idx int) []T {
+	slice[idx] = slice[len(slice)-1]
+	slice[len(slice)-1] = *new(T)
+	return slice[:len(slice)-1]
+}
diff --git a/lib/util/slices/remove.go b/lib/util/slices/remove.go
index 04ca24c1..baebe539 100644
--- a/lib/util/slices/remove.go
+++ b/lib/util/slices/remove.go
@@ -1,8 +1,6 @@
 package slices
 
-// Remove will check for item in the target slice. If it finds it, it will move it to the end of the slice and return a slice
-// with length-1. The original slice will contain all items (though in a different order), and the new slice will contain all
-// but item.
+// Remove will remove the item from the slice, retaining the original order
 func Remove[T comparable](slice []T, item T) []T {
 	i := Index(slice, item)
 	if i == -1 {
@@ -12,22 +10,6 @@ func Remove[T comparable](slice []T, item T) []T {
 }
 
 func RemoveIndex[T any](slice []T, idx int) []T {
-	item := slice[idx]
-	copy(slice[idx:], slice[idx+1:])
-	slice[len(slice)-1] = item
-	return slice[:len(slice)-1]
-}
-
-// Delete is similar to Remove but leaves a *new(T) in the old slice, allowing the value to be GC'd
-func Delete[T comparable](slice []T, item T) []T {
-	i := Index(slice, item)
-	if i == -1 {
-		return slice
-	}
-	return DeleteIndex(slice, i)
-}
-
-func DeleteIndex[T any](slice []T, idx int) []T {
 	copy(slice[idx:], slice[idx+1:])
 	slice[len(slice)-1] = *new(T)
 	return slice[:len(slice)-1]
-- 
GitLab