Trait rustc_infer::infer::relate::combine::ObligationEmittingRelation
source · pub trait ObligationEmittingRelation<'tcx>: TypeRelation<'tcx> {
// Required methods
fn span(&self) -> Span;
fn param_env(&self) -> ParamEnv<'tcx>;
fn structurally_relate_aliases(&self) -> StructurallyRelateAliases;
fn register_obligations(&mut self, obligations: PredicateObligations<'tcx>);
fn register_predicates(
&mut self,
obligations: impl IntoIterator<Item: ToPredicate<'tcx>>
);
fn register_type_relate_obligation(&mut self, a: Ty<'tcx>, b: Ty<'tcx>);
}
Required Methods§
fn span(&self) -> Span
fn param_env(&self) -> ParamEnv<'tcx>
sourcefn structurally_relate_aliases(&self) -> StructurallyRelateAliases
fn structurally_relate_aliases(&self) -> StructurallyRelateAliases
Whether aliases should be related structurally. This is pretty much
always No
unless you’re equating in some specific locations of the
new solver. See the comments in these use-cases for more details.
sourcefn register_obligations(&mut self, obligations: PredicateObligations<'tcx>)
fn register_obligations(&mut self, obligations: PredicateObligations<'tcx>)
Register obligations that must hold in order for this relation to hold
sourcefn register_predicates(
&mut self,
obligations: impl IntoIterator<Item: ToPredicate<'tcx>>
)
fn register_predicates( &mut self, obligations: impl IntoIterator<Item: ToPredicate<'tcx>> )
Register predicates that must hold in order for this relation to hold. Uses
a default obligation cause, ObligationEmittingRelation::register_obligations
should
be used if control over the obligation causes is required.
sourcefn register_type_relate_obligation(&mut self, a: Ty<'tcx>, b: Ty<'tcx>)
fn register_type_relate_obligation(&mut self, a: Ty<'tcx>, b: Ty<'tcx>)
Register AliasRelate
obligation(s) that both types must be related to each other.
Object Safety§
This trait is not object safe.