//@ edition:2024 //@ check-fail mod m { enum Void {} pub struct Internal { _v: Void, } pub enum Test { A(u32, u32), B(Internal), } } use m::Test; pub fn f1(x: &mut Test) { let r1: &mut u32 = match x { Test::A(a, _) => a, _ => todo!(), }; let r2: &mut u32 = match x { //~ ERROR cannot use `*x` because it was mutably borrowed Test::A(_, b) => b, _ => todo!(), }; let _ = *r1; let _ = *r2; } pub fn f2(x: &mut Test) { let r = &mut *x; match x { //~ ERROR cannot use `*x` because it was mutably borrowed Test::A(_, _) => {} _ => {} } let _ = r; } fn main() {}