Use pointer::read_volatile e pointer::write_volatile.
Nunca segure uma referência.
addr_of! permite obter campos de estruturas sem criar uma referência intermediária.
Acesso volátil: operações de leitura ou gravação podem ter efeitos colaterais, portanto, impedem que o compilador ou o hardware os reordenem, duplicem ou omitam.
Normalmente, se você gravar e depois ler, por exemplo, por meio de uma referência mutável, o compilador pode assumir que o valor lido é o mesmo que o valor acabou de ser gravado e não se preocupar em ler a memória.
Algumas crates existentes para acesso volátil ao hardware mantêm referências, mas isso é incorreto. Sempre que uma referência existir, o compilador poderá optar por desreferenciá-la.
Use a macro addr_of! para obter ponteiros de campo de um struct de um ponteiro para o struct.