Struct rustc_middle::ty::fast_reject::DeepRejectCtxt
source · pub struct DeepRejectCtxt {
pub treat_obligation_params: TreatParams,
}
Expand description
Given generic arguments from an obligation and an impl, could these two be unified after replacing parameters in the the impl with inference variables.
For obligations, parameters won’t be replaced by inference variables and only unify with themselves. We treat them the same way we treat placeholders.
We also use this function during coherence. For coherence the
impls only have to overlap for some value, so we treat parameters
on both sides like inference variables. This behavior is toggled
using the treat_obligation_params
field.
Fields§
§treat_obligation_params: TreatParams
Implementations§
source§impl DeepRejectCtxt
impl DeepRejectCtxt
pub fn generic_args_may_unify<'tcx>(
self,
obligation_arg: GenericArg<'tcx>,
impl_arg: GenericArg<'tcx>
) -> bool
pub fn types_may_unify<'tcx>(
self,
obligation_ty: Ty<'tcx>,
impl_ty: Ty<'tcx>
) -> bool
pub fn consts_may_unify(
self,
obligation_ct: Const<'_>,
impl_ct: Const<'_>
) -> bool
Trait Implementations§
source§impl Clone for DeepRejectCtxt
impl Clone for DeepRejectCtxt
source§fn clone(&self) -> DeepRejectCtxt
fn clone(&self) -> DeepRejectCtxt
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for DeepRejectCtxt
impl Debug for DeepRejectCtxt
impl Copy for DeepRejectCtxt
Auto Trait Implementations§
impl RefUnwindSafe for DeepRejectCtxt
impl Send for DeepRejectCtxt
impl Sync for DeepRejectCtxt
impl Unpin for DeepRejectCtxt
impl UnwindSafe for DeepRejectCtxt
Blanket Implementations§
source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on<'a>(self, arena: &'a Arena<'tcx>) -> &'a mut T
fn allocate_from_iter<'a>(
arena: &'a Arena<'tcx>,
iter: impl IntoIterator<Item = T>
) -> &'a mut [T] ⓘ
source§impl<T, R> InternIteratorElement<T, R> for T
impl<T, R> InternIteratorElement<T, R> for T
type Output = R
fn intern_with<I, F>(iter: I, f: F) -> <T as InternIteratorElement<T, R>>::Outputwhere
I: Iterator<Item = T>,
F: FnOnce(&[T]) -> R,
source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> T
source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error(tcx: Tcx, _: &[QueryInfo]) -> T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 1 byte