predicates

Trait Predicate

Source
pub trait Predicate<Item>: PredicateReflection
where Item: ?Sized,
{ // Required method fn eval(&self, variable: &Item) -> bool; // Provided method fn find_case<'a>( &'a self, expected: bool, variable: &Item, ) -> Option<Case<'a>> { ... } }
Expand description

Trait for generically evaluating a type against a dynamically created predicate function.

The exact meaning of eval depends on the situation, but will usually mean that the evaluated item is in some sort of pre-defined set. This is different from Ord and Eq in that an item will almost never be the same type as the implementing Predicate type.

Required Methods§

Source

fn eval(&self, variable: &Item) -> bool

Execute this Predicate against variable, returning the resulting boolean.

Provided Methods§

Source

fn find_case<'a>(&'a self, expected: bool, variable: &Item) -> Option<Case<'a>>

Find a case that proves this predicate as expected when run against variable.

Implementors§

Source§

impl Predicate<str> for StrFilePredicate

Source§

impl Predicate<str> for ContainsPredicate

Source§

impl Predicate<str> for DifferencePredicate

Source§

impl Predicate<str> for EndsWithPredicate

Source§

impl Predicate<str> for IsEmptyPredicate

Source§

impl Predicate<str> for MatchesPredicate

Source§

impl Predicate<str> for StartsWithPredicate

Source§

impl Predicate<Path> for BinaryFilePredicate

Source§

impl Predicate<Path> for ExistencePredicate

Source§

impl Predicate<Path> for FileTypePredicate

Source§

impl Predicate<Path> for StrFilePredicate

Source§

impl Predicate<[u8]> for BinaryFilePredicate

Source§

impl<F, T> Predicate<T> for FnPredicate<F, T>
where F: Fn(&T) -> bool, T: ?Sized,

Source§

impl<Item> Predicate<Item> for BoxPredicate<Item>
where Item: ?Sized,

Source§

impl<Item: ?Sized> Predicate<Item> for BooleanPredicate

Source§

impl<M1, M2, Item> Predicate<Item> for AndPredicate<M1, M2, Item>
where M1: Predicate<Item>, M2: Predicate<Item>, Item: ?Sized,

Source§

impl<M1, M2, Item> Predicate<Item> for OrPredicate<M1, M2, Item>
where M1: Predicate<Item>, M2: Predicate<Item>, Item: ?Sized,

Source§

impl<M, Item> Predicate<Item> for NotPredicate<M, Item>
where M: Predicate<Item>, Item: ?Sized,

Source§

impl<M, Item> Predicate<Item> for NamePredicate<M, Item>
where M: Predicate<Item>, Item: ?Sized,

Source§

impl<P> Predicate<str> for TrimPredicate<P>
where P: Predicate<str>,

Source§

impl<P> Predicate<OsStr> for Utf8Predicate<P>
where P: Predicate<str>,

Source§

impl<P> Predicate<Path> for FileContentPredicate<P>
where P: Predicate<[u8]>,

Source§

impl<P> Predicate<[u8]> for Utf8Predicate<P>
where P: Predicate<str>,

Source§

impl<P, T> Predicate<P> for HashableInPredicate<T>
where T: Borrow<P> + Hash + Eq + Debug, P: Hash + Eq + Debug + ?Sized,

Source§

impl<P, T> Predicate<P> for InPredicate<T>
where T: Borrow<P> + PartialEq + Debug, P: PartialEq + Debug + ?Sized,

Source§

impl<P, T> Predicate<P> for OrdInPredicate<T>
where T: Borrow<P> + Ord + Debug, P: Ord + Debug + ?Sized,

Source§

impl<P, T> Predicate<P> for EqPredicate<T>
where T: Borrow<P> + Debug, P: Debug + PartialEq + ?Sized,

Source§

impl<P, T> Predicate<P> for OrdPredicate<T>
where T: Borrow<P> + Debug, P: Debug + PartialOrd + ?Sized,

impl<'a, P, T> Predicate<T> for AncestorPredicate<P>
where T: Captured<'a>, P: for<'p> Predicate<CapturedSpan<'p>>,

impl<'a, P, T> Predicate<T> for ParentPredicate<P>
where T: Captured<'a>, P: for<'p> Predicate<CapturedSpan<'p>>,

impl<'a, P: Predicate<TracedValue>, T: Captured<'a>> Predicate<T> for FieldPredicate<P>

impl<'a, P: Predicate<str>, T: Captured<'a>> Predicate<T> for TargetPredicate<P>

impl<'a, P: Predicate<Level>, T: Captured<'a>> Predicate<T> for LevelPredicate<P>

impl<T, P> Predicate<TracedValue> for ValuePredicate<T, P>
where T: for<'a> FromTracedValue<'a> + ?Sized, P: Predicate<T>,

impl<T, U, Item: ?Sized> Predicate<Item> for And<T, U>
where T: Predicate<Item>, U: Predicate<Item>,

impl<T, U, Item: ?Sized> Predicate<Item> for Or<T, U>
where T: Predicate<Item>, U: Predicate<Item>,