//@ known-bug: unknown #![allow(unused)] struct A(u32); pub fn main() { // The or-pattern bindings are lowered after `x`, which triggers the error. let x @ (A(a) | A(a)) = A(10); // ERROR: use of moved value assert!(x.0 == 10); assert!(a == 10); // This works. let (x @ A(a) | x @ A(a)) = A(10); assert!(x.0 == 10); assert!(a == 10); }