[][src]Trait normpath::PathExt

pub trait PathExt: Sealed {
    pub fn normalize(&self) -> Result<BasePathBuf>;
pub fn normalize_virtually(&self) -> Result<BasePathBuf>; }

Additional methods added to Path.

Required methods

pub fn normalize(&self) -> Result<BasePathBuf>[src]

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:

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:

However, the implementation is subject to change. This section is only informative.

Errors

Returns an error if self cannot be normalized or does not exist, even on Windows.

This method is designed to give mostly consistent errors on different platforms, even when the functions it calls have different behavior. To normalize paths that might not exist, use normalize_virtually.

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()?,
    );
}

pub fn normalize_virtually(&self) -> Result<BasePathBuf>[src]

This is supported on Windows only.

Equivalent to normalize but does not access the file system.

Errors

Returns an error if self cannot be normalized or contains a null byte. Nonexistent paths will not cause an error.

Examples

use std::path::Path;

use normpath::PathExt;

#[cfg(windows)]
assert_eq!(
    Path::new(r"X:\foo\baz\test.rs"),
    Path::new("X:/foo/bar/../baz/test.rs").normalize_virtually()?,
);
Loading content...

Implementations on Foreign Types

impl PathExt for Path[src]

Loading content...

Implementors

Loading content...