#![feature(never_type)] #![feature(exhaustive_patterns)] mod foo { pub struct SecretlyEmpty { _priv: !, } pub struct NotSoSecretlyEmpty { pub _pub: !, } } struct NotSoSecretlyEmpty { _priv: !, } enum Foo { A(foo::SecretlyEmpty), B(foo::NotSoSecretlyEmpty), C(NotSoSecretlyEmpty), D(u32, u32), } fn main() { let x: Foo = Foo::D(123, 456); let Foo::D(_y, _z) = x; //~^ ERROR refutable pattern in local binding //~| `Foo::A(_)` not covered }