There have been three attempts at something like this over the years that have a lot of interesting discussion attached:
https://github.com/rust-lang/rfcs/pull/402 https://github.com/rust-lang/rfcs/pull/514 https://github.com/rust-lang/rfcs/pull/1154