summary refs log tree commit diff stats
path: root/lib/pure/collections
diff options
context:
space:
mode:
authorarchnim <68890552+archnim@users.noreply.github.com>2020-08-05 16:41:42 +0000
committerGitHub <noreply@github.com>2020-08-05 12:41:42 -0400
commitd9ed816b10a67e802817daa07b5b823c79bcd13e (patch)
tree8ae7b6f5670da3f9ed539d03a01ea60a7ca9014d /lib/pure/collections
parentef6358f0b0be71266d9fa7ae19a3b6f193b305cf (diff)
downloadNim-d9ed816b10a67e802817daa07b5b823c79bcd13e.tar.gz
Added the ability to initialize a deque with an openArray (#15138)
* Add ability to initialize a deque with a sequence

Example:
var dq = initDeque[char](@['a', 'b', 'c'])

* Update deques.nim

* Optimized deque initialization

* Sequence replaced by open array in deque initialization
Diffstat (limited to 'lib/pure/collections')
-rw-r--r--lib/pure/collections/deques.nim6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/pure/collections/deques.nim b/lib/pure/collections/deques.nim
index 8150563cc..43ca536b6 100644
--- a/lib/pure/collections/deques.nim
+++ b/lib/pure/collections/deques.nim
@@ -84,6 +84,12 @@ proc initDeque*[T](initialSize: int = 4): Deque[T] =
   ## The length of a newly created deque will still be 0.
   result.initImpl(initialSize)
 
+proc initDeque*[T](arr: openArray[T]): Deque[T] =
+  ## Create a new deque initialized with an open array
+  result.initImpl(nextPowerOfTwo(arr.len))
+  for i in 0 ..< arr.len:
+    result.addLast(arr[i])
+
 proc len*[T](deq: Deque[T]): int {.inline.} =
   ## Return the number of elements of `deq`.
   result = deq.count