I think the issue goes slightly deeper than namespacing/mangling.
Rust doesn't have the parallel compilation to the same extent that C++ does. Rust compilation units form a direct acyclic graph, and have to be compiled in topological sort order. In contrast, C++ compilation model is embarrassingly parallel (meaning that you can compiled all CUs in parallel) (at least, pre C++20 modules).
Rust's analogue to ODR would be coherence rules, and, indeed the same DAG structure that prevents embarrassingly parallel compilation allows to check coherence at compiled time. This is an interesting tradeoff, thanks for pointing this out!
That said, I think the practical solution here would be to push ORD/coherence checks to the linking step .