This repository was archived by the owner on May 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +44
-0
lines changed Expand file tree Collapse file tree 2 files changed +44
-0
lines changed Original file line number Diff line number Diff line change
1
+ //! Byte string literal patterns use the mutability of the literal, rather than the mutability of
2
+ //! the pattern's scrutinee. Since byte string literals are always shared references, it's a
3
+ //! mismatch to use a byte string literal pattern to match on a mutable array or slice reference.
4
+
5
+ fn main ( ) {
6
+ let mut val = [ 97u8 , 10u8 ] ;
7
+ match & mut val {
8
+ b"a\n " => { } ,
9
+ //~^ ERROR mismatched types
10
+ //~| types differ in mutability
11
+ _ => { } ,
12
+ }
13
+ match & mut val[ ..] {
14
+ b"a\n " => { } ,
15
+ //~^ ERROR mismatched types
16
+ //~| types differ in mutability
17
+ _ => { } ,
18
+ }
19
+ }
Original file line number Diff line number Diff line change
1
+ error[E0308]: mismatched types
2
+ --> $DIR/byte-string-mutability-mismatch.rs:8:9
3
+ |
4
+ LL | match &mut val {
5
+ | -------- this expression has type `&mut [u8; 2]`
6
+ LL | b"a\n" => {},
7
+ | ^^^^^^ types differ in mutability
8
+ |
9
+ = note: expected mutable reference `&mut _`
10
+ found reference `&'static _`
11
+
12
+ error[E0308]: mismatched types
13
+ --> $DIR/byte-string-mutability-mismatch.rs:14:10
14
+ |
15
+ LL | match &mut val[..] {
16
+ | ------------ this expression has type `&mut [u8]`
17
+ LL | b"a\n" => {},
18
+ | ^^^^^^ types differ in mutability
19
+ |
20
+ = note: expected mutable reference `&mut _`
21
+ found reference `&'static _`
22
+
23
+ error: aborting due to 2 previous errors
24
+
25
+ For more information about this error, try `rustc --explain E0308`.
You can’t perform that action at this time.
0 commit comments