Enum guppy::platform::PlatformSpec
source · #[non_exhaustive]pub enum PlatformSpec {
Always,
Platform(Arc<Platform>),
Any,
}
Expand description
A specifier for a single platform, or for a range of platforms.
Some uses of guppy
care about a single platform, and others care about queries against the
intersection of all hypothetical platforms, or against a union of any of them. PlatformSpec
handles the
PlatformSpec
does not currently support expressions, but it might in the future, using an
SMT solver.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Always
The intersection of all platforms.
Dependency queries performed against this variant will return EnabledTernary::Enabled
if
and only if a dependency is not platform-dependent. They can never return
EnabledTernary::Unknown
.
This variant does not currently understand expressions that always evaluate to true
(tautologies), like cfg(any(unix, not(unix)))
or cfg(all())
. In the future, an SMT
solver would be able to handle such expressions.
Platform(Arc<Platform>)
An individual platform.
Dependency queries performed against this variant will return EnabledTernary::Enabled
if
and only if a dependency is enabled on this platform. They may also return
EnabledTernary::Unknown
if a platform is not enabled.
Any
The union of all platforms.
Dependency queries performed against this variant will return EnabledTernary::Enabled
if
a dependency is enabled on any platform.
This variant does not currently understand expressions that always evaluate to false
(contradictions), like cfg(all(unix, not(unix)))
or cfg(any())
. In the future, an SMT
solver would be able to handle such expressions.
Implementations§
source§impl PlatformSpec
impl PlatformSpec
sourcepub fn current() -> Result<Self, TargetSpecError>
pub fn current() -> Result<Self, TargetSpecError>
Returns a PlatformSpec
corresponding to the current platform, as detected at build time.
Returns an error if the current platform was unknown to the version of target-spec
in
use.
Trait Implementations§
source§impl Clone for PlatformSpec
impl Clone for PlatformSpec
source§fn clone(&self) -> PlatformSpec
fn clone(&self) -> PlatformSpec
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for PlatformSpec
impl Debug for PlatformSpec
Auto Trait Implementations§
impl Freeze for PlatformSpec
impl RefUnwindSafe for PlatformSpec
impl Send for PlatformSpec
impl Sync for PlatformSpec
impl Unpin for PlatformSpec
impl UnwindSafe for PlatformSpec
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
)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 more