Add toSinglyLinkedRing and toDoublyLinkedRing to std/lists (#22952)

Allow for conversion from `openArray`s, similar to `toSinglyLinkedList`
and `toDoublyLinkedList`.
This commit is contained in:
Eric N. Vander Weele
2023-12-24 09:21:22 -05:00
committed by GitHub
parent c0acf3ce28
commit 6fee2240cd
2 changed files with 23 additions and 0 deletions

View File

@@ -29,6 +29,7 @@
slots when enlarging a sequence.
- Added `hasDefaultValue` to `std/typetraits` to check if a type has a valid default value.
- Added Viewport API for the JavaScript targets in the `dom` module.
- Added `toSinglyLinkedRing` and `toDoublyLinkedRing` to `std/lists` to convert from `openArray`s.
[//]: # "Deprecations:"

View File

@@ -983,6 +983,17 @@ func toSinglyLinkedList*[T](elems: openArray[T]): SinglyLinkedList[T] {.since: (
for elem in elems.items:
result.add(elem)
func toSinglyLinkedRing*[T](elems: openArray[T]): SinglyLinkedRing[T] =
## Creates a new `SinglyLinkedRing` from the members of `elems`.
runnableExamples:
from std/sequtils import toSeq
let a = [1, 2, 3, 4, 5].toSinglyLinkedRing
assert a.toSeq == [1, 2, 3, 4, 5]
result = initSinglyLinkedRing[T]()
for elem in elems.items:
result.add(elem)
func toDoublyLinkedList*[T](elems: openArray[T]): DoublyLinkedList[T] {.since: (1, 5, 1).} =
## Creates a new `DoublyLinkedList` from the members of `elems`.
runnableExamples:
@@ -993,3 +1004,14 @@ func toDoublyLinkedList*[T](elems: openArray[T]): DoublyLinkedList[T] {.since: (
result = initDoublyLinkedList[T]()
for elem in elems.items:
result.add(elem)
func toDoublyLinkedRing*[T](elems: openArray[T]): DoublyLinkedRing[T] =
## Creates a new `DoublyLinkedRing` from the members of `elems`.
runnableExamples:
from std/sequtils import toSeq
let a = [1, 2, 3, 4, 5].toDoublyLinkedRing
assert a.toSeq == [1, 2, 3, 4, 5]
result = initDoublyLinkedRing[T]()
for elem in elems.items:
result.add(elem)