File tree Expand file tree Collapse file tree 2 files changed +55
-0
lines changed Expand file tree Collapse file tree 2 files changed +55
-0
lines changed Original file line number Diff line number Diff line change 1+ // We don't suggest change `&` to `&mut`
2+ // instead we suggest using .get_mut() instead of &mut, see issue #143732
3+ fn main ( ) {
4+ let mut map = std:: collections:: BTreeMap :: new ( ) ;
5+ map. insert ( 0 , "string" . to_owned ( ) ) ;
6+
7+ let string = & map[ & 0 ] ;
8+ string. push_str ( "test" ) ; //~ ERROR cannot borrow `*string` as mutable, as it is behind a `&` reference [E0596]
9+
10+ let mut map = std:: collections:: HashMap :: new ( ) ;
11+ map. insert ( 0 , "string" . to_owned ( ) ) ;
12+
13+ let string = & map[ & 0 ] ;
14+ string. push_str ( "test" ) ; //~ ERROR cannot borrow `*string` as mutable, as it is behind a `&` reference [E0596]
15+
16+ let mut vec = vec ! [ String :: new( ) , String :: new( ) ] ;
17+ let string = & vec[ 0 ] ;
18+ string. push_str ( "test" ) ; //~ ERROR cannot borrow `*string` as mutable, as it is behind a `&` reference [E0596]
19+ }
Original file line number Diff line number Diff line change 1+ error[E0596]: cannot borrow `*string` as mutable, as it is behind a `&` reference
2+ --> $DIR/suggest-use-as-mut-for-map.rs:8:5
3+ |
4+ LL | string.push_str("test");
5+ | ^^^^^^ `string` is a `&` reference, so the data it refers to cannot be borrowed as mutable
6+ |
7+ help: consider changing this to be a mutable reference
8+ |
9+ LL | let string = &mut map[&0];
10+ | +++
11+
12+ error[E0596]: cannot borrow `*string` as mutable, as it is behind a `&` reference
13+ --> $DIR/suggest-use-as-mut-for-map.rs:14:5
14+ |
15+ LL | string.push_str("test");
16+ | ^^^^^^ `string` is a `&` reference, so the data it refers to cannot be borrowed as mutable
17+ |
18+ help: consider changing this to be a mutable reference
19+ |
20+ LL | let string = &mut map[&0];
21+ | +++
22+
23+ error[E0596]: cannot borrow `*string` as mutable, as it is behind a `&` reference
24+ --> $DIR/suggest-use-as-mut-for-map.rs:18:5
25+ |
26+ LL | string.push_str("test");
27+ | ^^^^^^ `string` is a `&` reference, so the data it refers to cannot be borrowed as mutable
28+ |
29+ help: consider changing this to be a mutable reference
30+ |
31+ LL | let string = &mut vec[0];
32+ | +++
33+
34+ error: aborting due to 3 previous errors
35+
36+ For more information about this error, try `rustc --explain E0596`.
You can’t perform that action at this time.
0 commit comments