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