Trait rustc_infer::traits::engine::TraitEngine
source · pub trait TraitEngine<'tcx>: 'tcx {
fn normalize_projection_type(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
param_env: ParamEnv<'tcx>,
projection_ty: ProjectionTy<'tcx>,
cause: ObligationCause<'tcx>
) -> Ty<'tcx>;
fn register_predicate_obligation(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
obligation: PredicateObligation<'tcx>
);
fn select_all_or_error(
&mut self,
infcx: &InferCtxt<'_, 'tcx>
) -> Vec<FulfillmentError<'tcx>>;
fn select_where_possible(
&mut self,
infcx: &InferCtxt<'_, 'tcx>
) -> Vec<FulfillmentError<'tcx>>;
fn pending_obligations(&self) -> Vec<PredicateObligation<'tcx>>;
fn relationships(&mut self) -> &mut FxHashMap<TyVid, FoundRelationships>;
fn register_bound(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
param_env: ParamEnv<'tcx>,
ty: Ty<'tcx>,
def_id: DefId,
cause: ObligationCause<'tcx>
) { ... }
}
Required Methods
sourcefn normalize_projection_type(
fn normalize_projection_type(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
param_env: ParamEnv<'tcx>,
projection_ty: ProjectionTy<'tcx>,
cause: ObligationCause<'tcx>
) -> Ty<'tcx>
sourcefn register_predicate_obligation(
fn register_predicate_obligation(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
obligation: PredicateObligation<'tcx>
)
sourcefn select_all_or_error(
fn select_all_or_error(
&mut self,
infcx: &InferCtxt<'_, 'tcx>
) -> Vec<FulfillmentError<'tcx>>
sourcefn select_where_possible(
fn select_where_possible(
&mut self,
infcx: &InferCtxt<'_, 'tcx>
) -> Vec<FulfillmentError<'tcx>>
source
fn pending_obligations(&self) -> Vec<PredicateObligation<'tcx>>
source
fn relationships(&mut self) -> &mut FxHashMap<TyVid, FoundRelationships>
Provided Methods
sourcefn register_bound(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
param_env: ParamEnv<'tcx>,
ty: Ty<'tcx>,
def_id: DefId,
cause: ObligationCause<'tcx>
)
fn register_bound(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
param_env: ParamEnv<'tcx>,
ty: Ty<'tcx>,
def_id: DefId,
cause: ObligationCause<'tcx>
)
Requires that ty
must implement the trait with def_id
in
the given environment. This trait must not have any type
parameters (except for Self
).