pub fn given_all<T, I, A, F>(&mut self, items: I, closure: F) -> InferenceResult
    where
        T: Factoid + Output + 'static,
        A: IntoExp<T>,
        I: IntoIterator<Item = A>,
        F: Fn(&mut Solver<'rules>, Vec<T::Concrete>) -> InferenceResult + 'rules,
    {
        let rule = GivenAllRule::new(items.into_iter().map(|it| it.bex()).collect(), closure);
        self.rules.push(Box::new(rule));
        Ok(())
    }
/// Adds rules to the solver once the value of all expressions are known.
///
/// For instance, one could write:
/// ```text
/// solver.given(input.rank, |solver, ir|
///     (0..ir).map(|i| solver.equals(input.shape[ir], 0))
/// );
/// ```
Adds rules to the solver once the value of all expressions are known.
Adds rules to the solver once the value of all expressions are known .
pub fn given_all<T, I, A, F>(&mut self, items: I, closure: F) -> InferenceResult
    where
        T: Factoid + Output + 'static,
        A: IntoExp<T>,
        I: IntoIterator<Item = A>,
        F: Fn(&mut Solver<'rules>, Vec<T::Concrete>) -> InferenceResult + 'rules,
    {
        let rule = GivenAllRule::new(items.into_iter().map(|it| it.bex()).collect(), closure);
        self.rules.push(Box::new(rule));
        Ok(())
    }
pub fn given_all < T , I , A , F > ( & mut self , items : I , closure : F ) -> InferenceResult where T : Factoid + Output + ' static , A : IntoExp < T > , I : IntoIterator < Item = A > , F : Fn ( & mut Solver < ' rules > , Vec < T :: Concrete > ) -> InferenceResult + ' rules , { let rule = GivenAllRule :: new ( items . into_iter ( ) . map ( | it | it . bex ( ) ) . collect ( ) , closure ) ; self . rules . push ( Box :: new ( rule ) ) ; Ok ( ( ) ) }
Adds rules to the solver once the value of all expressions are known.
Adds rules to the solver once the value of all expressions are known .
&mut self
items
I
closure
F
&mut self
items
I
closure
F