Skip to content

Commit

Permalink
Rollup merge of #105002 - zertosh:acp-140, r=dtolnay
Browse files Browse the repository at this point in the history
Add `PathBuf::as_mut_os_string` and `Path::as_mut_os_str`

Implements rust-lang/libs-team#140 (tracking issue #105021).
  • Loading branch information
matthiaskrgr committed Nov 29, 2022
2 parents ca8f4c8 + 9d66ab0 commit 804fa66
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions library/std/src/path.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1463,6 +1463,30 @@ impl PathBuf {
true
}

/// Yields a mutable reference to the underlying [`OsString`] instance.
///
/// # Examples
///
/// ```
/// #![feature(path_as_mut_os_str)]
/// use std::path::{Path, PathBuf};
///
/// let mut path = PathBuf::from("/foo");
///
/// path.push("bar");
/// assert_eq!(path, Path::new("/foo/bar"));
///
/// // OsString's `push` does not add a separator.
/// path.as_mut_os_string().push("baz");
/// assert_eq!(path, Path::new("/foo/barbaz"));
/// ```
#[unstable(feature = "path_as_mut_os_str", issue = "105021")]
#[must_use]
#[inline]
pub fn as_mut_os_string(&mut self) -> &mut OsString {
&mut self.inner
}

/// Consumes the `PathBuf`, yielding its internal [`OsString`] storage.
///
/// # Examples
Expand Down Expand Up @@ -1993,6 +2017,28 @@ impl Path {
&self.inner
}

/// Yields a mutable reference to the underlying [`OsStr`] slice.
///
/// # Examples
///
/// ```
/// #![feature(path_as_mut_os_str)]
/// use std::path::{Path, PathBuf};
///
/// let mut path = PathBuf::from("/Foo.TXT").into_boxed_path();
///
/// assert_ne!(&*path, Path::new("/foo.txt"));
///
/// path.as_mut_os_str().make_ascii_lowercase();
/// assert_eq!(&*path, Path::new("/foo.txt"));
/// ```
#[unstable(feature = "path_as_mut_os_str", issue = "105021")]
#[must_use]
#[inline]
pub fn as_mut_os_str(&mut self) -> &mut OsStr {
&mut self.inner
}

/// Yields a [`&str`] slice if the `Path` is valid unicode.
///
/// This conversion may entail doing a check for UTF-8 validity.
Expand Down

0 comments on commit 804fa66

Please sign in to comment.