pub trait PathAccess {
type Value;
fn get_path<'a>(&'a self, path: &str) -> Option<&'a Self::Value>;
fn set_path(&mut self, path: &str, value: Self::Value) -> bool;
fn has_path(&self, path: &str) -> bool {
self.get_path(path).is_some()
}
}
pub fn get<'a, T: PathAccess>(container: &'a T, path: &str) -> Option<&'a T::Value> {
container.get_path(path)
}
pub fn set<T: PathAccess>(container: &mut T, path: &str, value: T::Value) -> bool {
container.set_path(path, value)
}
pub fn has<T: PathAccess>(container: &T, path: &str) -> bool {
container.has_path(path)
}