Rust is interested in zero-overhead memory safety and data race freedom, while D doesn't seem to be. From a design perspective, that's a major difference.
Note that the safety benefits must of course be weighed against the number of moving parts in the type system you desire for your project.
Sealed references and transitive immutability are interesting, but they aren't nearly enough to allow most programs to be expressed without GC. You really need (a) the ability to store references in structures; (b) the ability to have multiple lifetimes per function; (c) propagation of immutability through heap objects and unique loan paths.
Note that the safety benefits must of course be weighed against the number of moving parts in the type system you desire for your project.