Něco jako tohle při používání std::sync::Mutex:
static promenna: Mutex<Data>
Nebo tohle v nostd?
static FOO: Mutex<RefCell<i32>> = Mutex::new(RefCell::new(42));
(z dokumentace k https://docs.rs/critical-section/latest/critical_section/struct.Mutex.html)
Bez zámku je to buď nebezpečné nebo jsou potřeba atomické typy. Se zámkem je to nebezpečné taky, pokud interrupt nastane a zámek je zamčený.
Ten druhý příklad tím netrpí, protože critical_section::Mutex zakazuje interrupty. Ta RefCell je tam jen kvůli některým speciálním případům (zanoření a klony critical section tokenů).
Pokud víte, že tohle dostatečně řeší logika aplikace, UnsafeCell to umožní. Jen to nepohlídá kompilátor za Vás. Což v C / C++ taky nedělá.