This module defines compile-time reflection procs for working with types.
Unstable API.
Procs
- proc name(t: typedesc): string {...}{.magic: "TypeTrait".} 
- 
Returns the name of the given type. Alias for system.`$`(t) since Nim v0.20. 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. See also: Example: type Functor[A] = concept f type MatchedGenericType = genericHead(f.type) # `f` will be a value of a type such as `Option[T]` # `MatchedGenericType` will become the `Option` type 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
- proc isNamedTuple(T: typedesc): bool 
- Return true for named tuples, false for any other type. Source Edit