2023-07-27 17:04:19 -05:00
|
|
|
// issue: 114145
|
|
|
|
|
|
|
|
#![feature(return_position_impl_trait_in_trait)]
|
|
|
|
|
2023-09-06 19:45:12 -05:00
|
|
|
pub trait Iterable {
|
2023-07-27 17:04:19 -05:00
|
|
|
type Item<'a>
|
|
|
|
where
|
|
|
|
Self: 'a;
|
|
|
|
|
|
|
|
fn iter(&self) -> impl '_ + Iterator<Item = Self::Item<'_>>;
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<'a, I: 'a + Iterable> Iterable for &'a I {
|
|
|
|
type Item<'b> = I::Item<'a>
|
|
|
|
where
|
|
|
|
'b: 'a;
|
|
|
|
//~^ ERROR impl has stricter requirements than trait
|
|
|
|
|
|
|
|
fn iter(&self) -> impl 'a + Iterator<Item = I::Item<'a>> {
|
2023-09-01 23:02:11 -05:00
|
|
|
//~^ WARN impl trait in impl method signature does not match trait method signature
|
2023-07-27 17:04:19 -05:00
|
|
|
(*self).iter()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {}
|