pub enum Stability {
Stable,
Unstable(Symbol),
Forbidden {
reason: &'static str,
},
}
Expand description
Stability information for target features.
Variants§
Stable
This target feature is stable, it can be used in #[target_feature]
and
#[cfg(target_feature)]
.
Unstable(Symbol)
This target feature is unstable. It is only present in #[cfg(target_feature)]
on
nightly and using it in #[target_feature]
requires enabling the given nightly feature.
Tuple Fields
Forbidden
This feature can not be set via -Ctarget-feature
or #[target_feature]
, it can only be
set in the target spec. It is never set in cfg(target_feature)
. Used in
particular for features are actually ABI configuration flags (not all targets are as nice as
RISC-V and have an explicit way to set the ABI separate from target features).
Implementations§
Source§impl Stability
impl Stability
Sourcepub fn in_cfg(&self) -> bool
pub fn in_cfg(&self) -> bool
Returns whether the feature can be used in cfg(target_feature)
ever.
(It might still be nightly-only even if this returns true
, so make sure to also check
requires_nightly
.)
Sourcepub fn requires_nightly(&self) -> Option<Symbol>
pub fn requires_nightly(&self) -> Option<Symbol>
Returns the nightly feature that is required to toggle this target feature via
#[target_feature]
/-Ctarget-feature
or to test it via cfg(target_feature)
.
(For cfg
we only care whether the feature is nightly or not, we don’t require
the feature gate to actually be enabled when using a nightly compiler.)
Before calling this, ensure the feature is even permitted for this use:
- for
#[target_feature]
/-Ctarget-feature
, checkallow_toggle()
- for
cfg(target_feature)
, checkin_cfg
Sourcepub fn toggle_allowed(&self) -> Result<(), &'static str>
pub fn toggle_allowed(&self) -> Result<(), &'static str>
Returns whether the feature may be toggled via #[target_feature]
or -Ctarget-feature
.
(It might still be nightly-only even if this returns true
, so make sure to also check
requires_nightly
.)
Trait Implementations§
Source§impl<CTX> HashStable<CTX> for Stability
impl<CTX> HashStable<CTX> for Stability
fn hash_stable(&self, hcx: &mut CTX, hasher: &mut StableHasher)
impl Copy for Stability
Auto Trait Implementations§
impl DynSend for Stability
impl DynSync for Stability
impl Freeze for Stability
impl RefUnwindSafe for Stability
impl Send for Stability
impl Sync for Stability
impl Unpin for Stability
impl UnwindSafe for Stability
Blanket Implementations§
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§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<T> Pointable for T
impl<T> Pointable for 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,
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: 24 bytes
Size for each variant:
Stable
: 0 bytesUnstable
: 4 bytesForbidden
: 20 bytes