43 lines
662 B
Rust
43 lines
662 B
Rust
|
//@ known-bug: #91985
|
||
|
|
||
|
#![feature(generic_associated_types)]
|
||
|
|
||
|
pub trait Trait1 {
|
||
|
type Associated: Ord;
|
||
|
}
|
||
|
|
||
|
pub trait Trait2 {
|
||
|
type Associated: Clone;
|
||
|
}
|
||
|
|
||
|
pub trait GatTrait {
|
||
|
type Gat<T: Clone>;
|
||
|
}
|
||
|
|
||
|
pub struct GatStruct;
|
||
|
|
||
|
impl GatTrait for GatStruct {
|
||
|
type Gat<T: Clone> = Box<T>;
|
||
|
}
|
||
|
|
||
|
pub struct OuterStruct<T1: Trait1, T2: Trait2> {
|
||
|
inner: InnerStruct<T2, GatStruct>,
|
||
|
t1: T1,
|
||
|
}
|
||
|
|
||
|
pub struct InnerStruct<T: Trait2, G: GatTrait> {
|
||
|
pub gat: G::Gat<T::Associated>,
|
||
|
}
|
||
|
|
||
|
impl<T1, T2> OuterStruct<T1, T2>
|
||
|
where
|
||
|
T1: Trait1,
|
||
|
T2: Trait2<Associated = T1::Associated>,
|
||
|
{
|
||
|
pub fn new() -> Self {
|
||
|
todo!()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
pub fn main() {}
|