Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/harryfei/which-rs
A Rust equivalent of Unix command "which".
https://github.com/harryfei/which-rs
binary-finder rust rust-equivalent unix-command which
Last synced: 4 days ago
JSON representation
A Rust equivalent of Unix command "which".
- Host: GitHub
- URL: https://github.com/harryfei/which-rs
- Owner: harryfei
- License: mit
- Created: 2015-10-06T10:47:06.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2024-11-01T02:53:32.000Z (10 days ago)
- Last Synced: 2024-11-01T03:25:03.880Z (10 days ago)
- Topics: binary-finder, rust, rust-equivalent, unix-command, which
- Language: Rust
- Size: 1.12 MB
- Stars: 206
- Watchers: 4
- Forks: 47
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
[![Build Status](https://github.com/harryfei/which-rs/actions/workflows/rust.yml/badge.svg)](https://github.com/harryfei/which-rs/actions/workflows/rust.yml)
# 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](https://wasi.dev/) extension. This extension is a requirement. `which` is a library for exploring a filesystem, and
WebAssembly without wasi does not have a filesystem. `which` cannot do anything useful without this extension. Issues and PRs relating to
`wasm32-unknown-unknown` and `wasm64-unknown-unknown` will not be resolved or merged. All `wasm32-wasi*` targets are officially supported.If you need to add a conditional dependency on `which` for this reason please refer to [the relevant cargo documentation for platform specific dependencies.](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#platform-specific-dependencies)
Here's an example of how to conditionally add `which`. You should tweak this to your needs.
```toml
[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies]
which = "6.0.3"
```## Examples
1) To find which rustc executable binary is using.
``` rust
use which::which;let result = which("rustc").unwrap();
assert_eq!(result, PathBuf::from("/usr/bin/rustc"));
```2. After enabling the `regex` feature, find all cargo subcommand executables on the path:
``` rust
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](https://github.com/rust-lang/cargo/issues/9930) for more.## Documentation
The documentation is [available online](https://docs.rs/which/).