• E
    Point to immutable arg/fields when trying to use as &mut · e1280d81
    Esteban Küber 提交于
    Point to immutable borrow arguments and fields when trying to use them as
    mutable borrows. Add label to primary span on "cannot borrow as mutable"
    errors.
    
    Present the following output when trying to access an immutable borrow's
    field as mutable:
    
    ```
    error[E0389]: cannot borrow data mutably in a `&` reference
      --> $DIR/issue-38147-1.rs:27:9
       |
    26 | fn f(&self) {
       |      -----  use `&mut self` here to make mutable
    27 |     f.s.push('x');
       |     ^^^ assignment into an immutable reference
    ```
    
    And the following when trying to access an immutable struct field as mutable:
    
    ```
    error: cannot borrow immutable borrowed content `*self.s` as mutable
      --> $DIR/issue-38147-3.rs:17:9
       |
    12 |     s: &'a String
       |     ------------- use `&'a mut String` here to make mutable
    ...|
    16 |     fn f(&self) {
       |          -----  use `&mut self` here to make mutable
    17 |         self.s.push('x');
       |         ^^^^^^ cannot borrow as mutable
    ```
    e1280d81
issue-38147-4.rs 570 字节