about summary refs log tree commit diff
path: root/library/std/src/sys/os_str/bytes.rs
diff options
context:
space:
mode:
authorThalia Archibald <thalia@archibald.dev>2025-04-11 02:52:17 -0700
committerThalia Archibald <thalia@archibald.dev>2025-04-30 23:56:39 -0700
commit7cb357a36b96781f9ff85f8a4168382243352ba1 (patch)
tree67febe2b927678f6c4f937a790ada32e4fb712a1 /library/std/src/sys/os_str/bytes.rs
parent9bfa31f632912180dc742809bcc51a97f2d7079d (diff)
downloadrust-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.rs25
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);
     }
 }