aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2025-04-11 22:45:11 -0700
committerRose Hogenson <rosehogenson@posteo.net>2025-04-11 22:45:11 -0700
commit1dddfbbff7f9dcd82c9969fce43b9da09cf40b0d (patch)
tree0640ad42fcdbbf964b88984db5bc19b06031b6f6
parent3f2f8a6909219b3a1b9564338037c9a31418bc99 (diff)
downloaddeque-1dddfbbff7f9dcd82c9969fce43b9da09cf40b0d.tar.zst
Add a .String() method
-rw-r--r--deque.go15
-rw-r--r--deque_test.go12
2 files changed, 27 insertions, 0 deletions
diff --git a/deque.go b/deque.go
index e267eba..4eec0e6 100644
--- a/deque.go
+++ b/deque.go
@@ -11,6 +11,7 @@ import (
"fmt"
"iter"
"slices"
+ "strings"
)
// Deque is a double-ended queue. The zero value is ready for use.
@@ -190,3 +191,17 @@ func (q *Deque[T]) PopAll() iter.Seq[T] {
}
}
}
+
+// String displays the deque as a string, using fmt.Sprint to show each element.
+func (q *Deque[T]) String() string {
+ buf := new(strings.Builder)
+ buf.WriteString("[")
+ for i := range len(q.buf) {
+ if i > 0 {
+ buf.WriteString(" ")
+ }
+ fmt.Fprint(buf, q.buf[:cap(q.buf)][q.toPhysicalIdx(i)])
+ }
+ buf.WriteString("]")
+ return buf.String()
+}
diff --git a/deque_test.go b/deque_test.go
index d3ea63c..27ae232 100644
--- a/deque_test.go
+++ b/deque_test.go
@@ -285,3 +285,15 @@ func TestPopAll(t *testing.T) {
})
}
}
+
+func TestString(t *testing.T) {
+ t.Parallel()
+
+ in := []int{1, 2, 3, 4, 5}
+ q := From(in)
+ const want = "[1 2 3 4 5]"
+ got := q.String()
+ if got != want {
+ t.Errorf("%d: String() = %q, want %q", in, got, want)
+ }
+}