22 lines
370 B
Rust
22 lines
370 B
Rust
// 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;
|
|
}
|