How to apply deref coercion from &mut
to &
for references that are wrapped inside Pin<>
? That is, how to borrow Pin<&mut _>
as Pin<&_>
?
use std::pin::{Pin, pin};
fn take_immutable(_: Pin<&u32>) {}
let mutable_ref = pin!(0u32);
// Error: expected struct `Pin<&_>`
// found struct `Pin<&mut _>`
take_immutable(mutable_ref);
Pin::as_ref()
is your friend:
take_immutable(mutable_ref.as_ref());