Этот вопрос проверяет понимание разницы между владением строки (String) и ссылкой на строку (&str).
String — это владимый тип данных, размещённый в куче. Он изменяем и позволяет манипулировать содержимым строки.
&str — это заимствованный тип данных, обычно используемый для чтения строковых данных. Он неизменяем и эффективен для передачи строк в функции.
В Rust строки представлены двумя основными типами: String и &str. Эти типы имеют разные цели и особенности.
1. String:
Владимый тип данных.
Хранится в куче, что позволяет динамически изменять содержимое.
Подходит, когда требуется создавать, изменять или сохранять строку.
Пример создания:
let mut owned = String::from("Hello");
owned.push_str(", world!");
println!("{}", owned); // "Hello, world!"2. &str:
Заимствованный тип данных.
Представляет неизменяемую ссылку на строку, хранящуюся либо в куче, либо в статической памяти.
Эффективен для передачи строк без их копирования.
Пример использования:
let borrowed: &str = "Hello, world!";
println!("{}", borrowed);Основные отличия:
String владеет данными и освобождает их при выходе из области видимости, в то время как &str ссылается на данные, которыми управляет кто-то другой.
Методы String ориентированы на изменение строки (push, clear), тогда как методы &str предназначены для чтения и анализа строки (len, contains).
Используйте String для хранения и изменения строк, а &str — для передачи ссылок на строки и работы с неизменяемыми данными.