Прерывания
Прерывание — это запрос к процессору приостановить текущее выполнение, чтобы событие было обработано вовремя. Если запрос принят, процессор приостанавливает текущую работу, сохраняет своё состояние и выполняет функцию, которая называется обработчиком прерывания, чтобы обработать событие. Прерывания часто используются аппаратными устройствами, чтобы сообщить об изменениях электронного или физического состояния, которые требуют срочного внимания, например о нажатии кнопки.
То, что обработчики прерываний могут вызываться в любой момент, создаёт в embedded Rust сложность: нужна статически выделенная изменяемая память, на которую могут ссылаться и обработчик прерывания, и основной код, причём эта память должна быть всегда доступна.
Блоки unsafe {}
В этом коде много блоков unsafe {}. Как общее правило, unsafe не означает, что содержащийся в нём код небезопасен с точки зрения памяти. Это означает, что Rust не может дать гарантии безопасности в этом месте и что ответственность за безопасность памяти лежит на программисте. Например, вызов C-биндингов сам по себе небезопасен, поскольку Rust не может дать никаких гарантий безопасности для лежащего в основе C-кода.