You: "Rust is bad for video games because video games are basically composed entirely of global state and Rust is very bad at global state."
Me, wise: "Actually, Rust handles global state basically fine, you just have to know a lot of stuff that the Rust book doesn't teach you about."
(The thing you need to know is: use thread_local! a lot, or const-function constructed mutexes out of the parking_lot crate.)
Or, the thing you need to know at a higher level is:
The way Mutex and RefCell work is that you can start with an immutable reference to the outside and wind up with a mutable reference to the inside.
Also, you can call MutexGuard.deref_mut() explicitly to get an actual tier 1 &mut InnerType, which you can pass to functions.