Enum rustc_middle::ty::trait_def::TraitSpecializationKind
source · pub enum TraitSpecializationKind {
None,
Marker,
AlwaysApplicable,
}
Expand description
Whether this trait is treated specially by the standard library specialization lint.
Variants§
None
The default. Specializing on this trait is not allowed.
Marker
Specializing on this trait is allowed because it doesn’t have any
methods. For example Sized
or FusedIterator
.
Applies to traits with the rustc_unsafe_specialization_marker
attribute.
AlwaysApplicable
Specializing on this trait is allowed because all of the impls of this
trait are “always applicable”. Always applicable means that if
X<'x>: T<'y>
for any lifetimes, then for<'a, 'b> X<'a>: T<'b>
.
Applies to traits with the rustc_specialization_trait
attribute.
Trait Implementations§
source§impl Clone for TraitSpecializationKind
impl Clone for TraitSpecializationKind
source§fn clone(&self) -> TraitSpecializationKind
fn clone(&self) -> TraitSpecializationKind
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<__D: SpanDecoder> Decodable<__D> for TraitSpecializationKind
impl<__D: SpanDecoder> Decodable<__D> for TraitSpecializationKind
source§impl<__E: SpanEncoder> Encodable<__E> for TraitSpecializationKind
impl<__E: SpanEncoder> Encodable<__E> for TraitSpecializationKind
source§impl<'__ctx> HashStable<StableHashingContext<'__ctx>> for TraitSpecializationKind
impl<'__ctx> HashStable<StableHashingContext<'__ctx>> for TraitSpecializationKind
fn hash_stable( &self, __hcx: &mut StableHashingContext<'__ctx>, __hasher: &mut StableHasher, )
source§impl PartialEq for TraitSpecializationKind
impl PartialEq for TraitSpecializationKind
source§fn eq(&self, other: &TraitSpecializationKind) -> bool
fn eq(&self, other: &TraitSpecializationKind) -> bool
self
and other
values to be equal, and is used
by ==
.impl Copy for TraitSpecializationKind
impl StructuralPartialEq for TraitSpecializationKind
Auto Trait Implementations§
impl DynSend for TraitSpecializationKind
impl DynSync for TraitSpecializationKind
impl Freeze for TraitSpecializationKind
impl RefUnwindSafe for TraitSpecializationKind
impl Send for TraitSpecializationKind
impl Sync for TraitSpecializationKind
impl Unpin for TraitSpecializationKind
impl UnwindSafe for TraitSpecializationKind
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<'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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
source§impl<T> Filterable for T
impl<T> Filterable for T
source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
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<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§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<T> Pointable for T
impl<T> Pointable for T
source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> 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: 1 byte
Size for each variant:
None
: 0 bytesMarker
: 0 bytesAlwaysApplicable
: 0 bytes