error[E0308]: mismatched types
  --> $DIR/issue-57741.rs:20:9
   |
LL |     let y = match x {
   |                   -
   |                   |
   |                   this expression has type `Box<T>`
   |                   help: consider dereferencing the boxed value: `*x`
LL |         T::A(a) | T::B(a) => a,
   |         ^^^^^^^ expected `Box<T>`, found `T`
   |
   = note: expected struct `Box<T>`
                found enum `T`

error[E0308]: mismatched types
  --> $DIR/issue-57741.rs:20:19
   |
LL |     let y = match x {
   |                   -
   |                   |
   |                   this expression has type `Box<T>`
   |                   help: consider dereferencing the boxed value: `*x`
LL |         T::A(a) | T::B(a) => a,
   |                   ^^^^^^^ expected `Box<T>`, found `T`
   |
   = note: expected struct `Box<T>`
                found enum `T`

error[E0308]: mismatched types
  --> $DIR/issue-57741.rs:27:9
   |
LL |     let y = match x {
   |                   -
   |                   |
   |                   this expression has type `Box<S>`
   |                   help: consider dereferencing the boxed value: `*x`
LL |         S::A { a } | S::B { b: a } => a,
   |         ^^^^^^^^^^ expected `Box<S>`, found `S`
   |
   = note: expected struct `Box<S>`
                found enum `S`

error[E0308]: mismatched types
  --> $DIR/issue-57741.rs:27:22
   |
LL |     let y = match x {
   |                   -
   |                   |
   |                   this expression has type `Box<S>`
   |                   help: consider dereferencing the boxed value: `*x`
LL |         S::A { a } | S::B { b: a } => a,
   |                      ^^^^^^^^^^^^^ expected `Box<S>`, found `S`
   |
   = note: expected struct `Box<S>`
                found enum `S`

error: aborting due to 4 previous errors

For more information about this error, try `rustc --explain E0308`.
