1 use std::pin::Pin; 2 3 use pin_project::{pin_project, pinned_drop}; 4 5 // In `Drop` impl, the implementor must specify the same requirement as type definition. 6 7 struct DropImpl<T> { 8 f: T, 9 } 10 11 impl<T: Unpin> Drop for DropImpl<T> { 12 //~^ ERROR E0367 drop(&mut self)13 fn drop(&mut self) {} 14 } 15 16 #[pin_project(PinnedDrop)] //~ ERROR E0277 17 struct PinnedDropImpl<T> { 18 #[pin] 19 f: T, 20 } 21 22 #[pinned_drop] 23 impl<T: Unpin> PinnedDrop for PinnedDropImpl<T> { drop(self: Pin<&mut Self>)24 fn drop(self: Pin<&mut Self>) {} 25 } 26 main()27fn main() {} 28