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