Do this at the LLVM level and you get way more languages for free.
Looks like people have had this idea before: https://internals.rust-lang.org/t/safe-rust-sandboxing-untru...
On the other hand, maybe this role is better served by WebAssembly.
Especially when there are many currently known bugs of this sort:
https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Ais...
Safety guarantees can only work if you carefully choose and rely on appropriate abstractions for your problem.
But verification can be easier for higher-level languages.
Rust's type system provides memory and race safety, but those details are lost at a lower level. It's very hard to analyze data races at the assembly level!