1.0.0[][src]Enum std::path::Prefix

pub enum Prefix<'a> {
    Verbatim(&'a OsStr),
    VerbatimUNC(&'a OsStr, &'a OsStr),
    VerbatimDisk(u8),
    DeviceNS(&'a OsStr),
    UNC(&'a OsStr, &'a OsStr),
    Disk(u8),
}

Windows path prefixes, e.g. C: or \\server\share.

Windows uses a variety of path prefix styles, including references to drive volumes (like C:), network shared folders (like \\server\share), and others. In addition, some path prefixes are "verbatim" (i.e. prefixed with \\?\), in which case / is not treated as a separator and essentially no normalization is performed.

Examples

use std::path::{Component, Path, Prefix};
use std::path::Prefix::*;
use std::ffi::OsStr;

fn get_path_prefix(s: &str) -> Prefix {
    let path = Path::new(s);
    match path.components().next().unwrap() {
        Component::Prefix(prefix_component) => prefix_component.kind(),
        _ => panic!(),
    }
}

assert_eq!(Verbatim(OsStr::new("pictures")),
           get_path_prefix(r"\\?\pictures\kittens"));
assert_eq!(VerbatimUNC(OsStr::new("server"), OsStr::new("share")),
           get_path_prefix(r"\\?\UNC\server\share"));
assert_eq!(VerbatimDisk(b'C'), get_path_prefix(r"\\?\c:\"));
assert_eq!(DeviceNS(OsStr::new("BrainInterface")),
           get_path_prefix(r"\\.\BrainInterface"));
assert_eq!(UNC(OsStr::new("server"), OsStr::new("share")),
           get_path_prefix(r"\\server\share"));
assert_eq!(Disk(b'C'), get_path_prefix(r"C:\Users\Rust\Pictures\Ferris"));Run

Variants

Verbatim prefix, e.g. \\?\cat_pics.

Verbatim prefixes consist of \\?\ immediately followed by the given component.

Verbatim prefix using Windows' Uniform Naming Convention, e.g. \\?\UNC\server\share.

Verbatim UNC prefixes consist of \\?\UNC\ immediately followed by the server's hostname and a share name.

Verbatim disk prefix, e.g. \\?\C:\.

Verbatim disk prefixes consist of \\?\ immediately followed by the drive letter and :\.

Device namespace prefix, e.g. \\.\COM42.

Device namespace prefixes consist of \\.\ immediately followed by the device name.

Prefix using Windows' Uniform Naming Convention, e.g. \\server\share.

UNC prefixes consist of the server's hostname and a share name.

Prefix C: for the given disk drive.

Methods

impl<'a> Prefix<'a>
[src]

Determines if the prefix is verbatim, i.e. begins with \\?\.

Examples

use std::path::Prefix::*;
use std::ffi::OsStr;

assert!(Verbatim(OsStr::new("pictures")).is_verbatim());
assert!(VerbatimUNC(OsStr::new("server"), OsStr::new("share")).is_verbatim());
assert!(VerbatimDisk(b'C').is_verbatim());
assert!(!DeviceNS(OsStr::new("BrainInterface")).is_verbatim());
assert!(!UNC(OsStr::new("server"), OsStr::new("share")).is_verbatim());
assert!(!Disk(b'C').is_verbatim());Run

Trait Implementations

impl<'a> Clone for Prefix<'a>
[src]

Performs copy-assignment from source. Read more

impl<'a> Copy for Prefix<'a>
[src]

impl<'a> PartialEq<Prefix<'a>> for Prefix<'a>
[src]

impl<'a> Eq for Prefix<'a>
[src]

impl<'a> Ord for Prefix<'a>
[src]

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

impl<'a> PartialOrd<Prefix<'a>> for Prefix<'a>
[src]

impl<'a> Debug for Prefix<'a>
[src]

impl<'a> Hash for Prefix<'a>
[src]

Feeds a slice of this type into the given [Hasher]. Read more

Auto Trait Implementations

impl<'a> Send for Prefix<'a>

impl<'a> Sync for Prefix<'a>

Blanket Implementations

impl<T> From for T
[src]

impl<T, U> TryFrom for T where
    T: From<U>, 
[src]

🔬 This is a nightly-only experimental API. (try_from #33417)

The type returned in the event of a conversion error.

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

🔬 This is a nightly-only experimental API. (try_from #33417)

The type returned in the event of a conversion error.

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> ToOwned for T where
    T: Clone
[src]