Generics and Static types
Nim types can be parametrized by types (generics) or compile-time values (static)
For example
type
MySeq[T] = object
len, reserved: int
data: ptr UncheckedArray[T]
The generics can be restricted
type
MySeq[T: int32 or int64] = object
len, reserved: int
data: ptr UncheckedArray[T]
With static types
type
SmallSeq[MaxLen: static int, T] = object
len: int
data: array[MaxLen, T]