18 releases (4 stable)

Uses new Rust 2021

1.1.0 Aug 31, 2022
1.0.2 May 29, 2022
1.0.1 Feb 7, 2022
0.9.0 Oct 1, 2021
0.1.0 Mar 21, 2020

#19 in Development tools

Download history 8462/week @ 2022-06-10 14950/week @ 2022-06-17 12607/week @ 2022-06-24 12454/week @ 2022-07-01 11504/week @ 2022-07-08 11280/week @ 2022-07-15 13421/week @ 2022-07-22 21537/week @ 2022-07-29 21013/week @ 2022-08-05 18583/week @ 2022-08-12 22879/week @ 2022-08-19 18476/week @ 2022-08-26 20249/week @ 2022-09-02 25094/week @ 2022-09-09 21390/week @ 2022-09-16 18720/week @ 2022-09-23

89,152 downloads per month
Used in 26 crates (6 directly)

MIT/Apache

55KB
1K SLoC

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:

  • For target-spec 1.0.x: Rust 1.54.
  • For the version on the main branch (currently unreleased): Rust 1.56

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.

Dependencies

~295–800KB
~17K SLoC