blob: fcd855f862d71cc4834c255b6090853ded8676cb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
// run-rustfix
#![allow(unused)]
struct S;
impl S {
fn call(&mut self, f: impl FnOnce((), &mut Self)) {
// change state or something ...
f((), self);
// change state or something ...
}
fn get(&self) {}
fn set(&mut self) {}
}
fn main() {
let mut v = S;
v.call(|(), this: &mut S| v.get());
//~^ error: cannot borrow `v` as mutable because it is also borrowed as immutable
v.call(|(), this: &mut S| v.set());
//~^ error: cannot borrow `v` as mutable more than once at a time
//~| error: cannot borrow `v` as mutable more than once at a time
v.call(|(), this: &mut S| {
//~^ error: cannot borrow `v` as mutable more than once at a time
//~| error: cannot borrow `v` as mutable more than once at a time
_ = v;
v.set();
v.get();
S::get(&v);
use std::ops::Add;
let v = 0u32;
_ = v + v;
_ = v.add(3);
});
}
|