# Crate search_path

Provides a very simple search path file finder.

-----

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.

```rust
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.
