error[E0308]: mismatched types --> $DIR/issue-15896.rs:11:11 | LL | let u = match e { | - this expression has type `E` LL | E::B( LL | Tau{t: x}, | ^^^^^^^^^ expected enum `R`, found struct `Tau` error: aborting due to previous error For more information about this error, try `rustc --explain E0308`.