3 releases (stable)
Uses old Rust 2015
1.0.1 | Feb 24, 2023 |
---|---|
0.1.0 | Nov 6, 2018 |
#25 in Filesystem
366,320 downloads per month
Used in 532 crates
(131 directly)
10KB
145 lines
path-clean
Installation
cargo add path-clean
Usage
use std::path::PathBuf;
use path_clean::{clean, PathClean};
assert_eq!(clean("hello/world/.."), PathBuf::from("hello"));
assert_eq!(
PathBuf::from("/test/../path/").clean(),
PathBuf::from("/path")
);
About
path-clean
is a Rust port of the the cleanname
procedure from the Plan 9 C library, and is similar to path.Clean
from the Go standard library. It works as follows:
- Reduce multiple slashes to a single slash.
- Eliminate
.
path name elements (the current directory). - Eliminate
..
path name elements (the parent directory) and the non-.
non-..
, element that precedes them. - Eliminate
..
elements that begin a rooted path, that is, replace/..
by/
at the beginning of a path. - Leave intact
..
elements that begin a non-rooted path.
If the result of this process is an empty string, return the string "."
, representing the current directory.
It performs this transform lexically, without touching the filesystem. Therefore it doesn't do any symlink resolution or absolute path resolution. For more information you can see "Getting Dot-Dot Right".
For convenience, the PathClean
trait is exposed and comes implemented for std::path::PathBuf
.
License
MIT OR Apache-2.0