I've had enough experience with Rust that I rarely get stuck on borrow-checking issues, but there is one mistake I've made a couple of times that has had me confused for a long time before I eventually realized what was going on. The code below fails to compile: struct Wrapper<'a, T> { inner: &'a mut T, } impl<'a, T> Wrapper<'a, T> { fn new(inner: &'a mut T) -> Self { Self { inner } } fn reborrow(&mut self) -> Wrapper<'_, T> { Self { inner: self.inner } } } With an error like: error: lifetime...