3 use std::marker::PhantomData;
8 _phantom: PhantomData<&'a ()>,
12 struct MyTypeVariant<'a> {
14 _phantom: PhantomData<&'a ()>,
17 trait AsVariantTrait {
21 impl<'a> AsVariantTrait for MyType<'a> {
22 type Type = MyTypeVariant<'a>;
25 type Variant<G> = <G as AsVariantTrait>::Type;
27 fn foo<T: Default, F: FnOnce(T)>(f: F) {
28 let input = T::default();
33 foo(|a: <MyType as AsVariantTrait>::Type| {