Clarify how String::leak and into_boxed_str differ

This commit is contained in:
Jon Gjengset 2024-05-18 17:17:15 +02:00
parent 685a80f7a0
commit 0beba9699c
1 changed files with 7 additions and 5 deletions

View File

@ -1940,8 +1940,10 @@ impl String {
/// Converts this `String` into a <code>[Box]<[str]></code>.
///
/// 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 @@ impl String {
/// 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
///