Метод capacity
Метод capacity возвращает текущую емкость
строки String. Емкость - это количество
байт, которое строка может вместить в текущий
момент без дополнительного выделения памяти.
Метод не принимает параметров и возвращает
значение типа usize.
Важно понимать, что емкость не равна длине строки. Длина строки - это количество байт, которые реально хранятся в строке, а емкость - это размер выделенного буфера. Емкость всегда больше или равна длине строки.
Синтаксис
string.capacity()
Пример
Давайте создадим пустую строку и посмотрим ее начальную емкость:
fn main()
{
let s = String::new();
println!("{}", s.capacity());
}
Результат выполнения кода:
0
Пример
Давайте создадим строку из литерала и посмотрим ее емкость:
fn main()
{
let s = String::from("abcde");
println!("{}", s.capacity());
}
Результат выполнения кода:
5
Пример
Давайте создадим строку с заданной емкостью
через метод with_capacity и посмотрим
ее емкость:
fn main()
{
let s = String::with_capacity(10);
println!("{}", s.capacity());
}
Результат выполнения кода:
10
Пример
Давайте добавим данные в строку и посмотрим, как меняется ее длина и емкость:
fn main()
{
let mut s = String::new();
println!("capacity: {}, len: {}", s.capacity(), s.len());
s.push_str("abcde");
println!("capacity: {}, len: {}", s.capacity(), s.len());
s.push_str("12345");
println!("capacity: {}, len: {}", s.capacity(), s.len());
}
Результат выполнения кода:
capacity: 0, len: 0
capacity: 8, len: 5
capacity: 16, len: 10
Смотрите также
-
метод
with_capacity,
который создает строку с заданной емкостью -
метод
reserve,
который резервирует дополнительную емкость для строки -
метод
shrink_to_fit,
который уменьшает емкость строки до ее длины -
метод
new,
который создает новую пустую строку