| pub enum X { |
| Y |
| } |
| |
| pub struct Z { |
| x: X |
| } |
| |
| fn main() { |
| let z = Z { x: X::Y }; |
| let _ = &mut z.x; //~ ERROR cannot borrow |
| } |
| |
| impl Z { |
| fn foo<'z>(&'z self) { |
| let _ = &mut self.x; //~ ERROR cannot borrow |
| } |
| |
| fn foo1(&self, other: &Z) { |
| let _ = &mut self.x; //~ ERROR cannot borrow |
| let _ = &mut other.x; //~ ERROR cannot borrow |
| } |
| |
| fn foo2<'a>(&'a self, other: &Z) { |
| let _ = &mut self.x; //~ ERROR cannot borrow |
| let _ = &mut other.x; //~ ERROR cannot borrow |
| } |
| |
| fn foo3<'a>(self: &'a Self, other: &Z) { |
| let _ = &mut self.x; //~ ERROR cannot borrow |
| let _ = &mut other.x; //~ ERROR cannot borrow |
| } |
| |
| fn foo4(other: &Z) { |
| let _ = &mut other.x; //~ ERROR cannot borrow |
| } |
| |
| } |
| |
| pub fn with_arg(z: Z, w: &Z) { |
| let _ = &mut z.x; //~ ERROR cannot borrow |
| let _ = &mut w.x; //~ ERROR cannot borrow |
| } |
| |
| pub fn with_tuple() { |
| let mut y = 0; |
| let x = (&y,); |
| *x.0 = 1; |
| //~^ ERROR cannot assign to `*x.0` which is behind a `&` reference |
| } |