(my usual disclaimer: I'm not asking this passive aggressively, I'm genuinely interested in the answer to this).
(my usual disclaimer: I'm not asking this passive aggressively, I'm genuinely interested in the answer to this).
The project works exactly as the original and recreates the memory state byte for byte, so like the original it has different tasks running at once that are reading and writing to shared memory. Rust's borrow check exists to prevent this sort of thing, because it is so hard to do it correctly or prove it is correct once you have done it. So to use rust, the author would have needed to either totally re-architect Space Invaders, or write the whole thing in ugly, non-idiomatic rust.
Rust simply doesn't let you do the things assembly and C programmers did all the time in 1978 (and with the complexity of our software now and the extra computing power, that's usually for the better). C, on the other hand, has at times been described as "portable assembly," which makes it a good choice for someone wanting to stay true to the original program flow.
The other big reason I used C, is that it is more of a lingua franca than something more modern, and will make the code more accessible to a wider audience.
Rust does let you do those things. You could run this repo through c2rust and get a working Rust program.
It'll be ugly Rust code, though.
Every language has a problem that it is good at solving, and some languages express the underlying idea more clearly than others. In this case, the author has done a bang-up job picking a common, everyday language to solve the problem.