Hi fellow rustaceans

I can't make sense of the two examples below yielding different results:

- This one yields a compiler error:
`no method named 'calculation' found for mutable reference`

&mut Cacher<T, U, V>`in the current scope.`

,

```
fn value(&mut self, arg: U) -> &V {
self.values.entry(arg).or_insert_with(|| &self.calculation(arg))
}
```

- while this works as expected:

```
fn value(&mut self, arg: U) -> &V {
let calculation = &self.calculation;
self.values.entry(arg).or_insert_with(|| calculation(arg))
}
```

From what I understand, the first example *consumes* the closure right away, effectively resulting in an error, since, well, there isn't a closure anymore, only the resulting value.

I would have expected the two expressions to yield identical results and I can't wrap my head around why they don't

Would be great if anyone had any hints on that