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