Советы новичкам в Rust

На этот раз я хочу представить очень простой пост с шестью основными советами и рекомендациями для тех, кто начинает работать с Rust.

если позволить

Вы, вероятно, закодировали некоторые match с одной соответствующей ветвью и пустым блоком, чтобы ничего не делать с остальными параметрами. Выполнение действия только при получении, например, Some(foo), Err(error) или Ok(bar). Для этих случаев у нас есть if let.

Псевдоним результата для сохранения объявлений об ошибках

Это связано с личными предпочтениями, но может быть очень полезно в случаях, когда вы снова и снова объявляете один и тот же результат в одном и том же файле или модуле. Он даже используется в библиотеке std, как вы можете видеть с std::io::Result.

include_str! и include_bytes!

Эти два макроса могут быть действительно полезны для некоторых проектов, особенно при создании прототипов или небольших программ на основе ввода текста, таких как задачи Пришествие кода.

Их использование довольно простое, они читают файл по указанному пути и сохраняют содержимое в константе при инициализации файла. Это позволит вам не жестко кодировать некоторые проблемные или большие строковые константы, которые вы даже можете убрать из системы контроля версий.

Получить индекс коллекции с перечислением

Если вы пришли из других языков и хотите перебирать коллекцию и одновременно получать индекс, вы, вероятно, по умолчанию будете кодировать цикл for, перебирая числа от нуля до длины коллекции, а затем получая доступ к элементу в индексе. В Rust вы можете использовать enumerate.

enumerate — это один из методов удивительной черты Iterator. Добавление этого метода в конце вызова итератора изменит содержимое каждого цикла на кортеж, содержащий индекс и значение элемента.

Себя

Self — мощное ключевое слово, для которого можно создать отдельный пост, особенно когда вы используете определяющие черты, но его самое простое использование — хорошая рекомендация при реализации структур.

Это позволит вам обращаться к владельцу блока фиксированным словом, что может сэкономить вам время, например, если вы решите переименовать структуру.

Читать &[T] вместо &Vec‹T›

Часто нам приходится реализовывать функции, которые работают с набором элементов. В этих случаях мы можем запросить &[T] вместо заимствованного вектора. Это предоставит нам ту же функциональность (если мы собираемся только читать) с намного большей гибкостью.

И это все на сегодня. В будущем, возможно, я сделаю второе издание с некоторыми дополнительными небольшими советами, такими как использование блоков или некоторые полезные макросы. А пока вы, как всегда, можете заглянуть в репозиторий примеров.