// revisions: base extended //[base] check-fail //[extended] check-pass #![cfg_attr(extended, feature(generic_associated_types_extended))] #![cfg_attr(extended, allow(incomplete_features))] pub trait FromLendingIterator: Sized { fn from_iter LendingIterator = A>>(iter: T) -> Self; } impl FromLendingIterator for Vec { fn from_iter LendingIterator = A>>(mut iter: I) -> Self { //[base]~^ impl has stricter let mut v = vec![]; while let Some(item) = iter.next() { v.push(item); } v } } pub trait LendingIterator { type Item<'a> where Self: 'a; fn next(&mut self) -> Option>; } fn main() {}