16 releases

0.1.15 Jan 20, 2024
0.1.14 Nov 18, 2023
0.1.13 Oct 7, 2023
0.1.8 Jun 26, 2023
0.1.3 Nov 22, 2022

#132 in Cargo plugins

Download history 855/week @ 2023-12-17 599/week @ 2023-12-24 1148/week @ 2023-12-31 1513/week @ 2024-01-07 1284/week @ 2024-01-14 1435/week @ 2024-01-21 947/week @ 2024-01-28 1029/week @ 2024-02-04 1064/week @ 2024-02-11 1039/week @ 2024-02-18 1128/week @ 2024-02-25 1149/week @ 2024-03-03 1246/week @ 2024-03-10 1218/week @ 2024-03-17 1382/week @ 2024-03-24 1527/week @ 2024-03-31

5,490 downloads per month
Used in 6 crates (4 directly)

Apache-2.0 OR MIT

23KB
409 lines

Detect the target at the runtime.

It runs $CARGO -vV if environment variable CARGO is present for cargo subcommands, otherwise it would try running rustc -vV.

If both rustc isn't present on the system, it will fallback to using syscalls plus ldd on Linux to detect targets.

Example use cases:

  • The binary is built with musl libc to run on anywhere, but the runtime supports glibc.
  • The binary is built for x86_64-apple-darwin, but run on aarch64-apple-darwin.

This crate provides two API:

Example

detect_targets:

use detect_targets::detect_targets;

let targets = detect_targets().await;
eprintln!("Your platform supports targets: {targets:#?}");

get_desired_targets with user override:

use detect_targets::get_desired_targets;

assert_eq!(
    get_desired_targets(Some(vec![
        "x86_64-apple-darwin".to_string(),
        "aarch64-apple-darwin".to_string(),
    ])).get().await,
    &["x86_64-apple-darwin", "aarch64-apple-darwin"],
);

get_desired_targets without user override:

use detect_targets::get_desired_targets;

eprintln!(
    "Your platform supports targets: {:#?}",
    get_desired_targets(None).get().await
);

Dependencies

~3–38MB
~493K SLoC