]> git.lizzy.rs Git - rust.git/blob - src/test/ui/impl-trait/hidden-type-is-opaque.rs
Auto merge of #95604 - nbdd0121:used2, r=petrochenkov
[rust.git] / src / test / ui / impl-trait / hidden-type-is-opaque.rs
1 // check-pass
2 #![feature(type_alias_impl_trait)]
3
4 fn reify_as() -> Thunk<impl ContFn> {
5     Thunk::new(|mut cont| {
6         cont.reify_as();
7         cont
8     })
9 }
10
11 type Tait = impl ContFn;
12
13 fn reify_as_tait() -> Thunk<Tait> {
14     Thunk::new(|mut cont| {
15         cont.reify_as();
16         cont
17     })
18 }
19
20 #[must_use]
21 struct Thunk<F>(F);
22
23 impl<F> Thunk<F> {
24     fn new(f: F) -> Self
25     where
26         F: FnOnce(Continuation) -> Continuation,
27     {
28         Thunk(f)
29     }
30 }
31
32 trait ContFn {}
33
34 impl<F: FnOnce(Continuation) -> Continuation> ContFn for F {}
35
36 struct Continuation;
37
38 impl Continuation {
39     fn reify_as(&mut self) {}
40 }
41
42 fn main() {}