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
sourceimpl 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
sourceimpl Clone for DeepRejectCtxt
impl Clone for DeepRejectCtxt
sourcefn clone(&self) -> DeepRejectCtxt
fn clone(&self) -> DeepRejectCtxt
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresourceimpl 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
sourceimpl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on(self, arena: &'a Arena<'tcx>) -> &'a mut T
fn allocate_from_iter(
arena: &'a Arena<'tcx>,
iter: impl IntoIterator<Item = T>
) -> &'a mut [T]ⓘNotable traits for &[u8]impl Read for &[u8]impl Write for &mut [u8]
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
sourceimpl<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,
sourceimpl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
sourceimpl<CTX, T> Value<CTX> for Twhere
CTX: DepContext,
impl<CTX, T> Value<CTX> for Twhere
CTX: DepContext,
default fn from_cycle_error(tcx: CTX) -> T
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
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