Rust library to convert a file path from/to slash path

crates.io documentation CI codecov-badge

path-slash is a tiny library to convert a file path (e.g. foo/bar, foo\bar or C:\foo\bar) from/to slash path (e.g. foo/bar, C:/foo/bar).

On Unix-like OS, path separator is slash / by default. One may want to convert a Windows path. But on Windows, file path separator \ needs to be replaced with slash / (and of course \s for escaping characters should not be replaced).

Supported Rust version is 1.38.0 or later.

This package was inspired by Go's path/filepath.FromSlash and path/filepath.ToSlash.

Usage

path_slash::PathExt, path_slash::PathBufExt and path_slash::CowExt traits are defined. By using them, std::path::Path, std::path::PathBuf and std::borrow::Cow<'_, Path> gain some methods and associated functions.

```rust fn examplepathext() { // Trait for extending std::path::Path use path_slash::PathExt as _;

let p = Path::from_slash("foo/bar/piyo.txt");

// On Windows
assert_eq!(p, Path::new(r"foo\bar\piyo.txt"));

// Convert to slash path
assert_eq!(p.to_slash().unwrap(), "foo/bar/piyo.txt");
assert_eq!(p.to_slash_lossy(), "foo/bar/piyo.txt");

}

fn examplepathbufext() { // Trait for extending std::path::PathBuf use path_slash::PathBufExt as _;

// On Windows
let p = PathBuf::from_slash("foo/bar/piyo.txt");
assert_eq!(p, PathBuf::from(r"foo\bar\piyo.txt"));

// Convert to slash path
assert_eq!(p.to_slash().unwrap(), "foo/bar/piyo.txt");
assert_eq!(p.to_slash_lossy(), "foo/bar/piyo.txt");

}

fn examplecowext() { // Trait for extending std::borrow::Cow<', Path> use pathslash::CowExt as _;

let p = Cow::from_slash("foo/bar/piyo.txt");
// On Windows
assert_eq!(p, Cow::Owned(PathBuf::from(r"foo\bar\piyo.txt")));
// On non-Windows
assert_eq!(p, Cow::Borrowed(Path::new("foo/bar/piyo.txt")));

// Convert to slash path
assert_eq!(p.to_slash().unwrap(), "foo/bar/piyo.txt");
assert_eq!(p.to_slash_lossy(), "foo/bar/piyo.txt");

} ```

Please read documents for more details.

Installation

Add path-slash to dependencies:

toml [dependencies] path-slash = "0.x"

License

the MIT License