Expand description

Evaluate Cargo.toml target specifications against platform triples.

Cargo supports platform-specific dependencies. These dependencies can be specified in one of two ways:

[target.'cfg(all(unix, target_arch = "x86_64"))'.dependencies]
native = { path = "native/x86_64" }

winhttp = "0.4.0"

target-spec provides the eval API which can be used to figure out whether such a dependency will be included on a particular platform.

use target_spec::eval;

// Evaluate Rust-like `#[cfg]` syntax.
let cfg_target = "cfg(all(unix, target_arch = \"x86_64\"))";
assert_eq!(eval(cfg_target, "x86_64-unknown-linux-gnu"), Ok(Some(true)));
assert_eq!(eval(cfg_target, "i686-unknown-linux-gnu"), Ok(Some(false)));
assert_eq!(eval(cfg_target, "x86_64-pc-windows-msvc"), Ok(Some(false)));

// Evaluate a full target-triple.
assert_eq!(eval("x86_64-unknown-linux-gnu", "x86_64-unknown-linux-gnu"), Ok(Some(true)));
assert_eq!(eval("x86_64-unknown-linux-gnu", "x86_64-pc-windows-msvc"), Ok(Some(false)));

For more advanced usage, see Platform and TargetSpec.

Optional features

Minimum supported Rust version

The minimum supported Rust version (MSRV) is Rust 1.54. Within the 1.x series, MSRV bumps will be accompanied by a minor version update.


pub use errors::Error;


Errors returned by target-spec.


Serialized versions of platform and target features.


A platform to evaluate target specs against.

A target expression.

A single, specific target, uniquely identified by a triple.


A set of target features to match.

A parsed target specification or triple, as found in a Cargo.toml file.


Evaluates the given spec against the provided target and returns Some(true) on a successful match, and Some(false) on a failing match.