]>
Commit | Line | Data |
---|---|---|
6a06907d XL |
1 | use std::ops::Deref; |
2 | ||
3 | struct DerefTarget { | |
4 | target_field: bool, | |
5 | } | |
6 | struct Container { | |
7 | target: DerefTarget, | |
8 | container_field: bool, | |
9 | } | |
10 | ||
11 | impl Deref for Container { | |
12 | type Target = DerefTarget; | |
13 | fn deref(&self) -> &Self::Target { | |
14 | &self.target | |
15 | } | |
16 | } | |
17 | ||
18 | struct Outer { | |
19 | container: Container, | |
20 | } | |
21 | ||
22 | impl Deref for Outer { | |
23 | type Target = Container; | |
24 | fn deref(&self) -> &Self::Target { | |
25 | &self.container | |
26 | } | |
27 | } | |
28 | ||
29 | impl Outer { | |
30 | fn bad_borrow(&mut self) { | |
31 | let first = &self.target_field; | |
32 | self.container.container_field = true; //~ ERROR E0506 | |
33 | first; | |
34 | } | |
35 | } | |
36 | ||
37 | fn main() {} |