//! Byte string literal patterns use the mutability of the literal, rather than the mutability of //! the pattern's scrutinee. Since byte string literals are always shared references, it's a //! mismatch to use a byte string literal pattern to match on a mutable array or slice reference. //@ dont-require-annotations: NOTE fn main() { let mut val = [97u8, 10u8]; match &mut val { b"a\n" => {}, //~^ ERROR mismatched types //~| NOTE types differ in mutability _ => {}, } match &mut val[..] { b"a\n" => {}, //~^ ERROR mismatched types //~| NOTE types differ in mutability _ => {}, } }