std::path::Prefix

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('C' as u8), 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('C' as u8), get_path_prefix(r"C:\Users\Rust\Pictures\Ferris"));

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('C' as u8).is_verbatim());
assert!(!DeviceNS(OsStr::new("BrainInterface")).is_verbatim());
assert!(!UNC(OsStr::new("server"), OsStr::new("share")).is_verbatim());
assert!(!Disk('C' as u8).is_verbatim());

Trait Implementations

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

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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

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

Formats the value using the given formatter.

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

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

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

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

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

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

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

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

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]

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

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

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

This method tests for !=.

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

© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/path/enum.Prefix.html

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部