use auxiliary_macro::remove_attr; use pin_project::pin_project; use std::{marker::PhantomPinned, pin::Pin}; fn is_unpin() {} #[pin_project] #[remove_attr(field_all)] struct A { #[pin] f: PhantomPinned, } #[remove_attr(field_all)] #[pin_project] struct B { #[pin] f: PhantomPinned, } fn main() { is_unpin::(); is_unpin::(); let mut x = A { f: PhantomPinned }; let x = Pin::new(&mut x).project(); let _: Pin<&mut PhantomPinned> = x.f; //~ ERROR E0308 let mut x = B { f: PhantomPinned }; let x = Pin::new(&mut x).project(); let _: Pin<&mut PhantomPinned> = x.f; //~ ERROR E0308 }