[snip] It's my understanding that Rust tries to encode ownership like that into its type system but that that makes its type system considerably more complicated. D doesn't make the attempt.
Reference capabilities in pony are also an interesting (albeit complicated) approach.
https://tutorial.ponylang.org/capabilities/reference-capabilities.html