use pin_project_lite::pin_project; use std::marker::PhantomPinned; struct Inner { val: T, } pin_project! { struct Foo { #[pin] inner: Inner, other: U, } } pin_project! { pub struct TrivialBounds { #[pin] field1: PhantomPinned, } } pin_project! { struct Bar<'a, T, U> { #[pin] inner: &'a mut Inner, other: U, } } fn is_unpin() {} fn main() { is_unpin::>(); //~ ERROR E0277 is_unpin::>(); // Ok is_unpin::>(); //~ ERROR E0277 is_unpin::(); //~ ERROR E0277 is_unpin::>(); //~ Ok }