[][src]Trait chalk_engine::slg::UnificationOps

pub trait UnificationOps<I: Interner> {
    pub fn instantiate_binders_universally(
        &mut self,
        interner: &I,
        arg: Binders<Goal<I>>
    ) -> Goal<I>;
pub fn instantiate_binders_existentially(
        &mut self,
        interner: &I,
        arg: Binders<Goal<I>>
    ) -> Goal<I>;
pub fn debug_ex_clause<'v>(
        &mut self,
        interner: &I,
        value: &'v ExClause<I>
    ) -> Box<dyn Debug + 'v>;
pub fn fully_canonicalize_goal(
        &mut self,
        interner: &I,
        value: InEnvironment<Goal<I>>
    ) -> (UCanonical<InEnvironment<Goal<I>>>, UniverseMap);
pub fn canonicalize_ex_clause(
        &mut self,
        interner: &I,
        value: ExClause<I>
    ) -> Canonical<ExClause<I>>;
pub fn canonicalize_constrained_subst(
        &mut self,
        interner: &I,
        subst: Substitution<I>,
        constraints: Vec<InEnvironment<Constraint<I>>>
    ) -> Canonical<ConstrainedSubst<I>>;
pub fn canonicalize_answer_subst(
        &mut self,
        interner: &I,
        subst: Substitution<I>,
        constraints: Vec<InEnvironment<Constraint<I>>>,
        delayed_subgoals: Vec<InEnvironment<Goal<I>>>
    ) -> Canonical<AnswerSubst<I>>;
pub fn invert_goal(
        &mut self,
        interner: &I,
        value: InEnvironment<Goal<I>>
    ) -> Option<InEnvironment<Goal<I>>>;
pub fn relate_generic_args_into_ex_clause(
        &mut self,
        interner: &I,
        db: &dyn UnificationDatabase<I>,
        environment: &Environment<I>,
        variance: Variance,
        a: &GenericArg<I>,
        b: &GenericArg<I>,
        ex_clause: &mut ExClause<I>
    ) -> Fallible<()>;
pub fn relate_tys_into_ex_clause(
        &mut self,
        interner: &I,
        db: &dyn UnificationDatabase<I>,
        environment: &Environment<I>,
        variance: Variance,
        a: &Ty<I>,
        b: &Ty<I>,
        ex_clause: &mut ExClause<I>
    ) -> FallibleOrFloundered<()>; }

Methods for unifying and manipulating terms and binders.

Required methods

pub fn instantiate_binders_universally(
    &mut self,
    interner: &I,
    arg: Binders<Goal<I>>
) -> Goal<I>
[src]

pub fn instantiate_binders_existentially(
    &mut self,
    interner: &I,
    arg: Binders<Goal<I>>
) -> Goal<I>
[src]

pub fn debug_ex_clause<'v>(
    &mut self,
    interner: &I,
    value: &'v ExClause<I>
) -> Box<dyn Debug + 'v>
[src]

pub fn fully_canonicalize_goal(
    &mut self,
    interner: &I,
    value: InEnvironment<Goal<I>>
) -> (UCanonical<InEnvironment<Goal<I>>>, UniverseMap)
[src]

pub fn canonicalize_ex_clause(
    &mut self,
    interner: &I,
    value: ExClause<I>
) -> Canonical<ExClause<I>>
[src]

pub fn canonicalize_constrained_subst(
    &mut self,
    interner: &I,
    subst: Substitution<I>,
    constraints: Vec<InEnvironment<Constraint<I>>>
) -> Canonical<ConstrainedSubst<I>>
[src]

pub fn canonicalize_answer_subst(
    &mut self,
    interner: &I,
    subst: Substitution<I>,
    constraints: Vec<InEnvironment<Constraint<I>>>,
    delayed_subgoals: Vec<InEnvironment<Goal<I>>>
) -> Canonical<AnswerSubst<I>>
[src]

pub fn invert_goal(
    &mut self,
    interner: &I,
    value: InEnvironment<Goal<I>>
) -> Option<InEnvironment<Goal<I>>>
[src]

pub fn relate_generic_args_into_ex_clause(
    &mut self,
    interner: &I,
    db: &dyn UnificationDatabase<I>,
    environment: &Environment<I>,
    variance: Variance,
    a: &GenericArg<I>,
    b: &GenericArg<I>,
    ex_clause: &mut ExClause<I>
) -> Fallible<()>
[src]

First unify the parameters, then add the residual subgoals as new subgoals of the ex-clause. Also add region constraints.

If the parameters fail to unify, then Error is returned

pub fn relate_tys_into_ex_clause(
    &mut self,
    interner: &I,
    db: &dyn UnificationDatabase<I>,
    environment: &Environment<I>,
    variance: Variance,
    a: &Ty<I>,
    b: &Ty<I>,
    ex_clause: &mut ExClause<I>
) -> FallibleOrFloundered<()>
[src]

Loading content...

Implementors

impl<I: Interner> UnificationOps<I> for TruncatingInferenceTable<I>[src]

Loading content...