I agree with the āsmall, self-containedā aspect. This feels like the sort of feature thatās isolated enough that itās really just a question of āwhat are the exact semantics?ā and āis the implementation effort commensurate with the benefit?ā.
Actually, another benefit: this, along with privacy, gives library writers a way to create structs you canāt exhaustively match, but still explicitly construct. i.e. letās say you have:
struct Whatsis {
pub thingy: i32,
pub hoozits: &'static str,
inexhaustive: () = ()
}
This means you can let users construct as Whatsis { thingy: 42, hoozits: "blammo", .. } rather than the equivalent (but more opaque) Whatsis::new(42, hoozits), and still being able to add fields in the future (provided they can be defaulted).