Enum rustc_middle::ty::sty::VarianceDiagInfo
source · 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
ty: Ty<'tcx>
The generic type containing the generic parameter
that changes the variance (e.g. *mut T
, MyStruct<T>
)
param_index: u32
The index of the generic parameter being used
(e.g. 0
for *mut T
, 1
for MyStruct<'CovariantParam, 'InvariantParam>
)
We switched our variance because a generic argument occurs inside the invariant generic argument of another type.
Implementations
sourceimpl<'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
sourceimpl<'tcx> Clone for VarianceDiagInfo<'tcx>
impl<'tcx> Clone for VarianceDiagInfo<'tcx>
sourcefn clone(&self) -> VarianceDiagInfo<'tcx>
fn clone(&self) -> VarianceDiagInfo<'tcx>
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresourceimpl<'tcx> Debug for VarianceDiagInfo<'tcx>
impl<'tcx> Debug for VarianceDiagInfo<'tcx>
sourceimpl<'tcx> Default for VarianceDiagInfo<'tcx>
impl<'tcx> Default for VarianceDiagInfo<'tcx>
sourcefn default() -> VarianceDiagInfo<'tcx>
fn default() -> VarianceDiagInfo<'tcx>
sourceimpl<'tcx> Ord for VarianceDiagInfo<'tcx>
impl<'tcx> Ord for VarianceDiagInfo<'tcx>
sourcefn cmp(&self, other: &VarianceDiagInfo<'tcx>) -> Ordering
fn cmp(&self, other: &VarianceDiagInfo<'tcx>) -> Ordering
1.21.0 · sourcefn max(self, other: Self) -> Self
fn max(self, other: Self) -> Self
1.21.0 · sourcefn min(self, other: Self) -> Self
fn min(self, other: Self) -> Self
1.50.0 · sourcefn clamp(self, min: Self, max: Self) -> Selfwhere
Self: PartialOrd<Self>,
fn clamp(self, min: Self, max: Self) -> Selfwhere
Self: PartialOrd<Self>,
sourceimpl<'tcx> PartialEq<VarianceDiagInfo<'tcx>> for VarianceDiagInfo<'tcx>
impl<'tcx> PartialEq<VarianceDiagInfo<'tcx>> for VarianceDiagInfo<'tcx>
sourcefn eq(&self, other: &VarianceDiagInfo<'tcx>) -> bool
fn eq(&self, other: &VarianceDiagInfo<'tcx>) -> bool
sourceimpl<'tcx> PartialOrd<VarianceDiagInfo<'tcx>> for VarianceDiagInfo<'tcx>
impl<'tcx> PartialOrd<VarianceDiagInfo<'tcx>> for VarianceDiagInfo<'tcx>
sourcefn partial_cmp(&self, other: &VarianceDiagInfo<'tcx>) -> Option<Ordering>
fn partial_cmp(&self, other: &VarianceDiagInfo<'tcx>) -> Option<Ordering>
1.0.0 · sourcefn 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
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: 16 bytes
Size for each variant:
None
: 0 bytesInvariant
: 12 bytes