pub(crate) enum Cfg {
True,
False,
Cfg(Symbol, Option<Symbol>),
Not(Box<Cfg>),
Any(Vec<Cfg>),
All(Vec<Cfg>),
}
Variants§
True
Accepts all configurations.
False
Denies all configurations.
Cfg(Symbol, Option<Symbol>)
A generic configuration option, e.g., test
or target_os = "linux"
.
Not(Box<Cfg>)
Negates a configuration requirement, i.e., not(x)
.
Any(Vec<Cfg>)
Union of a list of configuration requirements, i.e., any(...)
.
All(Vec<Cfg>)
Intersection of a list of configuration requirements, i.e., all(...)
.
Implementations§
source§impl Cfg
impl Cfg
sourcefn parse_nested(
nested_cfg: &MetaItemInner,
exclude: &FxHashSet<Cfg>,
) -> Result<Option<Cfg>, InvalidCfgError>
fn parse_nested( nested_cfg: &MetaItemInner, exclude: &FxHashSet<Cfg>, ) -> Result<Option<Cfg>, InvalidCfgError>
Parses a MetaItemInner
into a Cfg
.
pub(crate) fn parse_without( cfg: &MetaItem, exclude: &FxHashSet<Cfg>, ) -> Result<Option<Cfg>, InvalidCfgError>
sourcepub(crate) fn parse(cfg: &MetaItemInner) -> Result<Cfg, InvalidCfgError>
pub(crate) fn parse(cfg: &MetaItemInner) -> Result<Cfg, InvalidCfgError>
Parses a MetaItem
into a Cfg
.
The MetaItem
should be the content of the #[cfg(...)]
, e.g., unix
or
target_os = "redox"
.
If the content is not properly formatted, it will return an error indicating what and where the error is.
sourcepub(crate) fn matches(
&self,
psess: &ParseSess,
features: Option<&Features>,
) -> bool
pub(crate) fn matches( &self, psess: &ParseSess, features: Option<&Features>, ) -> bool
Checks whether the given configuration can be matched in the current session.
Equivalent to attr::cfg_matches
.
sourcepub(crate) fn render_short_html(&self) -> String
pub(crate) fn render_short_html(&self) -> String
Renders the configuration for human display, as a short HTML description.
sourcepub(crate) fn render_long_html(&self) -> String
pub(crate) fn render_long_html(&self) -> String
Renders the configuration for long display, as a long HTML description.
sourcepub(crate) fn render_long_plain(&self) -> String
pub(crate) fn render_long_plain(&self) -> String
Renders the configuration for long display, as a long plain text description.
fn should_capitalize_first_letter(&self) -> bool
fn should_append_only_to_description(&self) -> bool
fn should_use_with_in_description(&self) -> bool
sourcepub(crate) fn simplify_with(&self, assume: &Cfg) -> Option<Cfg>
pub(crate) fn simplify_with(&self, assume: &Cfg) -> Option<Cfg>
Attempt to simplify this cfg by assuming that assume
is already known to be true, will
return None
if simplification managed to completely eliminate any requirements from this
Cfg
.
See tests::test_simplify_with
for examples.
Trait Implementations§
source§impl BitAndAssign for Cfg
impl BitAndAssign for Cfg
source§fn bitand_assign(&mut self, other: Cfg)
fn bitand_assign(&mut self, other: Cfg)
&=
operation. Read moresource§impl BitOrAssign for Cfg
impl BitOrAssign for Cfg
source§fn bitor_assign(&mut self, other: Cfg)
fn bitor_assign(&mut self, other: Cfg)
|=
operation. Read moreimpl Eq for Cfg
impl StructuralPartialEq for Cfg
Auto Trait Implementations§
impl Freeze for Cfg
impl RefUnwindSafe for Cfg
impl Send for Cfg
impl Sync for Cfg
impl Unpin for Cfg
impl UnwindSafe for Cfg
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§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.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> 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>
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: 32 bytes
Size for each variant:
True
: 0 bytesFalse
: 0 bytesCfg
: 8 bytesNot
: 12 bytesAny
: 28 bytesAll
: 28 bytes