import preserves type Failure* {.preservesRecord: "failure".} = object `msg`*: string Mountpoint* {.preservesRecord: "mount".} = object `source`*: string `target`*: string `type`*: string `status`*: Status StatusKind* {.pure.} = enum `Failure`, `success` `Status`* {.preservesOr.} = object case orKind*: StatusKind of StatusKind.`Failure`: `failure`*: Failure of StatusKind.`success`: `success`* {.preservesLiteral: "#t".}: bool proc `$`*(x: Failure | Mountpoint | Status): string = `$`(toPreserves(x)) proc encode*(x: Failure | Mountpoint | Status): seq[byte] = encode(toPreserves(x))