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 for VarianceDiagInfo<'tcx>
impl<'tcx> PartialEq 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 for VarianceDiagInfo<'tcx>
impl<'tcx> PartialOrd 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> StructuralPartialEq for VarianceDiagInfo<'tcx>
Auto Trait Implementations§
impl<'tcx> DynSend for VarianceDiagInfo<'tcx>
impl<'tcx> DynSync for VarianceDiagInfo<'tcx>
impl<'tcx> Freeze for VarianceDiagInfo<'tcx>
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§
§impl<T> AnyEq for T
impl<T> AnyEq for T
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<'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
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> Filterable for T
impl<T> Filterable for T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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
§impl<T> Pointable for T
impl<T> Pointable 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_error: &CycleError, _guar: ErrorGuaranteed ) -> T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeSendSync for 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