1 use std::marker::PhantomData;
3 pub trait StatefulFuture<S> {}
4 pub struct Never<T>(PhantomData<T>);
5 impl<T> StatefulFuture<T> for Never<T> {}
7 pub struct RaceBuilder<F, S> {
9 _phantom: PhantomData<S>,
12 impl<T, F> RaceBuilder<T, F>
14 F: StatefulFuture<Option<T>>,
19 pub struct Race<T, R> {
21 _phantom: PhantomData<T>,
26 R: Fn(RaceBuilder<T, Never<T>>),
28 pub fn new(race: R) {}
32 Race::new(|race| race.when()); //~ ERROR type annotations needed