В чем разница между "растущими" и "изменяемыми" в строке Rust? - PullRequest
0 голосов
/ 24 февраля 2019

Я читаю Язык программирования Rust .Документы определяют String как "растущий":

Расширяемая строка в кодировке UTF-8.

Имеет обнаружил, что Growable не то же самое, что и изменяемый , но они на самом деле не объясняют, что делает тип "расширяемым".

Учитывая это let mut guess = String::new(),

  1. Что означает «растущая»?
  2. Как mut меняет растущую строку?
  3. Существует ли нерастущий тип строки?

1 Ответ

0 голосов
/ 24 февраля 2019

Вы продумываете формулировку здесь;«растущий» только означает, что он может расти.A String, который первоначально выделил 3 байта для хранения "abc", может увеличиваться до 6 байтов, чтобы содержать "abcdef".Распределение памяти может стать больше (и меньше).Не существует определенной системы типов Rust, означающей слово «растущий».

Изменение емкости String - это особый тип изменения, поэтому для роста строки вам нужен изменчивый String.Вам также нужен изменяемый String для других типов изменений, которые не связаны с изменением выделения.

Изменяемый фрагмент строки (&mut str) - это тип строки, который не может стать длиннее или короче, но можетбыть изменены.

fn example(name: &mut str) {
    name.make_ascii_uppercase()
}

См. также:

...