shallow 编译指示

shallow 编译指示影响类型的语义: 允许编译器进行浅拷贝。这会导致严重的语义问题,破坏内存安全! 但是,它也可以大幅度提高赋值的速度,因为 Nim 的语义要求对序列和字符串做深拷贝。深拷贝代价高昂, 尤其是用序列来构造树形结构的时候:

  1. type
  2. NodeKind = enum nkLeaf, nkInner
  3. Node {.shallow.} = object
  4. case kind: NodeKind
  5. of nkLeaf:
  6. strVal: string
  7. of nkInner:
  8. children: seq[Node]