// check-pass pub trait BufferTrait<'buffer> { type Subset<'channel> where 'buffer: 'channel; fn for_each_subset(&self, f: F) where F: for<'channel> Fn(Self::Subset<'channel>); } pub struct SomeBuffer<'buffer> { samples: &'buffer [()], } impl<'buffer> BufferTrait<'buffer> for SomeBuffer<'buffer> { type Subset<'subset> = Subset<'subset> where 'buffer: 'subset; fn for_each_subset(&self, _f: F) where F: for<'subset> Fn(Subset<'subset>), { todo!() } } pub struct Subset<'subset> { buffer: &'subset [()], } fn main() {}