target-spec 1.0.1

Evaluate Cargo.toml target specifications
Documentation

target-spec

target-spec on crates.io Documentation (latest release) Documentation (main) Changelog License License

Evaluate Cargo.toml target specifications against platform triples.

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

# 1. As Rust-like `#[cfg]` syntax.
[target.'cfg(all(unix, target_arch = "x86_64"))'.dependencies]
native = { path = "native/x86_64" }

# 2. Listing out the full target triple.
[target.x86_64-pc-windows-gnu.dependencies]
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

  • summaries: Adds the summaries module to enable serialization of Platform and TargetFeatures.
  • proptest1: Enables support for property-based testing of Platform and TargetFeatures using proptest.

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.

Contributing

See the CONTRIBUTING file for how to help out.

License

This project is available under the terms of either the Apache 2.0 license or the MIT license.