31 stable releases (8 major)
| 8.0.0 | Jun 5, 2025 |
|---|---|
| 7.0.3 | Apr 8, 2025 |
| 7.0.2 | Feb 6, 2025 |
| 7.0.1 | Dec 19, 2024 |
| 0.1.0 | Oct 6, 2015 |
#3 in Filesystem
9,086,870 downloads per month
Used in 4,103 crates
(986 directly)
56KB
1K
SLoC
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
-
To find which rustc executable binary is using.
use which::which; let result = which("rustc").unwrap(); assert_eq!(result, PathBuf::from("/usr/bin/rustc"));
-
After enabling the
regexfeature, 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.
Dependencies
~0–6MB
~130K SLoC