Skip to content

harryfei/which-rs

Repository files navigation

Build Status Actively Maintained

which

A Rust equivalent of Unix command "which". Locate installed executable in cross platforms.

Support platforms

  • Linux
  • Windows
  • macOS
  • wasm32-wasi*

A note on WebAssembly

This project aims to support WebAssembly with the WASI extension. All wasm32-wasi* targets are officially supported.

If you need to add a conditional dependency on which please refer to the relevant cargo documentation for platform specific dependencies.

Here's an example of how to conditionally add which. You should tweak this to your needs.

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies]
which = "7.0.0"

Note that non-WASI environments have no access to the system. Using this in that situation requires disabling the default features of this crate and providing a custom which::sys::Sys implementation to which::WhichConfig.

Examples

  1. To find which rustc executable binary is using.

    use which::which;
    
    let result = which("rustc").unwrap();
    assert_eq!(result, PathBuf::from("/usr/bin/rustc"));
  1. After enabling the regex feature, find all cargo subcommand executables on the path:

    use which::which_re;
    
    which_re(Regex::new("^cargo-.*").unwrap()).unwrap()
        .for_each(|pth| println!("{}", pth.to_string_lossy()));

MSRV

This crate currently has an MSRV of Rust 1.70. Increasing the MSRV is considered a breaking change and thus requires a major version bump.

We cannot make any guarantees about the MSRV of our dependencies. You may be required to pin one of our dependencies to a lower version in your own Cargo.toml in order to compile with the minimum supported Rust version. Eventually Cargo will handle this automatically. See rust-lang/cargo#9930 for more.

Documentation

The documentation is available online.

About

A Rust equivalent of Unix command "which".

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 33

Languages