non_exhaustive
An attribute that says more variants or fields may be added later, so adding them isn't a breaking change.
#[non_exhaustive] on an enum or struct forces other crates to include a wildcard arm when matching and forbids them from constructing the struct with a literal.
Examples
With
#[non_exhaustive] pub enum Event { Watered, Alarm }, amatchin another crate that lists both variants still fails with E0004 until it adds a_ =>arm.
See also