blob: 85f38b9286f913a15d6363657e8e9d668783832e [file] [log] [blame] [view]
A variable already borrowed with a certain mutability (either mutable or
immutable) was borrowed again with a different mutability.
Erroneous code example:
```compile_fail,E0502
fn bar(x: &mut i32) {}
fn foo(a: &mut i32) {
let y = &a; // a is borrowed as immutable.
bar(a); // error: cannot borrow `*a` as mutable because `a` is also borrowed
// as immutable
println!("{}", y);
}
```
To fix this error, ensure that you don't have any other references to the
variable before trying to access it with a different mutability:
```
fn bar(x: &mut i32) {}
fn foo(a: &mut i32) {
bar(a);
let y = &a; // ok!
println!("{}", y);
}
```
For more information on Rust's ownership system, take a look at the
[References & Borrowing][references-and-borrowing] section of the Book.
[references-and-borrowing]: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html