Метод into_boxed_str
Метод into_boxed_str преобразует строку
типа String в тип Box<str>. Он
потребляет исходную строку и возвращает умный указатель
на строковый срез. Этот метод полезен, когда нужно
уменьшить объем занимаемой памяти: если строка была
создана с большим запасом емкости, то после
преобразования лишняя память будет освобождена.
Параметров метод не принимает.
Синтаксис
String::into_boxed_str(self) -> Box<str>
Пример
Давайте преобразуем строку "abcde" в
Box<str> и выведем результат:
fn main()
{
let s = String::from("abcde");
let res = s.into_boxed_str();
println!("{}", res);
}
Результат выполнения кода:
"abcde"
Пример
Давайте проверим, что после преобразования
переменная res имеет тип Box<str>
и занимает ровно столько памяти, сколько нужно для
хранения строки:
use std::mem;
fn main()
{
let s = String::with_capacity(100);
let s = format!("{}", s);
let s = String::from("12345");
let res = s.into_boxed_str();
println!("{}", res);
println!("{}", res.len());
println!("{}", mem::size_of_val(&res));
}
Результат выполнения кода:
"12345"
5
16
Смотрите также
-
класс
String,
который представляет изменяемую строку -
метод
into_bytes,
который преобразует строку в вектор байтов -
метод
as_str,
который возвращает строковый срез без изменения владения -
метод
shrink_to_fit,
который уменьшает емкость строки без изменения типа