Enum target_spec::TargetSpec
source · pub enum TargetSpec {
Triple(Triple),
Expression(TargetExpression),
}
Expand description
A parsed target specification or triple, as found in a Cargo.toml
file.
Examples
use target_spec::{Platform, TargetFeatures, TargetSpec};
let i686_windows = Platform::new("i686-pc-windows-gnu", TargetFeatures::Unknown).unwrap();
let x86_64_mac = Platform::new("x86_64-apple-darwin", TargetFeatures::none()).unwrap();
let i686_linux = Platform::new(
"i686-unknown-linux-gnu",
TargetFeatures::features(["sse2"].iter().copied()),
).unwrap();
let spec: TargetSpec = "cfg(any(windows, target_arch = \"x86_64\"))".parse().unwrap();
assert_eq!(spec.eval(&i686_windows), Some(true), "i686 Windows");
assert_eq!(spec.eval(&x86_64_mac), Some(true), "x86_64 MacOS");
assert_eq!(spec.eval(&i686_linux), Some(false), "i686 Linux (should not match)");
let spec: TargetSpec = "cfg(any(target_feature = \"sse2\", target_feature = \"sse\"))".parse().unwrap();
assert_eq!(spec.eval(&i686_windows), None, "i686 Windows features are unknown");
assert_eq!(spec.eval(&x86_64_mac), Some(false), "x86_64 MacOS matches no features");
assert_eq!(spec.eval(&i686_linux), Some(true), "i686 Linux matches some features");
Variants§
Triple(Triple)
An exact target parsed from a triple.
Parsed from strings like "i686-pc-windows-gnu"
.
Expression(TargetExpression)
A complex expression.
Parsed from strings like "cfg(any(windows, target_arch = \"x86_64\"))"
.
Implementations§
Trait Implementations§
source§impl Clone for TargetSpec
impl Clone for TargetSpec
source§fn clone(&self) -> TargetSpec
fn clone(&self) -> TargetSpec
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read more