Skip to content

Commit 3a10bdc

Browse files
clean up E0506 explanation
1 parent 1b521f5 commit 3a10bdc

File tree

1 file changed

+26
-34
lines changed
  • src/librustc_error_codes/error_codes

1 file changed

+26
-34
lines changed
+26-34
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
This error occurs when an attempt is made to assign to a borrowed value.
1+
An attempt was made to assign to a borrowed value.
22

33
Erroneous code example:
44

@@ -7,14 +7,12 @@ struct FancyNum {
77
num: u8,
88
}
99
10-
fn main() {
11-
let mut fancy_num = FancyNum { num: 5 };
12-
let fancy_ref = &fancy_num;
13-
fancy_num = FancyNum { num: 6 };
14-
// error: cannot assign to `fancy_num` because it is borrowed
10+
let mut fancy_num = FancyNum { num: 5 };
11+
let fancy_ref = &fancy_num;
12+
fancy_num = FancyNum { num: 6 };
13+
// error: cannot assign to `fancy_num` because it is borrowed
1514
16-
println!("Num: {}, Ref: {}", fancy_num.num, fancy_ref.num);
17-
}
15+
println!("Num: {}, Ref: {}", fancy_num.num, fancy_ref.num);
1816
```
1917

2018
Because `fancy_ref` still holds a reference to `fancy_num`, `fancy_num` can't
@@ -27,13 +25,11 @@ struct FancyNum {
2725
num: u8,
2826
}
2927
30-
fn main() {
31-
let mut fancy_num = FancyNum { num: 5 };
32-
let moved_num = fancy_num;
33-
fancy_num = FancyNum { num: 6 };
28+
let mut fancy_num = FancyNum { num: 5 };
29+
let moved_num = fancy_num;
30+
fancy_num = FancyNum { num: 6 };
3431
35-
println!("Num: {}, Moved num: {}", fancy_num.num, moved_num.num);
36-
}
32+
println!("Num: {}, Moved num: {}", fancy_num.num, moved_num.num);
3733
```
3834

3935
If the value has to be borrowed, try limiting the lifetime of the borrow using
@@ -44,18 +40,16 @@ struct FancyNum {
4440
num: u8,
4541
}
4642
47-
fn main() {
48-
let mut fancy_num = FancyNum { num: 5 };
49-
50-
{
51-
let fancy_ref = &fancy_num;
52-
println!("Ref: {}", fancy_ref.num);
53-
}
43+
let mut fancy_num = FancyNum { num: 5 };
5444
55-
// Works because `fancy_ref` is no longer in scope
56-
fancy_num = FancyNum { num: 6 };
57-
println!("Num: {}", fancy_num.num);
45+
{
46+
let fancy_ref = &fancy_num;
47+
println!("Ref: {}", fancy_ref.num);
5848
}
49+
50+
// Works because `fancy_ref` is no longer in scope
51+
fancy_num = FancyNum { num: 6 };
52+
println!("Num: {}", fancy_num.num);
5953
```
6054

6155
Or by moving the reference into a function:
@@ -65,17 +59,15 @@ struct FancyNum {
6559
num: u8,
6660
}
6761
68-
fn main() {
69-
let mut fancy_num = FancyNum { num: 5 };
70-
71-
print_fancy_ref(&fancy_num);
72-
73-
// Works because function borrow has ended
74-
fancy_num = FancyNum { num: 6 };
75-
println!("Num: {}", fancy_num.num);
76-
}
77-
7862
fn print_fancy_ref(fancy_ref: &FancyNum){
7963
println!("Ref: {}", fancy_ref.num);
8064
}
65+
66+
let mut fancy_num = FancyNum { num: 5 };
67+
68+
print_fancy_ref(&fancy_num);
69+
70+
// Works because function borrow has ended
71+
fancy_num = FancyNum { num: 6 };
72+
println!("Num: {}", fancy_num.num);
8173
```

0 commit comments

Comments
 (0)