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
).
In Unix-like OS, path separator is slash /
by default. So any conversion is not necessary. But on
Windows, file path separator \
needs to be replaced with slash /
(and of course \
for escaping
character should not be replaced).
This package was inspired by Go's path/filepath.FromSlash
and path/filepath.ToSlash
.
path_slash::PathExt
and path_slash::PathBufExt
traits are defined. By using them, std::path::Path
and std::path::PathBuf
gains some methods and associated functions
PathExt
Path::to_slash(&self) -> Option<String>
Path::to_slash_lossy(&self) -> String
PathBufExt
PathBuf::from_slash<S: AsRef<str>>(s: S) -> PathBuf
PathBuf::from_slash_lossy<S: AsRef<OsStr>>(s: S) -> PathBuf
PathBuf::to_slash(&self) -> Option<String>
PathBuf::to_slash_lossy(&self) -> String
fn example_path_ext() {
// Trait for extending std::path::Path
use path_slash::PathExt;
// On Windows
assert_eq!(
Path::new(r"foo\bar\piyo.txt").to_slash(),
Some("foo/bar/piyo.txt".to_string()),
);
assert_eq!(
Path::new(r"C:\\foo\bar\piyo.txt").to_slash(),
Some("C://foo/bar/piyo.txt".to_string()),
);
}
fn example_pathbuf_ext() {
// Trait for extending std::path::PathBuf
use path_slash::PathBufExt;
// On Windows
let p = PathBuf::from_slash("foo/bar/piyo.txt");
assert_eq!(p, PathBuf::from(r"foo\bar\piyo.txt"));
assert_eq!(p.to_slash(), Some("foo/bar/piyo.txt".to_string()));
}
Please read documents for more details.
Add path-slash
to dependencies:
[dependencies]
path-slash = "0.x"