1 // SPDX-License-Identifier: Apache-2.0 OR MIT
2
3 use pin_project::pin_project;
4
5 // The same implementation.
6
7 #[pin_project] //~ ERROR E0119
8 struct Foo<T, U> {
9 #[pin]
10 f1: T,
11 f2: U,
12 }
13
14 // conflicting implementations
15 impl<T, U> Unpin for Foo<T, U> where T: Unpin {} // Conditional Unpin impl
16
17 // The implementation that under different conditions.
18
19 #[pin_project] //~ ERROR E0119
20 struct Bar<T, U> {
21 #[pin]
22 f1: T,
23 f2: U,
24 }
25
26 // conflicting implementations
27 impl<T, U> Unpin for Bar<T, U> {} // Non-conditional Unpin impl
28
29 #[pin_project] //~ ERROR E0119
30 struct Baz<T, U> {
31 #[pin]
32 f1: T,
33 f2: U,
34 }
35
36 // conflicting implementations
37 impl<T: Unpin, U: Unpin> Unpin for Baz<T, U> {} // Conditional Unpin impl
38
main()39 fn main() {}
40