pub struct Platform { /* private fields */ }
Expand description
A platform to evaluate target specifications against.
§Standard and custom platforms
target-spec
recognizes two kinds of platforms:
-
Standard platforms: These platforms are only specified by their triple string. For example, the platform
x86_64-unknown-linux-gnu
is a standard platform since it is recognized by Rust as a tier 1 platform.All builtin platforms are standard platforms.
By default, if a platform isn’t builtin, target-spec attempts to heuristically determine the characteristics of the platform based on the triple string. (Use the
new_strict
constructor to disable this.) -
Custom platforms: These platforms are specified via both a triple string and a JSON file in the format defined by Rust. Custom platforms are used for targets not recognized by Rust.
Implementations§
Source§impl Platform
impl Platform
Sourcepub fn new(
triple_str: impl Into<Cow<'static, str>>,
target_features: TargetFeatures,
) -> Result<Platform, Error>
pub fn new( triple_str: impl Into<Cow<'static, str>>, target_features: TargetFeatures, ) -> Result<Platform, Error>
Creates a new standard Platform
from the given triple and target features.
Returns an error if this platform wasn’t known to target-spec
.
Sourcepub fn new_strict(
triple_str: impl Into<Cow<'static, str>>,
target_features: TargetFeatures,
) -> Result<Platform, Error>
pub fn new_strict( triple_str: impl Into<Cow<'static, str>>, target_features: TargetFeatures, ) -> Result<Platform, Error>
Creates a new standard Platform
from the given triple and target features.
This constructor only consults the builtin platform table, and does not attempt to heuristically determine the platform’s characteristics based on the triple string.
Sourcepub fn current() -> Result<Platform, Error>
pub fn current() -> Result<Platform, Error>
Returns the current platform, as detected at build time.
This is currently always a standard platform, and will return an error if the current
platform was unknown to this version of target-spec
.
§Notes
In the future, this constructor may also support custom platforms. This will not be considered a breaking change.
Sourcepub fn from_triple(triple: Triple, target_features: TargetFeatures) -> Platform
pub fn from_triple(triple: Triple, target_features: TargetFeatures) -> Platform
Creates a new standard platform from a Triple
and target features.
Sourcepub fn add_flags(
&mut self,
flags: impl IntoIterator<Item = impl Into<Cow<'static, str>>>,
)
pub fn add_flags( &mut self, flags: impl IntoIterator<Item = impl Into<Cow<'static, str>>>, )
Adds a set of flags to accept.
A flag is a single token like the foo
in cfg(not(foo))
.
A default cargo build
will always evaluate flags to false, but custom wrappers may cause
some flags to evaluate to true. For example, as of version 0.6, cargo web build
will cause
cargo_web
to evaluate to true.
Sourcepub fn triple_str(&self) -> &str
pub fn triple_str(&self) -> &str
Returns the target triple string for this platform.
Sourcepub fn flags(&self) -> impl Iterator<Item = &str> + ExactSizeIterator
pub fn flags(&self) -> impl Iterator<Item = &str> + ExactSizeIterator
Returns the set of flags enabled for this platform.
Sourcepub fn has_flag(&self, flag: impl AsRef<str>) -> bool
pub fn has_flag(&self, flag: impl AsRef<str>) -> bool
Returns true if this flag was set with add_flags
.
Sourcepub fn is_standard(&self) -> bool
pub fn is_standard(&self) -> bool
Returns true if this is a standard platform.
A standard platform can be either builtin, or heuristically determined.
§Examples
use target_spec::{Platform, TargetFeatures};
// x86_64-unknown-linux-gnu is Linux x86_64.
let platform = Platform::new("x86_64-unknown-linux-gnu", TargetFeatures::Unknown).unwrap();
assert!(platform.is_standard());
Sourcepub fn is_builtin(&self) -> bool
pub fn is_builtin(&self) -> bool
Returns true if this is a builtin platform.
All builtin platforms are standard, but not all standard platforms are builtin.
§Examples
use target_spec::{Platform, TargetFeatures};
// x86_64-unknown-linux-gnu is Linux x86_64, which is a Rust tier 1 platform.
let platform = Platform::new("x86_64-unknown-linux-gnu", TargetFeatures::Unknown).unwrap();
assert!(platform.is_builtin());
Sourcepub fn is_heuristic(&self) -> bool
pub fn is_heuristic(&self) -> bool
Returns true if this is a heuristically determined platform.
All heuristically determined platforms are standard, but most of the time, standard platforms are builtin.
§Examples
use target_spec::{Platform, TargetFeatures};
// armv5te-apple-darwin is not a real platform, but target-spec can heuristically
// guess at its characteristics.
let platform = Platform::new("armv5te-apple-darwin", TargetFeatures::Unknown).unwrap();
assert!(platform.is_heuristic());
Sourcepub fn is_custom(&self) -> bool
pub fn is_custom(&self) -> bool
Returns true if this is a custom platform.
This is always available, but if the custom
feature isn’t turned on this always returns
false.
Sourcepub fn target_features(&self) -> &TargetFeatures
pub fn target_features(&self) -> &TargetFeatures
Returns the set of target features for this platform.
Trait Implementations§
Source§impl Ord for Platform
impl Ord for Platform
Source§impl PartialOrd for Platform
impl PartialOrd for Platform
impl Eq for Platform
impl StructuralPartialEq for Platform
Auto Trait Implementations§
impl Freeze for Platform
impl RefUnwindSafe for Platform
impl Send for Platform
impl Sync for Platform
impl Unpin for Platform
impl UnwindSafe for Platform
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<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
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.