-
Couldn't load subscription status.
- Fork 13.9k
suggest slice::swap for mem::swap(&mut x[0], &mut x[1]) borrowck error
#111403
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
r? @jackh726 (rustbot has picked a reviewer for you, use r? to override) |
|
r? rust-lang/compiler |
|
@rustbot author |
This comment has been minimized.
This comment has been minimized.
|
The test that I wrote initially would be pretty much identical in output to the split_at_mut diagnostics test after this change so I just removed mine and have split_at_mut test the help message. Is that fine? |
|
doesnt matter i guess |
…-errors
suggest `slice::swap` for `mem::swap(&mut x[0], &mut x[1])` borrowck error
Recently saw someone ask why this code (example slightly modified):
```rs
fn main() {
let mut foo = [1, 2];
std::mem::swap(&mut foo[0], &mut foo[1]);
}
```
triggers this error and how to fix it:
```
error[E0499]: cannot borrow `foo[_]` as mutable more than once at a time
--> src/main.rs:4:33
|
4 | std::mem::swap(&mut foo[0], &mut foo[1]);
| -------------- ----------- ^^^^^^^^^^^ second mutable borrow occurs here
| | |
| | first mutable borrow occurs here
| first borrow later used by call
|
= help: consider using `.split_at_mut(position)` or similar method to obtain two mutable non-overlapping sub-slices
```
The current help message is nice and goes in the right direction, but I think we can do better for this specific instance and suggest `slice::swap`, which makes this compile
…iaskrgr Rollup of 6 pull requests Successful merges: - rust-lang#107624 (Stabilize `const_cstr_methods`) - rust-lang#111403 (suggest `slice::swap` for `mem::swap(&mut x[0], &mut x[1])` borrowck error) - rust-lang#113071 (Account for late-bound vars from parent arg-position impl trait) - rust-lang#113165 (Encode item bounds for `DefKind::ImplTraitPlaceholder`) - rust-lang#113171 (Properly implement variances_of for RPITIT GAT) - rust-lang#113177 (Use structured suggestion when telling user about `for<'a>`) r? `@ghost` `@rustbot` modify labels: rollup
Recently saw someone ask why this code (example slightly modified):
triggers this error and how to fix it:
The current help message is nice and goes in the right direction, but I think we can do better for this specific instance and suggest
slice::swap, which makes this compile