[−][src]Trait normpath::PathExt
Additional methods added to Path
.
Required methods
fn normalize(&self) -> Result<BasePathBuf>
Normalizes self
relative to the current directory.
Unix Behavior
On Unix, normalization is equivalent to canonicalization.
Windows Behavior
On Windows, normalization is similar to canonicalization, but:
- the prefix of the path is rarely changed. Canonicalization would always return a verbatim path, which can be difficult to use. (rust-lang/rust#42869)
- the result is more consistent. (rust-lang/rust#49342)
- shared partition paths do not cause an error. (rust-lang/rust#52440)
However, verbatim paths will not be modified, so they might still
contain .
or ..
components. BasePath::join
and
BasePathBuf::push
can normalize them before they become part of the
path.
Implementation
Currently, this method calls:
fs::canonicalize
on Unix.GetFullPathNameW
on Windows.
However, the implementation is subject to change. This section is only informative.
Errors
Returns an error if self
cannot be normalized or contains a null
byte. On Unix, only existing paths can be normalized.
Examples
use std::path::Path; use normpath::PathExt; if cfg!(windows) { assert_eq!( Path::new(r"X:\foo\baz\test.rs"), Path::new("X:/foo/bar/../baz/test.rs").normalize()?, ); }