From d9ed816b10a67e802817daa07b5b823c79bcd13e Mon Sep 17 00:00:00 2001 From: archnim <68890552+archnim@users.noreply.github.com> Date: Wed, 5 Aug 2020 16:41:42 +0000 Subject: [PATCH] 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 --- lib/pure/collections/deques.nim | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/pure/collections/deques.nim b/lib/pure/collections/deques.nim index 8150563ccc..43ca536b65 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