Enum std::path::Prefix1.0.0 [] [src]

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]

[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> Copy for Prefix<'a>
[src]

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

[src]

Returns a copy of the value. Read more

[src]

Performs copy-assignment from source. Read more

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

[src]

Formats the value using the given formatter. Read more

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

[src]

Feeds this value into the given [Hasher]. Read more

1.3.0
[src]

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

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

[src]

This method returns an ordering between self and other values if one exists. Read more

[src]

This method tests less than (for self and other) and is used by the < operator. Read more

[src]

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

[src]

This method tests greater than (for self and other) and is used by the > operator. Read more

[src]

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

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

[src]

This method returns an Ordering between self and other. Read more

1.21.0
[src]

Compares and returns the maximum of two values. Read more

1.21.0
[src]

Compares and returns the minimum of two values. Read more

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

[src]

This method tests for self and other values to be equal, and is used by ==. Read more

[src]

This method tests for !=.

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