typetraits

This module defines compile-time reflection procs for working with types

Exports

$, $, $, $, $, $, $, $, $, $, $, $, $, $, $, $, $, $, isNamedTuple

Procs

proc name(t: typedesc): string {...}{.magic: "TypeTrait".}
Alias for system.`$`(t) since Nim v0.20.0.   Source Edit
proc arity(t: typedesc): int {...}{.magic: "TypeTrait".}
Returns the arity of the given type. This is the number of "type" components or the number of generic parameters a given type t has.

Examples:

assert arity(seq[string]) == 1
assert arity(array[3, int]) == 2
assert arity((int, int, float, string)) == 4
  Source Edit
proc genericHead(t: typedesc): typedesc {...}{.magic: "TypeTrait".}
Accepts an instantiated generic type and returns its uninstantiated form.
For example:
seq[int].genericHead will be just seq seq[int].genericHead[float] will be seq[float]

A compile-time error will be produced if the supplied type is not generic.

  Source Edit
proc stripGenericParams(t: typedesc): typedesc {...}{.magic: "TypeTrait".}
This trait is similar to genericHead, but instead of producing error for non-generic types, it will just return them unmodified.   Source Edit
proc supportsCopyMem(t: typedesc): bool {...}{.magic: "TypeTrait".}
This trait returns true iff the type t is safe to use for copyMem. Other languages name a type like these blob.   Source Edit