|  | //! 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 | 
|  | _ => {}, | 
|  | } | 
|  | } |