| //@ check-pass | |
| use std::fmt::Debug; | |
| use std::marker::PhantomData; | |
| trait Foo { | |
| type Gat<'a>: ?Sized where Self: 'a; | |
| } | |
| struct Bar<'a, T: Foo + 'a>(T::Gat<'a>); | |
| struct Baz<T: ?Sized>(PhantomData<T>); | |
| impl<T: ?Sized> Foo for Baz<T> { | |
| type Gat<'a> = T where Self: 'a; | |
| } | |
| fn main() { | |
| let x = Bar::<'_, Baz<()>>(()); | |
| let y: &Bar<'_, Baz<dyn Debug>> = &x; | |
| } |