search_path

Crates.iosearch_path
lib.rssearch_path
version0.1.4
sourcesrc
created_at2021-07-16 23:13:13.593004
updated_at2022-10-20 15:42:26.984983
descriptionProvides a very simple search path file finder.
homepage
repositoryhttps://github.com/johnstonskj/rust-search_path.git
max_upload_size
id423800
size28,416
Simon Johnston (johnstonskj)

documentation

https://docs.rs/search_path/

README

Crate search_path

Provides a very simple search path file finder.

MIT License Minimum Rust Version crates.io docs.rs Build Audit GitHub stars


The SearchPath type allows for the finding of files using a series of search directories. This is akin to the mechanism a shell uses to find executables using the PATH environment variable. It can be constructed with a search path from an environment variable, from a string, or from a list of either string or Path/PathBuf values. Typically the find methods return the first matching file or directory, but the find_all method specifically collects and returns a list of all matching paths.

Constructors

The SearchPath type also has From<> implementations for PathBuf, Vec<PathBuf>, Vec<&Path>, Vec<&str>, String, and &str. In the case of vector values, or a single PathBuf, each path value will be used as-is without trying to split it into components. In the case of individual String and &str values the value will be split using the platform specific path separator into individual paths components.

Example

The following example shows the common pattern of finding an executable command on the command line.

use search_path::SearchPath;
use std::path::PathBuf;

fn which_command(cmd_name: &str) -> Option<PathBuf> {
    let search_path = SearchPath::new("PATH").unwrap();
    search_path.find_file(&PathBuf::from(cmd_name))
}

Changes

Version 0.1.4

  • Added new constructor path as a simple shortcut.

Version 0.1.3

  • Added implementation of IntoIterator to extract paths.

Version 0.1.2

  • Added a dedup method.

Version 0.1.1

  • Completed documentation.
  • Added Github builds.
  • Fixed bug in test cases for Windows builds.

Version 0.1.0

  • Initial commit.
Commit count: 13

cargo fmt