10 советов rust с кодом

Совет №1

Эта необычная синтаксическая особенность операторов #match была предложена мне одним из подписчиков:

var_name @ match_value => … позволяет вам захватить значение match_value для использования в блоке match. Этот пример кода должен прояснить, что происходит:

10 советов rust с кодом

Совет № 2

std::time::Instant можно использовать как простой способ измерения времени выполнения блока кода.

10 советов rust с кодом

Совет № 3

TIL о числовых типах NonZero. Во время компиляции гарантировано, что значения не будут нулевыми. Это также настоящая абстракция с нулевыми затратами, поскольку если вы определите, например, Option, значение “0” будет отображено на “None”. Очень здорово! Вот пример:

10 советов rust с кодом

Совет № 4

Fn, FnMut, FnOnce. Специальные свойства, используемые для передачи закрытий в качестве аргументов функций.

  • Fn: закрытие, которое не изменяет окружение.
  • FnMut: может изменять окружение.
  • FnOnce: выполняется один раз и потребляет окружение.
    Вот пример, показывающий FnMut в действии:
10 советов rust с кодом

Совет № 5

Один из примеров, где Rust действительно блистает, – это работа с потоками и чтение их возвращаемых значений. Это кажется намного проще, чем во многих других языках. Вот простой пример обработки результатов двух потоков:

10 советов rust с кодом

Совет № 6

Итераторы можно расширять с помощью функции chain(). Rust также изящно обрабатывает цепочки #optionals, которые могут иметь или не иметь значение:

10 советов rust с кодом

Совет № 7

Знаете ли вы, что Rust поддерживает деструктуризацию большинства распространенных типов данных? Вот пример для структур:

10 советов rust с кодом

Совет № 8

Unit Structs и Tuple Structs – полезные, но малоизвестные конструкции в системе типов Rust.

  • Единичные структуры могут представлять концепцию на уровне типа. Также они удобны для реализации признаков без данных.
  • Структуры кортежей: похожи на кортежи, но могут реализовывать fns
10 советов rust с кодом

Совет № 9

Можно определять константы в трейтах, а также переопределять значения в конкретных имплах трейта.

10 советов rust с кодом

Совет № 10

В Rust есть C-совместимые типы объединений. Они по своей сути небезопасны, поскольку члены объединения используют одну и ту же память. Лучший вариант использования, который я могу придумать, – это взаимодействие с C/C++ и, возможно, с протоколами двоичных данных, объединяющими байтовые массивы с другими типами.

10 советов rust с кодом
+1
0
+1
0
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *