[std/deques] move data instead of copy + destroy (#17800)
This commit is contained in:
parent
0b116310bf
commit
eb221dcc27
1 changed files with 2 additions and 4 deletions
|
|
@ -379,8 +379,7 @@ proc popFirst*[T](deq: var Deque[T]): T {.inline, discardable.} =
|
||||||
|
|
||||||
emptyCheck(deq)
|
emptyCheck(deq)
|
||||||
dec deq.count
|
dec deq.count
|
||||||
result = deq.data[deq.head]
|
result = move deq.data[deq.head]
|
||||||
destroy(deq.data[deq.head])
|
|
||||||
deq.head = (deq.head + 1) and deq.mask
|
deq.head = (deq.head + 1) and deq.mask
|
||||||
|
|
||||||
proc popLast*[T](deq: var Deque[T]): T {.inline, discardable.} =
|
proc popLast*[T](deq: var Deque[T]): T {.inline, discardable.} =
|
||||||
|
|
@ -398,8 +397,7 @@ proc popLast*[T](deq: var Deque[T]): T {.inline, discardable.} =
|
||||||
emptyCheck(deq)
|
emptyCheck(deq)
|
||||||
dec deq.count
|
dec deq.count
|
||||||
deq.tail = (deq.tail - 1) and deq.mask
|
deq.tail = (deq.tail - 1) and deq.mask
|
||||||
result = deq.data[deq.tail]
|
result = move deq.data[deq.tail]
|
||||||
destroy(deq.data[deq.tail])
|
|
||||||
|
|
||||||
proc clear*[T](deq: var Deque[T]) {.inline.} =
|
proc clear*[T](deq: var Deque[T]) {.inline.} =
|
||||||
## Resets the deque so that it is empty.
|
## Resets the deque so that it is empty.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue