pub(super) trait GoalKind<'tcx>: TypeFoldable<TyCtxt<'tcx>> + Copy + Eq + Display {
Show 25 methods // Required methods fn self_ty(self) -> Ty<'tcx>; fn trait_ref(self, tcx: TyCtxt<'tcx>) -> TraitRef<'tcx>; fn with_self_ty(self, tcx: TyCtxt<'tcx>, self_ty: Ty<'tcx>) -> Self; fn trait_def_id(self, tcx: TyCtxt<'tcx>) -> DefId; fn probe_and_match_goal_against_assumption( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, assumption: Predicate<'tcx>, then: impl FnOnce(&mut EvalCtxt<'_, 'tcx>) -> QueryResult<'tcx> ) -> QueryResult<'tcx>; fn consider_impl_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, impl_def_id: DefId ) -> QueryResult<'tcx>; fn consider_auto_trait_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; fn consider_trait_alias_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; fn consider_builtin_sized_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; fn consider_builtin_copy_clone_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; fn consider_builtin_pointer_like_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; fn consider_builtin_fn_ptr_trait_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; fn consider_builtin_fn_trait_candidates( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, kind: ClosureKind ) -> QueryResult<'tcx>; fn consider_builtin_tuple_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; fn consider_builtin_pointee_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; fn consider_builtin_future_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; fn consider_builtin_generator_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; fn consider_builtin_unsize_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; fn consider_builtin_dyn_upcast_candidates( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> Vec<CanonicalResponse<'tcx>>; fn consider_builtin_discriminant_kind_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; fn consider_builtin_destruct_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; fn consider_builtin_transmute_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>; // Provided methods fn consider_implied_clause( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, assumption: Predicate<'tcx>, requirements: impl IntoIterator<Item = Goal<'tcx, Predicate<'tcx>>> ) -> QueryResult<'tcx> { ... } fn consider_alias_bound_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, assumption: Predicate<'tcx> ) -> QueryResult<'tcx> { ... } fn consider_object_bound_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, assumption: Predicate<'tcx> ) -> QueryResult<'tcx> { ... }
}
Expand description

Methods used to assemble candidates for either trait or projection goals.

Required Methods§

source

fn self_ty(self) -> Ty<'tcx>

source

fn trait_ref(self, tcx: TyCtxt<'tcx>) -> TraitRef<'tcx>

source

fn with_self_ty(self, tcx: TyCtxt<'tcx>, self_ty: Ty<'tcx>) -> Self

source

fn trait_def_id(self, tcx: TyCtxt<'tcx>) -> DefId

source

fn probe_and_match_goal_against_assumption( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, assumption: Predicate<'tcx>, then: impl FnOnce(&mut EvalCtxt<'_, 'tcx>) -> QueryResult<'tcx> ) -> QueryResult<'tcx>

source

fn consider_impl_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, impl_def_id: DefId ) -> QueryResult<'tcx>

source

fn consider_auto_trait_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source

fn consider_trait_alias_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source

fn consider_builtin_sized_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source

fn consider_builtin_copy_clone_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source

fn consider_builtin_pointer_like_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source

fn consider_builtin_fn_ptr_trait_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source

fn consider_builtin_fn_trait_candidates( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, kind: ClosureKind ) -> QueryResult<'tcx>

source

fn consider_builtin_tuple_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source

fn consider_builtin_pointee_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source

fn consider_builtin_future_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source

fn consider_builtin_generator_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source

fn consider_builtin_unsize_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source

fn consider_builtin_dyn_upcast_candidates( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> Vec<CanonicalResponse<'tcx>>

source

fn consider_builtin_discriminant_kind_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source

fn consider_builtin_destruct_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source

fn consider_builtin_transmute_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

Provided Methods§

source

fn consider_implied_clause( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, assumption: Predicate<'tcx>, requirements: impl IntoIterator<Item = Goal<'tcx, Predicate<'tcx>>> ) -> QueryResult<'tcx>

source

fn consider_alias_bound_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, assumption: Predicate<'tcx> ) -> QueryResult<'tcx>

Consider a bound originating from the item bounds of an alias. For this we require that the well-formed requirements of the self type of the goal are “satisfied from the param-env”. See EvalCtxt::validate_alias_bound_self_from_param_env.

source

fn consider_object_bound_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, assumption: Predicate<'tcx> ) -> QueryResult<'tcx>

Implementations on Foreign Types§

source§

impl<'tcx> GoalKind<'tcx> for TraitPredicate<'tcx>

source§

fn self_ty(self) -> Ty<'tcx>

source§

fn trait_ref(self, _: TyCtxt<'tcx>) -> TraitRef<'tcx>

source§

fn with_self_ty(self, tcx: TyCtxt<'tcx>, self_ty: Ty<'tcx>) -> Self

source§

fn trait_def_id(self, _: TyCtxt<'tcx>) -> DefId

source§

fn consider_impl_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, TraitPredicate<'tcx>>, impl_def_id: DefId ) -> QueryResult<'tcx>

source§

fn probe_and_match_goal_against_assumption( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, assumption: Predicate<'tcx>, then: impl FnOnce(&mut EvalCtxt<'_, 'tcx>) -> QueryResult<'tcx> ) -> QueryResult<'tcx>

source§

fn consider_auto_trait_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_trait_alias_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_sized_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_copy_clone_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_pointer_like_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_fn_ptr_trait_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_fn_trait_candidates( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, goal_kind: ClosureKind ) -> QueryResult<'tcx>

source§

fn consider_builtin_tuple_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_pointee_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_future_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_generator_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_unsize_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_dyn_upcast_candidates( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> Vec<CanonicalResponse<'tcx>>

source§

fn consider_builtin_discriminant_kind_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_destruct_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_transmute_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

impl<'tcx> GoalKind<'tcx> for ProjectionPredicate<'tcx>

source§

fn self_ty(self) -> Ty<'tcx>

source§

fn trait_ref(self, tcx: TyCtxt<'tcx>) -> TraitRef<'tcx>

source§

fn with_self_ty(self, tcx: TyCtxt<'tcx>, self_ty: Ty<'tcx>) -> Self

source§

fn trait_def_id(self, tcx: TyCtxt<'tcx>) -> DefId

source§

fn probe_and_match_goal_against_assumption( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, assumption: Predicate<'tcx>, then: impl FnOnce(&mut EvalCtxt<'_, 'tcx>) -> QueryResult<'tcx> ) -> QueryResult<'tcx>

source§

fn consider_impl_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, ProjectionPredicate<'tcx>>, impl_def_id: DefId ) -> QueryResult<'tcx>

source§

fn consider_auto_trait_candidate( _ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_trait_alias_candidate( _ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_sized_candidate( _ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_copy_clone_candidate( _ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_pointer_like_candidate( _ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_fn_ptr_trait_candidate( _ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_fn_trait_candidates( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self>, goal_kind: ClosureKind ) -> QueryResult<'tcx>

source§

fn consider_builtin_tuple_candidate( _ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_pointee_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_future_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_generator_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_unsize_candidate( _ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_dyn_upcast_candidates( _ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> Vec<CanonicalResponse<'tcx>>

source§

fn consider_builtin_discriminant_kind_candidate( ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_destruct_candidate( _ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

source§

fn consider_builtin_transmute_candidate( _ecx: &mut EvalCtxt<'_, 'tcx>, goal: Goal<'tcx, Self> ) -> QueryResult<'tcx>

Implementors§