Blog post: never patterns, exhaustive matching, and uninhabited types

Yes, I've edited my post a bit before your reply. My current point of view is result of the discussion in this thread:

I agree that generally determining if type is inhabited or not is complicated (but I think is desired for proper model of the language), this is why here I've proposed to use two traits, which will allow to leave complicated corner cases out of scope for the time being.

In future Rust may become smarter and will be able optimize-out uninhabited non-ZST types as it currently does !.

I don't think that it's a usable definition if our goal is to properly define semantics of the language. (although I admit initially I was following a similar one)

Isn't it the same story as with creating &mut T to uninitialized memory? Unsafe code in practice does this, but nonetheless AFAIK doing so is considered UB.

UPD: As for &! which is often used for FFI opaque pointers, I think many consider it an unfortunate hack, which should be replaced with extern types.