use super::Path;
pub trait Query<'v>: Sized {
type ItemRef: Sized + 'v;
type Item: Sized;
fn lookup<'p, P>(&'v self, path: P) -> Option<Self::ItemRef>
where
P: Path<'p>;
fn take<'p, P>(self, path: P) -> (Option<Self>, Option<Self::Item>)
where
P: Path<'p>;
fn insert<'p, P>(&mut self, path: P, insertee: Self::Item) -> Result<(), Self::Item>
where
P: Path<'p>;
}