pub trait Readable<Root, Value> {
// Required methods
fn get<'a>(&self, root: &'a Root) -> &'a Value;
fn get_fn(&self) -> for<'a> fn(&'a Root) -> &'a Value;
// Provided method
fn iter<'a>(
&self,
slice: &'a [Root],
) -> Box<dyn Iterator<Item = &'a Value> + 'a>
where Self: Sized { ... }
}