4 use std::marker::PhantomData;
7 type Gat<'a>: ?Sized where Self: 'a;
10 struct Bar<'a, T: Foo + 'a>(T::Gat<'a>);
12 struct Baz<T: ?Sized>(PhantomData<T>);
14 impl<T: ?Sized> Foo for Baz<T> {
15 type Gat<'a> = T where Self: 'a;
19 let x = Bar::<'_, Baz<()>>(());
20 let y: &Bar<'_, Baz<dyn Debug>> = &x;