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>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl<'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>
Returns the “default value” for a type. Read more
sourceimpl<'tcx> Ord for VarianceDiagInfo<'tcx>
impl<'tcx> Ord for VarianceDiagInfo<'tcx>
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
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &VarianceDiagInfo<'tcx>) -> bool
fn ne(&self, other: &VarianceDiagInfo<'tcx>) -> bool
This method tests for !=
.
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>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
impl<'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 T where
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for T where
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 T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
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>>::Output where
I: Iterator<Item = T>,
F: FnOnce(&[T]) -> R,
sourceimpl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
impl<'a, T> Captures<'a> for T where
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