40 lines
976 B
Rust
40 lines
976 B
Rust
|
// 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| this.get());
|
||
|
//~^ error: cannot borrow `v` as mutable because it is also borrowed as immutable
|
||
|
v.call(|(), this: &mut S| this.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
|
||
|
|
||
|
_ = this;
|
||
|
this.set();
|
||
|
this.get();
|
||
|
S::get(&this);
|
||
|
|
||
|
use std::ops::Add;
|
||
|
let v = 0u32;
|
||
|
_ = v + v;
|
||
|
_ = v.add(3);
|
||
|
});
|
||
|
}
|