pub trait ApplierHost {
// Required methods
fn borrow_dyn(&self) -> ApplierGuard<'_, dyn Applier>;
fn dispose_nodes(&self, disposal: NodeDisposal) -> Result<(), NodeError>;
// Provided method
fn compact(&self) { ... }
}Expand description
Owns an applier and completes node disposal when an outstanding borrow ends.
Required Methods§
fn borrow_dyn(&self) -> ApplierGuard<'_, dyn Applier>
Sourcefn dispose_nodes(&self, disposal: NodeDisposal) -> Result<(), NodeError>
fn dispose_nodes(&self, disposal: NodeDisposal) -> Result<(), NodeError>
Disposes detached roots, deferring recursive cleanup to the current borrow’s guard.
use cranpose_core::{
Applier, ApplierHost, ConcreteApplierHost, MemoryApplier, Node, NodeDisposal,
};
struct Leaf;
impl Node for Leaf {}
let host = ConcreteApplierHost::new(MemoryApplier::new());
let mut applier = host.borrow_typed();
let root = applier.create(Box::new(Leaf));
host.dispose_nodes(NodeDisposal::new(vec![(
root,
applier.node_generation(root),
)]))?;
drop(applier);
assert!(host.borrow_typed().get_mut(root).is_err());Provided Methods§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".