]> git.proxmox.com Git - rustc.git/blob - src/test/ui/impl-trait/hidden-type-is-opaque.rs
New upstream version 1.61.0+dfsg1
[rustc.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() {}