• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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()27 fn main() {}
28