31 lines
651 B
Nim
31 lines
651 B
Nim
|
|
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`, `true`
|
|
`Status`* {.preservesOr.} = object
|
|
case orKind*: StatusKind
|
|
of StatusKind.`Failure`:
|
|
`failure`*: Failure
|
|
|
|
of StatusKind.`true`:
|
|
`true`* {.preservesLiteral: "#t".}: bool
|
|
|
|
|
|
proc `$`*(x: Failure | Mountpoint | Status): string =
|
|
`$`(toPreserve(x))
|
|
|
|
proc encode*(x: Failure | Mountpoint | Status): seq[byte] =
|
|
encode(toPreserve(x))
|