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.
Of course D is interested in those concepts, simply not to the extent that Rust is. For example, D has:
- pure functions
- opt-in strict memory safety (@safe)
- sealed references (http://wiki.dlang.org/DIP25)
- transitive immutability
- shared types