Having to expose the NodeTrait just to be able to use the methods on the Node type feels leaky. We should create a "sealed" and "unsealed" Node type, where one acts as a front for the other.
We can do this by creating a facade using https://github.com/chancancode/rust-delegate, which should allow us to seal the trait requirements internally without leaking it.
We should probably name one SealedNode and the other Node. Using Node` exclusively throughout our code as to prevent the sealed version from leaking.
Having to expose the
NodeTraitjust to be able to use the methods on theNodetype feels leaky. We should create a "sealed" and "unsealed"Nodetype, where one acts as a front for the other.We can do this by creating a facade using https://github.com/chancancode/rust-delegate, which should allow us to seal the
traitrequirements internally without leaking it.We should probably name one
SealedNodeand the otherNode. UsingNode` exclusively throughout our code as to prevent the sealed version from leaking.