Rust has a certain amount of extra complexity needed to provide powerful zero-overhead abstractions. Those abstractions would be very useful for the signal processing and planning and those are areas that are performance critical.
But for code that isn't so performance critical that you're always thinking about where everything is in memory, you might as well just use a garbage collector and it's easier if that's built into the language. Language design involves tradeoffs between features and complexity.
And for the embedded side I don't need that much abstraction, and again I really like Nimrod's way of letting you talk about things specified at compile time.
Cross language interop really isn't a concern since these parts are all talking to each other across sockets or over USB. Team training is a concern but I'm actually the only person here who works in all three areas so it's not a huge one. Of course, the lack of Rust and Go ROS bindings is certainly a concern but we're talking about an ideal stack here. :)