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