This error indicates that the struct, enum or enum variant must be matched non-exhaustively as it has been marked as `non_exhaustive`. When applied within a crate, downstream users of the crate will need to use the `_` pattern when matching enums and use the `..` pattern when matching structs. Downstream crates cannot match against non-exhaustive enum variants. For example, in the below example, since the enum is marked as `non_exhaustive`, it is required that downstream crates match non-exhaustively on it. ```rust,ignore (pseudo-Rust) #[non_exhaustive] pub enum Error { Message(String), Other, } impl Display for Error { fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { // This will not error, despite being marked as non_exhaustive, as this // enum is defined within the current crate, it can be matched // exhaustively. let display = match self { Message(s) => s, Other => "other or unknown error", }; formatter.write_str(display) } } ``` An example of matching non-exhaustively on the above enum is provided below: ```rust,ignore (pseudo-Rust) use mycrate::Error; // This will not error as the non_exhaustive Error enum has been matched with a // wildcard. match error { Message(s) => ..., Other => ..., _ => ..., } ``` Similarly, for structs, match with `..` to avoid this error.