Статические гарантии
Система типов Rust предотвращает гонки данных на этапе компиляции (см. трейты Send и Sync). Система типов также может проверять на этапе компиляции и другие свойства, что в некоторых случаях снижает потребность в проверках во время выполнения.
Применительно к встраиваемым программам эти статические проверки можно использовать, например, чтобы обеспечить правильную настройку интерфейсов ввода-вывода. Например, можно спроектировать API так, что инициализировать последовательный интерфейс можно только после предварительной настройки выводов, которые будет использовать этот интерфейс.
Также можно статически проверить, что такие операции, как установка вывода в низкий уровень, могут выполняться только над правильно настроенной периферией. Например, попытка изменить выходное состояние вывода, настроенного в режим плавающего входа, вызовет ошибку компиляции.
Кроме того, как мы видели в предыдущей главе, концепцию владения можно применить к периферии, чтобы только определённые части программы могли изменять периферию. Такой контроль доступа делает программное обеспечение легче для понимания по сравнению с альтернативой — рассматривать периферию как глобальное изменяемое состояние.