20 lines
456 B
Nim
20 lines
456 B
Nim
|
|
import
|
|
std/typetraits, preserves, sturdy
|
|
|
|
type
|
|
Bind*[E] {.preservesRecord: "bind".} = ref object
|
|
`oid`*: Preserve[E]
|
|
`key`*: seq[byte]
|
|
`target`*: Preserve[E]
|
|
|
|
Resolve*[E] {.preservesRecord: "resolve".} = ref object
|
|
`sturdyref`*: sturdy.SturdyRef[E]
|
|
`observer`*: Preserve[E]
|
|
|
|
proc `$`*[E](x: Bind[E] | Resolve[E]): string =
|
|
`$`(toPreserve(x, E))
|
|
|
|
proc encode*[E](x: Bind[E] | Resolve[E]): seq[byte] =
|
|
encode(toPreserve(x, E))
|