Enum rustc_middle::ty::VarianceDiagInfo
source · pub enum VarianceDiagInfo<'tcx> {
None,
Invariant {
ty: Ty<'tcx>,
param_index: u32,
},
}
Expand description
Extra information about why we ended up with a particular variance.
This is only used to add more information to error messages, and
has no effect on soundness. While choosing the ‘wrong’ VarianceDiagInfo
may lead to confusing notes in error messages, it will never cause
a miscompilation or unsoundness.
When in doubt, use VarianceDiagInfo::default()
Variants§
None
No additional information - this is the default. We will not add any additional information to error messages.
Invariant
Fields
We switched our variance because a generic argument occurs inside the invariant generic argument of another type.
Implementations§
source§impl<'tcx> VarianceDiagInfo<'tcx>
impl<'tcx> VarianceDiagInfo<'tcx>
sourcepub fn xform(self, other: VarianceDiagInfo<'tcx>) -> VarianceDiagInfo<'tcx>
pub fn xform(self, other: VarianceDiagInfo<'tcx>) -> VarianceDiagInfo<'tcx>
Mirrors Variance::xform
- used to ‘combine’ the existing
and new VarianceDiagInfo
s when our variance changes.
Trait Implementations§
source§impl<'tcx> Clone for VarianceDiagInfo<'tcx>
impl<'tcx> Clone for VarianceDiagInfo<'tcx>
source§fn clone(&self) -> VarianceDiagInfo<'tcx>
fn clone(&self) -> VarianceDiagInfo<'tcx>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<'tcx> Debug for VarianceDiagInfo<'tcx>
impl<'tcx> Debug for VarianceDiagInfo<'tcx>
source§impl<'tcx> Default for VarianceDiagInfo<'tcx>
impl<'tcx> Default for VarianceDiagInfo<'tcx>
source§fn default() -> VarianceDiagInfo<'tcx>
fn default() -> VarianceDiagInfo<'tcx>
source§impl<'tcx> Ord for VarianceDiagInfo<'tcx>
impl<'tcx> Ord for VarianceDiagInfo<'tcx>
source§fn cmp(&self, other: &VarianceDiagInfo<'tcx>) -> Ordering
fn cmp(&self, other: &VarianceDiagInfo<'tcx>) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§impl<'tcx> PartialEq<VarianceDiagInfo<'tcx>> for VarianceDiagInfo<'tcx>
impl<'tcx> PartialEq<VarianceDiagInfo<'tcx>> for VarianceDiagInfo<'tcx>
source§fn eq(&self, other: &VarianceDiagInfo<'tcx>) -> bool
fn eq(&self, other: &VarianceDiagInfo<'tcx>) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl<'tcx> PartialOrd<VarianceDiagInfo<'tcx>> for VarianceDiagInfo<'tcx>
impl<'tcx> PartialOrd<VarianceDiagInfo<'tcx>> for VarianceDiagInfo<'tcx>
source§fn partial_cmp(&self, other: &VarianceDiagInfo<'tcx>) -> Option<Ordering>
fn partial_cmp(&self, other: &VarianceDiagInfo<'tcx>) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moreimpl<'tcx> Copy for VarianceDiagInfo<'tcx>
impl<'tcx> Eq for VarianceDiagInfo<'tcx>
impl<'tcx> StructuralEq for VarianceDiagInfo<'tcx>
impl<'tcx> StructuralPartialEq for VarianceDiagInfo<'tcx>
Auto Trait Implementations§
impl<'tcx> !RefUnwindSafe for VarianceDiagInfo<'tcx>
impl<'tcx> Send for VarianceDiagInfo<'tcx>
impl<'tcx> Sync for VarianceDiagInfo<'tcx>
impl<'tcx> Unpin for VarianceDiagInfo<'tcx>
impl<'tcx> !UnwindSafe for VarianceDiagInfo<'tcx>
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: 16 bytes
Size for each variant:
None
: 0 bytesInvariant
: 12 bytes