[−][src]Function canrun::goals::project::assert_2
pub fn assert_2<'a, A, AV, B, BV, D, F>(a: AV, b: BV, func: F) -> Goal<'a, D> where
A: Debug + 'a,
AV: IntoVal<A>,
B: Debug + 'a,
BV: IntoVal<B>,
D: DomainType<'a, A> + DomainType<'a, B>,
F: Fn(&A, &B) -> bool + 'a,
Create a projection goal that succeeds if the resolved values pass an assertion test.
use canrun::{Goal, all, unify, var, assert_2}; use canrun::example::I32; let (x, y) = (var(), var()); let goal: Goal<I32> = all![ unify(1, x), unify(2, y), assert_2(x, y, |x, y| x < y), ]; let result: Vec<_> = goal.query((x, y)).collect(); assert_eq!(result, vec![(1, 2)])