]> git.lizzy.rs Git - rust.git/blob - tests/ui/closures/issue-101696.rs
Rollup merge of #106714 - Ezrashaw:remove-e0490, r=davidtwco
[rust.git] / tests / ui / closures / issue-101696.rs
1 // check-pass
2
3 use std::marker::PhantomData;
4
5 #[derive(Default)]
6 struct MyType<'a> {
7     field: usize,
8     _phantom: PhantomData<&'a ()>,
9 }
10
11 #[derive(Default)]
12 struct MyTypeVariant<'a> {
13     field: usize,
14     _phantom: PhantomData<&'a ()>,
15 }
16
17 trait AsVariantTrait {
18     type Type;
19 }
20
21 impl<'a> AsVariantTrait for MyType<'a> {
22     type Type = MyTypeVariant<'a>;
23 }
24
25 type Variant<G> = <G as AsVariantTrait>::Type;
26
27 fn foo<T: Default, F: FnOnce(T)>(f: F) {
28     let input = T::default();
29     f(input);
30 }
31
32 fn main() {
33     foo(|a: <MyType as AsVariantTrait>::Type| {
34         a.field;
35     });
36 }