pub trait Getter<'a>: Sized {
type Iter: Iterator<Item = Self::Out>;
type Out: PartialEq + Debug + Display;
fn value<S: AsRef<str>>(&self, s: S, f: Filter) -> Option<Self::Out>;
fn values<S: AsRef<str>>(&self, s: S, f: Filter) -> Option<Self::Iter>;
fn local_value<S: AsRef<str>>(&self, s: S, f: Filter) -> Option<PathBuf> { ... }
fn bool_flag<S: AsRef<str>>(&self, s: S, f: Filter) -> bool { ... }
fn sub<S: AsRef<str>>(&self, _: S, _: Filter) -> bool { ... }
fn wrap<R2, F: Fn(Self::Out) -> R2>(self, f: F) -> Wrapper<Self, F> { ... }
fn hold<B>(self, b: B) -> Holder<Self, B>
where
B: Getter<'a>,
Self::Out: From<B::Out>,
B::Out: PartialEq + Debug + Display,
{ ... }
fn grab(&'a self) -> Grabber<'a, Self> { ... }
fn grab_local(&'a self) -> LocalGrabber<'a, Self> { ... }
fn grab_multi(&'a self) -> MultiGrabber<'a, Self> { ... }
}