rust/tests/ui/unsized/issue-75899-but-gats.rs

22 lines
371 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;
}