diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-11-29 22:43:18 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-29 22:43:18 +0100 |
| commit | 804fa66a027a5813a30197bef9da5afb1dc104a9 (patch) | |
| tree | 75957360601fb0403309929dca9d021a8995b182 | |
| parent | ca8f4c8d72f78c0e691a4cdf862be7cd0992ccbc (diff) | |
| parent | 9d66ab0f9dea6d8203ceeb29e7da0fd48945ddb7 (diff) | |
| download | rust-804fa66a027a5813a30197bef9da5afb1dc104a9.tar.gz rust-804fa66a027a5813a30197bef9da5afb1dc104a9.zip | |
Rollup merge of #105002 - zertosh:acp-140, r=dtolnay
Add `PathBuf::as_mut_os_string` and `Path::as_mut_os_str` Implements rust-lang/libs-team#140 (tracking issue #105021).
| -rw-r--r-- | library/std/src/path.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/library/std/src/path.rs b/library/std/src/path.rs index af88b9070c1..6c957c2fa90 100644 --- a/library/std/src/path.rs +++ b/library/std/src/path.rs @@ -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 @@ -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. |
