1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
struct Texture;
trait Surface {
type TextureIter<'a>: Iterator<Item = &'a Texture>
where
Self: 'a;
fn get_texture(&self) -> Self::TextureIter<'_>;
}
trait Swapchain {
type Surface<'a>: Surface
where
Self: 'a;
fn get_surface(&self) -> Self::Surface<'_>;
}
impl<'s> Surface for &'s Texture {
type TextureIter<'a> = std::option::IntoIter<&'a Texture>;
//~^ ERROR the type
fn get_texture(&self) -> Self::TextureIter<'_> {
let option: Option<&Texture> = Some(self);
option.into_iter()
}
}
impl Swapchain for Texture {
type Surface<'a> = &'a Texture;
fn get_surface(&self) -> Self::Surface<'_> {
self
}
}
fn main() {}
|