3 #![feature(generic_associated_types)]
5 use std::marker::PhantomData;
7 pub trait GenAssoc<T> {
9 fn iter(&self) -> Self::Iter<'_>;
10 fn reborrow<'longt: 'shortt, 'shortt>(iter: Self::Iter<'longt>) -> Self::Iter<'shortt>;
13 pub struct Wrapper<'a, T: 'a, A: GenAssoc<T>> {
18 impl<'ai, T: 'ai, A: GenAssoc<T>> GenAssoc<T> for Wrapper<'ai, T, A>
23 fn iter<'s>(&'s self) -> Self::Iter<'s> {
24 let a = A::reborrow::<'ai, 's>(self.a.clone());
27 fn reborrow<'long: 'short, 'short>(iter: Self::Iter<'long>) -> Self::Iter<'short> {