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:

```toml

1. As Rust-like #[cfg] syntax.

[target.'cfg(all(unix, targetarch = "x8664"))'.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.

```rust use target_spec::eval;

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

// Evaluate a full target-triple. asserteq!(eval("x8664-unknown-linux-gnu", "x8664-unknown-linux-gnu"), Ok(Some(true))); asserteq!(eval("x8664-unknown-linux-gnu", "x8664-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: * For target-spec 1.0.x: Rust 1.54. * For target-spec 1.1.x: Rust 1.56. * For target-spec 1.2.x: Rust 1.58.

Within the 1.x series, MSRV bumps will be accompanied by a minor version update.

Related crates

To pretty-print target-spec errors, consider using the miette diagnostic library with target-spec-miette.

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.