#which #unix


An async implementation of which

5 unstable releases

✓ Uses Rust 2018 edition

new 0.3.0 Jan 22, 2020
0.2.2 Jan 13, 2020
0.2.0 Dec 31, 2019
0.1.3 Dec 30, 2019

#60 in Filesystem

Download history 19/week @ 2019-12-22 352/week @ 2019-12-29 814/week @ 2020-01-05 949/week @ 2020-01-12 1268/week @ 2020-01-19

957 downloads per month
Used in nu

MIT license

664 lines

ichwh - an async implementation of GNU which

Crates.io Gitlab pipeline status Docs.rs AppVeyor

ichwh aims to be a fully-async clone of GNU which, compatible with the three major operating systems. The main job of which is to search for executables on the current PATH.

This crate is similar to the synchronous which crate. The main difference is that ichwh is asynchronous, and provides a which_all method.


In Cargo.toml:

ichwh = "*"

In your source files:

use ichwh::which;

let path_to_python = which("python").await.unwrap();
assert_eq!(path_to_python.to_str().unwrap(), "/usr/bin/python");


Run tests with cargo test. The tests will create a set of temporary test folders. They are rooted at /tmp/ichwh-test-<num> (%TEMP%/... on windows), where <num> is the number of minutes since the unix epoch. If all tests pass, the folders will be cleaned up. Any failing tests will preserve their test folders for inspection and debugging.



This crate adheres to SemVer. This crate is pre-1.0, meaning that breaking changes to the publicly-documented API will bump the minor version, and non-breaking changes will bump the patch version.

All publicly-documented items in this crate (i.e., items visible for a platform on docs.rs) are considered stable until a breaking version increment. Do not depend on or use non-documented items that may be visible in-code; they may change at any time.

Please report any unexpected API breakage as a bug.




~74K SLoC