| //@ 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); |
| }); |
| } |