Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Предсказуемость

Конструкторы используются вместо extension-трейтов (C-CTOR)

Вся периферия, к которой HAL добавляет функциональность, должна оборачиваться в новый тип, даже если для этой функциональности не требуются дополнительные поля.

Следует избегать extension-трейтов, реализованных для сырой периферии.

Методы помечаются #[inline] там, где это уместно (C-INLINE)

Компилятор Rust по умолчанию не выполняет полную инлайнизацию через границы крейтов. Поскольку встраиваемые приложения чувствительны к неожиданному росту размера кода, #[inline] следует использовать, чтобы направлять компилятор следующим образом:

  • Все «маленькие» функции следует помечать #[inline]. Что считать «маленькой» функцией — вопрос субъективный, но, как правило, к маленьким относятся все функции, которые, как ожидается, компилируются в последовательности из одной или нескольких инструкций.
  • Функции, которые с большой вероятностью получат константные значения в качестве параметров, следует помечать как #[inline]. Это позволяет компилятору вычислить даже сложную логику инициализации на этапе компиляции, если входные данные функции известны.