Prefix in std::path - Rust (original) (raw)
Enum Prefix
1.0.0 · Source
pub enum Prefix<'a> {
Verbatim(&'a OsStr),
VerbatimUNC(&'a OsStr, &'a OsStr),
VerbatimDisk(u8),
DeviceNS(&'a OsStr),
UNC(&'a OsStr, &'a OsStr),
Disk(u8),
}
Expand description
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"));
§1.0.0
Verbatim prefix, e.g., \\?\cat_pics
.
Verbatim prefixes consist of \\?\
immediately followed by the given component.
§1.0.0
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.
§1.0.0
Verbatim disk prefix, e.g., \\?\C:
.
Verbatim disk prefixes consist of \\?\
immediately followed by the drive letter and :
.
§1.0.0
Device namespace prefix, e.g., \\.\COM42
.
Device namespace prefixes consist of \\.\
(possibly using /
instead of \
), immediately followed by the device name.
§1.0.0
Prefix using Windows’ Uniform Naming Convention, e.g.\\server\share
.
UNC prefixes consist of the server’s hostname and a share name.
§1.0.0
Prefix C:
for the given disk drive.
1.0.0 · Source
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());
Tests for self
and other
values to be equal, and is used by ==
.
Tests for !=
. The default implementation is almost always sufficient, and should not be overridden without very good reason.
This method returns an ordering between self
and other
values if one exists. Read more
Tests less than (for self
and other
) and is used by the <
operator. Read more
Tests less than or equal to (for self
and other
) and is used by the<=
operator. Read more
Tests greater than (for self
and other
) and is used by the >
operator. Read more
Tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more