struct Bar;

impl Bar {
    fn bar(&mut self, _: impl Fn()) {}
}

struct Foo {
    thing: Bar,
    number: usize,
}

impl Foo {
    fn foo(&mut self) {
        self.thing.bar(|| {
        //~^ ERROR cannot borrow `self.thing` as mutable because it is also borrowed as immutable [E0502]
            &self.number;
        });
    }
}

fn main() {}