diff options
| author | Thalia Archibald <thalia@archibald.dev> | 2025-04-11 02:52:17 -0700 |
|---|---|---|
| committer | Thalia Archibald <thalia@archibald.dev> | 2025-04-30 23:56:39 -0700 |
| commit | 7cb357a36b96781f9ff85f8a4168382243352ba1 (patch) | |
| tree | 67febe2b927678f6c4f937a790ada32e4fb712a1 /library/std/src/sys/os_str/bytes.rs | |
| parent | 9bfa31f632912180dc742809bcc51a97f2d7079d (diff) | |
| download | rust-7cb357a36b96781f9ff85f8a4168382243352ba1.tar.gz rust-7cb357a36b96781f9ff85f8a4168382243352ba1.zip | |
Make internal `OsString::truncate` and `extend_from_slice` unsafe
Communicate the safety invariants of these methods with `unsafe fn` rather than privacy.
Diffstat (limited to 'library/std/src/sys/os_str/bytes.rs')
| -rw-r--r-- | library/std/src/sys/os_str/bytes.rs | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/library/std/src/sys/os_str/bytes.rs b/library/std/src/sys/os_str/bytes.rs index dfff2d3e5d3..4a8808c9230 100644 --- a/library/std/src/sys/os_str/bytes.rs +++ b/library/std/src/sys/os_str/bytes.rs @@ -216,19 +216,26 @@ impl Buf { self.as_slice().into_rc() } - /// Provides plumbing to core `Vec::truncate`. - /// More well behaving alternative to allowing outer types - /// full mutable access to the core `Vec`. - #[inline] - pub(crate) fn truncate(&mut self, len: usize) { + /// Provides plumbing to `Vec::truncate` without giving full mutable access + /// to the `Vec`. + /// + /// # Safety + /// + /// The length must be at an `OsStr` boundary, according to + /// `Slice::check_public_boundary`. + #[inline] + pub unsafe fn truncate_unchecked(&mut self, len: usize) { self.inner.truncate(len); } - /// Provides plumbing to core `Vec::extend_from_slice`. - /// More well behaving alternative to allowing outer types - /// full mutable access to the core `Vec`. + /// Provides plumbing to `Vec::extend_from_slice` without giving full + /// mutable access to the `Vec`. + /// + /// # Safety + /// + /// This encoding has no safety requirements. #[inline] - pub(crate) fn extend_from_slice(&mut self, other: &[u8]) { + pub unsafe fn extend_from_slice_unchecked(&mut self, other: &[u8]) { self.inner.extend_from_slice(other); } } |
