From 0beba9699c6a30dfbf1241e3ca264d7a2b23d5f7 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sat, 18 May 2024 17:17:15 +0200 Subject: [PATCH] Clarify how String::leak and into_boxed_str differ --- library/alloc/src/string.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/library/alloc/src/string.rs b/library/alloc/src/string.rs index 2a859ad55ee..335a1a8ffb3 100644 --- a/library/alloc/src/string.rs +++ b/library/alloc/src/string.rs @@ -1940,8 +1940,10 @@ pub fn replace_range(&mut self, range: R, replace_with: &str) /// Converts this `String` into a [Box]<[str]>. /// - /// This will drop any excess capacity. + /// Before doing the conversion, this method discards excess capacity like [`shrink_to_fit`]. + /// Note that this call may reallocate and copy the bytes of the string. /// + /// [`shrink_to_fit`]: String::shrink_to_fit /// [str]: prim@str "str" /// /// # Examples @@ -1967,10 +1969,10 @@ pub fn into_boxed_str(self) -> Box { /// this function is ideally used for data that lives for the remainder of the program's life, /// as dropping the returned reference will cause a memory leak. /// - /// It does not reallocate or shrink the `String`, - /// so the leaked allocation may include unused capacity that is not part - /// of the returned slice. If you don't want that, call [`into_boxed_str`], - /// and then [`Box::leak`]. + /// It does not reallocate or shrink the `String`, so the leaked allocation may include unused + /// capacity that is not part of the returned slice. If you want to discard excess capacity, + /// call [`into_boxed_str`], and then [`Box::leak`] instead. However, keep in mind that + /// trimming the capacity may result in a reallocation and copy. /// /// [`into_boxed_str`]: Self::into_boxed_str ///