Найти тему
Ржавый код

Строки в Rust

Оглавление

Да, вы все правильно расслышали. Эта часть будет посвящена строкам. Вы можете подумать, что уже знаете все, что нужно знать о строках, но в Rust есть некоторые особенности поведения, о которых вам следует знать.

Что такое строка? Проще говоря, строка - это вектор байтов. Это означает, что строка может увеличиваться или уменьшаться в размерах подобно вектору. В Rust есть два представления строк, строка (String) и срез строки (&str). Первый - это фактический вектор байтов, представленный в виде текста в кодировке UTF-8. Второй вариант, называемый `string slice`, обладает меньшими возможностями, чем первый. Оба этих представления хранят строки в кодировке UTF-8.

Шпаргалка строкового типа

-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14

Упражнения:

Исправляем ошибки.

strings1.rs

-15

Функция возвращает “синий”, который представляет собой срез строки. Используя встроенный метод `to_string`. Мы можем преобразовать это в строку и решить нашу проблему.

-16

strings2.rs

-17

Теперь мы видим тот же сценарий с другой стороны. Мы можем передать `word` в качестве ссылки `&word`, и никаких других изменений не требуется.

-18

strings3.rs

-19

В этом упражнении мы будем использовать `trim`, `format!` и `replace` для решения каждой из этих проблем. `trim` удалит все пробелы до и в конце нашей строки. `format!` объединит две строки вместе, чтобы создать новую. `replace` заменит первый строковый аргумент вторым.

-20

strings4.rs

-21

Хорошо, вот несколько значений — некоторые из них `String`, некоторые `&str`. Ваша задача состоит в том, чтобы вызвать одну из этих двух функций для каждого значения в зависимости от того, что, по вашему мнению, представляет собой каждое значение. То есть добавьте либо `string_slice`, либо `string` перед круглыми скобками в каждой строке. Если вы правы, он будет скомпилирован.

Я оставляю это последнее упражнение на ваше усмотрение. Для вас будет лучше повозиться и совершать ошибки, чтобы понять разницу, чем для меня дать вам ответ здесь. Удачи!

Статья на list-site.