When it's time to speak directly to hardware, Rust and Haskell aren't exactly silver bullets: so much of the state ends up being in the chips instead of the program--thus outside the compiler's scope.
If we want to get away from C-level twiddling, we will also need to get away from C-level hardware.