RFC-460 implemented (#19771)

* RFC-460 implemented

* RFC-460 implemented

* RFC-460 implemented

* Fix dumb GitHub autoupdate on changelog
This commit is contained in:
Juan Carlos 2022-09-21 05:37:13 -03:00 • committed by GitHub
commit ebb1b7af23
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 0 deletions

View file

@ -129,3 +129,19 @@ proc setLen[T](s: var seq[T], newlen: Natural) =
proc newSeq[T](s: var seq[T], len: Natural) =
shrink(s, 0)
setLen(s, len)
template capacityImpl(sek: NimSeqV2): int =
if sek.p != nil: sek.p.cap else: 0
func capacity*[T](self: seq[T]): int {.inline.} =
## Returns the current capacity of the seq.
# See https://github.com/nim-lang/RFCs/issues/460
runnableExamples:
var lst = newSeqOfCap[string](cap = 42)
lst.add "Nim"
assert lst.capacity == 42
{.cast(noSideEffect).}:
let sek = unsafeAddr self
result = capacityImpl(cast[ptr NimSeqV2](sek)[])