rust/tests/ui/associated-type-bounds/issue-83017.rs

38 lines
448 B
Rust

//@ check-pass
trait TraitA<'a> {
type AsA;
}
trait TraitB<'a, 'b> {
type AsB;
}
trait TraitC<'a, 'b, 'c> {}
struct X;
impl<'a, 'b, 'c> TraitC<'a, 'b, 'c> for X {}
struct Y;
impl<'a, 'b> TraitB<'a, 'b> for Y {
type AsB = X;
}
struct Z;
impl<'a> TraitA<'a> for Z {
type AsA = Y;
}
fn foo<T>()
where
for<'a> T: TraitA<'a, AsA: for<'b> TraitB<'a, 'b, AsB: for<'c> TraitC<'a, 'b, 'c>>>,
{
}
fn main() {
foo::<Z>();
}