pub fn function<F, T>(function: F) -> FnPredicate<F, T>where
F: Fn(&T) -> bool,
T: ?Sized,
Expand description
Creates a new predicate that wraps over the given function. The returned
type implements Predicate
and therefore has all combinators available to
it.
Examples
use predicates::prelude::*;
struct Example {
string: String,
number: i32,
}
let string_check = predicate::function(|x: &Example| x.string == "hello");
let number_check = predicate::function(|x: &Example| x.number == 42);
let predicate_fn = string_check.and(number_check);
let good_example = Example { string: "hello".into(), number: 42 };
assert_eq!(true, predicate_fn.eval(&good_example));
let bad_example = Example { string: "goodbye".into(), number: 0 };
assert_eq!(false, predicate_fn.eval(&bad_example));