Trait rustc_trait_selection::traits::TraitEngine [−][src]
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>
) -> &'tcx TyS<'tcx>;
fn register_predicate_obligation(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
obligation: Obligation<'tcx, Predicate<'tcx>>
);
fn select_all_or_error(
&mut self,
infcx: &InferCtxt<'_, 'tcx>
) -> Result<(), Vec<FulfillmentError<'tcx>, Global>>;
fn select_where_possible(
&mut self,
infcx: &InferCtxt<'_, 'tcx>
) -> Result<(), Vec<FulfillmentError<'tcx>, Global>>;
fn pending_obligations(
&self
) -> Vec<Obligation<'tcx, Predicate<'tcx>>, Global>;
fn relationships(
&mut self
) -> &mut HashMap<TyVid, FoundRelationships, BuildHasherDefault<FxHasher>>;
fn register_bound(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
param_env: ParamEnv<'tcx>,
ty: &'tcx TyS<'tcx>,
def_id: DefId,
cause: ObligationCause<'tcx>
) { ... }
fn select_all_with_constness_or_error(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
_constness: Constness
) -> Result<(), Vec<FulfillmentError<'tcx>, Global>> { ... }
fn select_with_constness_where_possible(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
_constness: Constness
) -> Result<(), Vec<FulfillmentError<'tcx>, Global>> { ... }
}
Required methods
fn normalize_projection_type(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
param_env: ParamEnv<'tcx>,
projection_ty: ProjectionTy<'tcx>,
cause: ObligationCause<'tcx>
) -> &'tcx TyS<'tcx>
fn register_predicate_obligation(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
obligation: Obligation<'tcx, Predicate<'tcx>>
)
fn select_all_or_error(
&mut self,
infcx: &InferCtxt<'_, 'tcx>
) -> Result<(), Vec<FulfillmentError<'tcx>, Global>>
fn select_where_possible(
&mut self,
infcx: &InferCtxt<'_, 'tcx>
) -> Result<(), Vec<FulfillmentError<'tcx>, Global>>
fn pending_obligations(&self) -> Vec<Obligation<'tcx, Predicate<'tcx>>, Global>
fn relationships(
&mut self
) -> &mut HashMap<TyVid, FoundRelationships, BuildHasherDefault<FxHasher>>
Provided methods
fn register_bound(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
param_env: ParamEnv<'tcx>,
ty: &'tcx TyS<'tcx>,
def_id: DefId,
cause: ObligationCause<'tcx>
)
fn register_bound(
&mut self,
infcx: &InferCtxt<'_, 'tcx>,
param_env: ParamEnv<'tcx>,
ty: &'tcx TyS<'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
).