В чем различия между String и &str в Rust?

Этот вопрос проверяет понимание разницы между владением строки (String) и ссылкой на строку (&str).

Короткий ответ

String — это владимый тип данных, размещённый в куче. Он изменяем и позволяет манипулировать содержимым строки.
&str — это заимствованный тип данных, обычно используемый для чтения строковых данных. Он неизменяем и эффективен для передачи строк в функции.

Длинный ответ

В Rust строки представлены двумя основными типами: String и &str. Эти типы имеют разные цели и особенности.

1. String:

- Владимый тип данных.

- Хранится в куче, что позволяет динамически изменять содержимое.

- Подходит, когда требуется создавать, изменять или сохранять строку.

- Пример создания:

let mut owned = String::from("Hello");
owned.push_str(", world!");
println!("{}", owned); // "Hello, world!"

- &str:

- Заимствованный тип данных.

- Представляет неизменяемую ссылку на строку, хранящуюся либо в куче, либо в статической памяти.

- Эффективен для передачи строк без их копирования.

- Пример использования:

let borrowed: &str = "Hello, world!";
println!("{}", borrowed);

 

Основные отличия:

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

- Методы String ориентированы на изменение строки (push, clear), тогда как методы &str предназначены для чтения и анализа строки (len, contains).


Используйте String для хранения и изменения строк, а &str — для передачи ссылок на строки и работы с неизменяемыми данными.

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Rust

Ключевые слова

Подпишись на Rust Developer в телеграм