summary refs log tree commit diff stats
path: root/lib/pure/collections/queues.nim
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pure/collections/queues.nim')
-rw-r--r--lib/pure/collections/queues.nim9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/pure/collections/queues.nim b/lib/pure/collections/queues.nim
index defce657f..61f0d14b5 100644
--- a/lib/pure/collections/queues.nim
+++ b/lib/pure/collections/queues.nim
@@ -39,6 +39,15 @@ iterator items*[T](q: Queue[T]): T =
     yield q.data[i]
     i = (i + 1) and q.mask
 
+iterator mitems*[T](q: var Queue[T]): var T =
+  ## yields every element of `q`.
+  var i = q.rd
+  var c = q.count
+  while c > 0:
+    dec c
+    yield q.data[i]
+    i = (i + 1) and q.mask
+
 proc add*[T](q: var Queue[T], item: T) =
   ## adds an `item` to the end of the queue `q`.
   var cap = q.mask+1