[−][src]Struct sgx_tstd::path::PathBuf
An owned, mutable path (akin to String
).
This type provides methods like push
and set_extension
that mutate
the path in place. It also implements Deref
to Path
, meaning that
all methods on Path
slices are available on PathBuf
values as well.
More details about the overall approach can be found in the module documentation.
Methods
impl PathBuf
[src]
pub fn new() -> PathBuf
[src]
Allocates an empty PathBuf
.
pub fn with_capacity(capacity: usize) -> PathBuf
[src]
Creates a new PathBuf
with a given capacity used to create the
internal OsString
. See [with_capacity
] defined on OsString
.
pub fn as_path(&self) -> &Path
[src]
Coerces to a Path
slice.
pub fn push<P: AsRef<Path>>(&mut self, path: P)
[src]
Extends self
with path
.
If path
is absolute, it replaces the current path.
On Windows:
- if
path
has a root but no prefix (e.g.,\windows
), it replaces everything except for the prefix (if any) ofself
. - if
path
has a prefix but no root, it replacesself
.
pub fn pop(&mut self) -> bool
[src]
Truncates self
to self.parent
.
Returns false
and does nothing if self.parent
is None
.
Otherwise, returns true
.
pub fn set_file_name<S: AsRef<OsStr>>(&mut self, file_name: S)
[src]
Updates self.file_name
to file_name
.
If self.file_name
was None
, this is equivalent to pushing
file_name
.
Otherwise it is equivalent to calling pop
and then pushing
file_name
. The new path will be a sibling of the original path.
(That is, it will have the same parent.)
pub fn set_extension<S: AsRef<OsStr>>(&mut self, extension: S) -> bool
[src]
Updates self.extension
to extension
.
Returns false
and does nothing if self.file_name
is None
,
returns true
and updates the extension otherwise.
If self.extension
is None
, the extension is added; otherwise
it is replaced.
pub fn into_os_string(self) -> OsString
[src]
Consumes the PathBuf
, yielding its internal OsString
storage.
pub fn into_boxed_path(self) -> Box<Path>
[src]
pub fn capacity(&self) -> usize
[src]
pub fn clear(&mut self)
[src]
pub fn reserve(&mut self, additional: usize)
[src]
pub fn reserve_exact(&mut self, additional: usize)
[src]
Invokes reserve_exact
on the underlying instance of OsString
.
pub fn shrink_to_fit(&mut self)
[src]
Invokes shrink_to_fit
on the underlying instance of OsString
.
pub fn shrink_to(&mut self, min_capacity: usize)
[src]
Methods from Deref<Target = Path>
pub fn as_os_str(&self) -> &OsStr
[src]
Yields the underlying OsStr
slice.
pub fn to_str(&self) -> Option<&str>
[src]
Yields a &str
slice if the Path
is valid unicode.
This conversion may entail doing a check for UTF-8 validity. Note that validation is performed because non-UTF-8 strings are perfectly valid for some OS.
pub fn to_string_lossy(&self) -> Cow<str>
[src]
Converts a Path
to a Cow<str>
.
Any non-Unicode sequences are replaced with
U+FFFD REPLACEMENT CHARACTER
.
pub fn to_path_buf(&self) -> PathBuf
[src]
Converts a Path
to an owned PathBuf
.
pub fn is_absolute(&self) -> bool
[src]
Returns true
if the Path
is absolute, i.e., if it is independent of
the current directory.
-
On Unix, a path is absolute if it starts with the root, so
is_absolute
and [has_root
] are equivalent. -
On Windows, a path is absolute if it has a prefix and starts with the root:
c:\windows
is absolute, whilec:temp
and\temp
are not.
pub fn is_relative(&self) -> bool
[src]
Returns true
if the Path
is relative, i.e., not absolute.
See [is_absolute
]'s documentation for more details.
pub fn has_root(&self) -> bool
[src]
Returns true
if the Path
has a root.
-
On Unix, a path has a root if it begins with
/
. -
On Windows, a path has a root if it:
- has no prefix and begins with a separator, e.g.,
\windows
- has a prefix followed by a separator, e.g.,
c:\windows
but notc:windows
- has any non-disk prefix, e.g.,
\\server\share
- has no prefix and begins with a separator, e.g.,
pub fn parent(&self) -> Option<&Path>
[src]
Returns the Path
without its final component, if there is one.
Returns None
if the path terminates in a root or prefix.
pub fn ancestors(&self) -> Ancestors
[src]
Produces an iterator over Path
and its ancestors.
The iterator will yield the Path
that is returned if the [parent
] method is used zero
or more times. That means, the iterator will yield &self
, &self.parent().unwrap()
,
&self.parent().unwrap().parent().unwrap()
and so on. If the [parent
] method returns
None
, the iterator will do likewise. The iterator will always yield at least one value,
namely &self
.
pub fn file_name(&self) -> Option<&OsStr>
[src]
Returns the final component of the Path
, if there is one.
If the path is a normal file, this is the file name. If it's the path of a directory, this is the directory name.
Returns None
if the path terminates in ..
.
pub fn strip_prefix<P>(&self, base: P) -> Result<&Path, StripPrefixError> where
P: AsRef<Path>,
[src]
P: AsRef<Path>,
Returns a path that, when joined onto base
, yields self
.
Errors
If base
is not a prefix of self
(i.e., starts_with
returns false
), returns Err
.
pub fn starts_with<P: AsRef<Path>>(&self, base: P) -> bool
[src]
Determines whether base
is a prefix of self
.
Only considers whole path components to match.
pub fn ends_with<P: AsRef<Path>>(&self, child: P) -> bool
[src]
Determines whether child
is a suffix of self
.
Only considers whole path components to match.
pub fn file_stem(&self) -> Option<&OsStr>
[src]
Extracts the stem (non-extension) portion of self.file_name
.
The stem is:
None
, if there is no file name;- The entire file name if there is no embedded
.
; - The entire file name if the file name begins with
.
and has no other.
s within; - Otherwise, the portion of the file name before the final
.
pub fn extension(&self) -> Option<&OsStr>
[src]
Extracts the extension of self.file_name
, if possible.
The extension is:
pub fn join<P: AsRef<Path>>(&self, path: P) -> PathBuf
[src]
Creates an owned PathBuf
with path
adjoined to self
.
See PathBuf::push
for more details on what it means to adjoin a path.
pub fn with_file_name<S: AsRef<OsStr>>(&self, file_name: S) -> PathBuf
[src]
Creates an owned PathBuf
like self
but with the given file name.
See PathBuf::set_file_name
for more details.
pub fn with_extension<S: AsRef<OsStr>>(&self, extension: S) -> PathBuf
[src]
Creates an owned PathBuf
like self
but with the given extension.
See PathBuf::set_extension
for more details.
pub fn components(&self) -> Components
[src]
Produces an iterator over the Component
s of the path.
When parsing the path, there is a small amount of normalization:
-
Repeated separators are ignored, so
a/b
anda//b
both havea
andb
as components. -
Occurrences of
.
are normalized away, except if they are at the beginning of the path. For example,a/./b
,a/b/
,a/b/.
anda/b
all havea
andb
as components, but./a/b
starts with an additional [CurDir
] component. -
A trailing slash is normalized away,
/a/b
and/a/b/
are equivalent.
Note that no other normalization takes place; in particular, a/c
and a/b/../c
are distinct, to account for the possibility that b
is a symbolic link (so its parent isn't a
).
pub fn iter(&self) -> Iter
[src]
Produces an iterator over the path's components viewed as OsStr
slices.
For more information about the particulars of how the path is separated
into components, see components
.
pub fn display(&self) -> Display
[src]
Returns an object that implements Display
for safely printing paths
that may contain non-Unicode data.
Trait Implementations
impl AsRef<OsStr> for PathBuf
[src]
impl AsRef<Path> for PathBuf
[src]
impl Borrow<Path> for PathBuf
[src]
impl Clone for PathBuf
[src]
fn clone(&self) -> PathBuf
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for PathBuf
[src]
impl Default for PathBuf
[src]
impl Deref for PathBuf
[src]
impl Eq for PathBuf
[src]
impl<P: AsRef<Path>> Extend<P> for PathBuf
[src]
fn extend<I: IntoIterator<Item = P>>(&mut self, iter: I)
[src]
impl<'_, T: ?Sized + AsRef<OsStr>> From<&'_ T> for PathBuf
[src]
impl<'a> From<&'a PathBuf> for Cow<'a, Path>
[src]
impl From<Box<Path>> for PathBuf
[src]
fn from(boxed: Box<Path>) -> PathBuf
[src]
Converts a Box<Path>
into a PathBuf
This conversion does not allocate or copy memory.
impl<'a> From<Cow<'a, Path>> for PathBuf
[src]
impl From<OsString> for PathBuf
[src]
fn from(s: OsString) -> PathBuf
[src]
Converts a OsString
into a PathBuf
This conversion does not allocate or copy memory.
impl From<PathBuf> for Box<Path>
[src]
fn from(p: PathBuf) -> Box<Path>
[src]
Converts a PathBuf
into a Box<Path>
This conversion currently should not allocate memory, but this behavior is not guaranteed on all platforms or in all future versions.
impl From<PathBuf> for OsString
[src]
fn from(path_buf: PathBuf) -> OsString
[src]
Converts a PathBuf
into a OsString
This conversion does not allocate or copy memory.
impl<'a> From<PathBuf> for Cow<'a, Path>
[src]
impl From<PathBuf> for Arc<Path>
[src]
fn from(s: PathBuf) -> Arc<Path>
[src]
Converts a PathBuf
into an Arc
by moving the PathBuf
data into a new Arc
buffer.
impl From<PathBuf> for Rc<Path>
[src]
fn from(s: PathBuf) -> Rc<Path>
[src]
Converts a PathBuf
into an Rc
by moving the PathBuf
data into a new Rc
buffer.
impl From<String> for PathBuf
[src]
fn from(s: String) -> PathBuf
[src]
Converts a String
into a PathBuf
This conversion does not allocate or copy memory.
impl<P: AsRef<Path>> FromIterator<P> for PathBuf
[src]
fn from_iter<I: IntoIterator<Item = P>>(iter: I) -> PathBuf
[src]
impl FromStr for PathBuf
[src]
type Err = Infallible
The associated error which can be returned from parsing.
fn from_str(s: &str) -> Result<Self, Self::Err>
[src]
impl Hash for PathBuf
[src]
fn hash<H: Hasher>(&self, h: &mut H)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<'a> IntoIterator for &'a PathBuf
[src]
type Item = &'a OsStr
The type of the elements being iterated over.
type IntoIter = Iter<'a>
Which kind of iterator are we turning this into?
fn into_iter(self) -> Iter<'a>
[src]
impl Ord for PathBuf
[src]
fn cmp(&self, other: &PathBuf) -> Ordering
[src]
#[must_use]fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]fn clamp(self, min: Self, max: Self) -> Self
[src]
impl<'a, 'b> PartialEq<&'a OsStr> for PathBuf
[src]
impl<'a, 'b> PartialEq<&'a Path> for PathBuf
[src]
impl<'a, 'b> PartialEq<Cow<'a, OsStr>> for PathBuf
[src]
fn eq(&self, other: &Cow<'a, OsStr>) -> bool
[src]
#[must_use]fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialEq<Cow<'a, Path>> for PathBuf
[src]
fn eq(&self, other: &Cow<'a, Path>) -> bool
[src]
#[must_use]fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialEq<OsStr> for PathBuf
[src]
impl<'a, 'b> PartialEq<OsString> for PathBuf
[src]
impl<'a, 'b> PartialEq<Path> for PathBuf
[src]
impl PartialEq<PathBuf> for PathBuf
[src]
impl<'a, 'b> PartialEq<PathBuf> for Path
[src]
impl<'a, 'b> PartialEq<PathBuf> for &'a Path
[src]
impl<'a, 'b> PartialEq<PathBuf> for Cow<'a, Path>
[src]
impl<'a, 'b> PartialEq<PathBuf> for OsStr
[src]
impl<'a, 'b> PartialEq<PathBuf> for &'a OsStr
[src]
impl<'a, 'b> PartialEq<PathBuf> for Cow<'a, OsStr>
[src]
impl<'a, 'b> PartialEq<PathBuf> for OsString
[src]
impl<'a, 'b> PartialOrd<&'a OsStr> for PathBuf
[src]
fn partial_cmp(&self, other: &&'a OsStr) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialOrd<&'a Path> for PathBuf
[src]
fn partial_cmp(&self, other: &&'a Path) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialOrd<Cow<'a, OsStr>> for PathBuf
[src]
fn partial_cmp(&self, other: &Cow<'a, OsStr>) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialOrd<Cow<'a, Path>> for PathBuf
[src]
fn partial_cmp(&self, other: &Cow<'a, Path>) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialOrd<OsStr> for PathBuf
[src]
fn partial_cmp(&self, other: &OsStr) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialOrd<OsString> for PathBuf
[src]
fn partial_cmp(&self, other: &OsString) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialOrd<Path> for PathBuf
[src]
fn partial_cmp(&self, other: &Path) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl PartialOrd<PathBuf> for PathBuf
[src]
fn partial_cmp(&self, other: &PathBuf) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialOrd<PathBuf> for Path
[src]
fn partial_cmp(&self, other: &PathBuf) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialOrd<PathBuf> for &'a Path
[src]
fn partial_cmp(&self, other: &PathBuf) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialOrd<PathBuf> for Cow<'a, Path>
[src]
fn partial_cmp(&self, other: &PathBuf) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialOrd<PathBuf> for OsStr
[src]
fn partial_cmp(&self, other: &PathBuf) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialOrd<PathBuf> for &'a OsStr
[src]
fn partial_cmp(&self, other: &PathBuf) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialOrd<PathBuf> for Cow<'a, OsStr>
[src]
fn partial_cmp(&self, other: &PathBuf) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> PartialOrd<PathBuf> for OsString
[src]
Auto Trait Implementations
impl RefUnwindSafe for PathBuf
impl Send for PathBuf
impl Sync for PathBuf
impl Unpin for PathBuf
impl UnwindSafe for PathBuf
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,