pub trait PredicateEmittingRelation<Infcx, I = I>: TypeRelation<I>where
Infcx: InferCtxtLike<Interner = I>,
I: Interner,{
// Required methods
fn span(&self) -> I::Span;
fn param_env(&self) -> I::ParamEnv;
fn register_goals(
&mut self,
obligations: impl IntoIterator<Item = Goal<I, I::Predicate>>,
);
fn register_predicates(
&mut self,
obligations: impl IntoIterator<Item: Upcast<I, I::Predicate>>,
);
}Required Methods§
fn span(&self) -> I::Span
fn param_env(&self) -> I::ParamEnv
Sourcefn register_goals(
&mut self,
obligations: impl IntoIterator<Item = Goal<I, I::Predicate>>,
)
fn register_goals( &mut self, obligations: impl IntoIterator<Item = Goal<I, I::Predicate>>, )
Register obligations that must hold in order for this relation to hold
Sourcefn register_predicates(
&mut self,
obligations: impl IntoIterator<Item: Upcast<I, I::Predicate>>,
)
fn register_predicates( &mut self, obligations: impl IntoIterator<Item: Upcast<I, I::Predicate>>, )
Register predicates that must hold in order for this relation to hold.
This uses the default param_env of the obligation.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".