diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-07-22 11:48:53 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-22 11:48:53 +0200 |
| commit | 0877d11e8dee12839804909171e61ad77ae0656a (patch) | |
| tree | 4e21a2b0734666644c2d6e099190aab7d633ef2d /library/std/src/sys | |
| parent | 58a4be1dfb696132b129fcb33bee91070e2fdbdb (diff) | |
| parent | ee604fccd9d91b8f4cf9b4cad5bafdf698dd0335 (diff) | |
Rollup merge of #113442 - epage:osstring, r=cuviper
Allow limited access to `OsString` bytes This extends #109698 to allow no-cost conversion between `Vec<u8>` and `OsString` as suggested in feedback from `os_str_bytes` crate in #111544.
Diffstat (limited to 'library/std/src/sys')
| -rw-r--r-- | library/std/src/sys/unix/os_str.rs | 10 | ||||
| -rw-r--r-- | library/std/src/sys/windows/os_str.rs | 10 |
2 files changed, 20 insertions, 0 deletions
diff --git a/library/std/src/sys/unix/os_str.rs b/library/std/src/sys/unix/os_str.rs index f7333fd5a1f..463b0a27515 100644 --- a/library/std/src/sys/unix/os_str.rs +++ b/library/std/src/sys/unix/os_str.rs @@ -96,6 +96,16 @@ impl AsInner<[u8]> for Buf { } impl Buf { + #[inline] + pub fn into_os_str_bytes(self) -> Vec<u8> { + self.inner + } + + #[inline] + pub unsafe fn from_os_str_bytes_unchecked(s: Vec<u8>) -> Self { + Self { inner: s } + } + pub fn from_string(s: String) -> Buf { Buf { inner: s.into_bytes() } } diff --git a/library/std/src/sys/windows/os_str.rs b/library/std/src/sys/windows/os_str.rs index 16c4f55c687..4708657a907 100644 --- a/library/std/src/sys/windows/os_str.rs +++ b/library/std/src/sys/windows/os_str.rs @@ -63,6 +63,16 @@ impl fmt::Display for Slice { } impl Buf { + #[inline] + pub fn into_os_str_bytes(self) -> Vec<u8> { + self.inner.into_bytes() + } + + #[inline] + pub unsafe fn from_os_str_bytes_unchecked(s: Vec<u8>) -> Self { + Self { inner: Wtf8Buf::from_bytes_unchecked(s) } + } + pub fn with_capacity(capacity: usize) -> Buf { Buf { inner: Wtf8Buf::with_capacity(capacity) } } |
