error[E0382]: use of moved value: `foo` --> $DIR/pin-mut-reborrow.rs:14:5 | LL | let mut foo = Pin::new(&mut foo); | ------- move occurs because `foo` has type `Pin<&mut Foo>`, which does not implement the `Copy` trait LL | foo.foo(); | ----- `foo` moved due to this method call LL | foo.foo(); | ^^^ value used here after move | note: `Foo::foo` takes ownership of the receiver `self`, which moves `foo` --> $DIR/pin-mut-reborrow.rs:7:12 | LL | fn foo(self: Pin<&mut Self>) {} | ^^^^ help: consider reborrowing the `Pin` instead of moving it | LL | foo.as_mut().foo(); | +++++++++ error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0382`.