Enum rustc_middle::ty::fast_reject::TreatProjections
source · pub enum TreatProjections {
ForLookup,
NextSolverLookup,
}
Expand description
During fast-rejection, we have the choice of treating projection types as either simplifiable or not, depending on whether we expect the projection to be normalized/rigid.
Variants§
ForLookup
In the old solver we don’t try to normalize projections when looking up impls and only access them by using the current self type. This means that if the self type is a projection which could later be normalized, we must not treat it as rigid.
NextSolverLookup
We can treat projections in the self type as opaque as we separately look up impls for the normalized self type.
Trait Implementations§
source§impl Clone for TreatProjections
impl Clone for TreatProjections
source§fn clone(&self) -> TreatProjections
fn clone(&self) -> TreatProjections
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for TreatProjections
impl Debug for TreatProjections
source§impl PartialEq<TreatProjections> for TreatProjections
impl PartialEq<TreatProjections> for TreatProjections
source§fn eq(&self, other: &TreatProjections) -> bool
fn eq(&self, other: &TreatProjections) -> bool
self
and other
values to be equal, and is used
by ==
.impl Copy for TreatProjections
impl Eq for TreatProjections
impl StructuralEq for TreatProjections
impl StructuralPartialEq for TreatProjections
Auto Trait Implementations§
impl RefUnwindSafe for TreatProjections
impl Send for TreatProjections
impl Sync for TreatProjections
impl Unpin for TreatProjections
impl UnwindSafe for TreatProjections
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
source§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
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, cycle: &[QueryInfo], _guar: ErrorGuaranteed ) -> 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
Size for each variant:
ForLookup
: 0 bytesNextSolverLookup
: 0 bytes