use anyhow::Result;
use crate::{MutableForest, NodeID, VisitableTree};
pub trait MutableTree: VisitableTree + MutableForest {
fn set_root(&mut self, root: impl AsRef<NodeID>) -> Result<()>;
fn setting_root(&self, root: impl AsRef<NodeID>) -> Result<Self>
where
Self: Clone + Sized,
{
let mut tree = self.clone();
tree.set_root(root)?;
Ok(tree)
}
}