rustc needs to look at the entire crate because there's no header files that provide information about other items like C++. rustc does parallelize internally though: https://doc.rust-lang.org/rustc/codegen-options/index.html#c...
Why do I have to make the choice between faster compiles and faster binaries?
Compiling with and without optimizations is another example of that choice.