]> git.lizzy.rs Git - rust.git/blob - src/test/ui/impl-trait/issues/issue-84073.rs
:arrow_up: rust-analyzer
[rust.git] / src / test / ui / impl-trait / issues / issue-84073.rs
1 use std::marker::PhantomData;
2
3 pub trait StatefulFuture<S> {}
4 pub struct Never<T>(PhantomData<T>);
5 impl<T> StatefulFuture<T> for Never<T> {}
6
7 pub struct RaceBuilder<F, S> {
8     future: F,
9     _phantom: PhantomData<S>,
10 }
11
12 impl<T, F> RaceBuilder<T, F>
13 where
14     F: StatefulFuture<Option<T>>,
15 {
16     pub fn when(self) {}
17 }
18
19 pub struct Race<T, R> {
20     race: R,
21     _phantom: PhantomData<T>,
22 }
23
24 impl<T, R> Race<T, R>
25 where
26     R: Fn(RaceBuilder<T, Never<T>>),
27 {
28     pub fn new(race: R) {}
29 }
30
31 fn main() {
32     Race::new(|race| race.when()); //~ ERROR type annotations needed
33 }