]> git.lizzy.rs Git - rust.git/blob - tests/ui/generic-associated-types/extended/lending_iterator_2.rs
Merge commit '598f0909568a51de8a2d1148f55a644fd8dffad0' into sync_cg_clif-2023-01-24
[rust.git] / tests / ui / generic-associated-types / extended / lending_iterator_2.rs
1 // revisions: base extended
2 //[base] check-fail
3 //[extended] check-pass
4
5 #![cfg_attr(extended, feature(generic_associated_types_extended))]
6 #![cfg_attr(extended, allow(incomplete_features))]
7
8 pub trait FromLendingIterator<A>: Sized {
9     fn from_iter<T: for<'x> LendingIterator<Item<'x> = A>>(iter: T) -> Self;
10 }
11
12 impl<A> FromLendingIterator<A> for Vec<A> {
13     fn from_iter<I: for<'x> LendingIterator<Item<'x> = A>>(mut iter: I) -> Self {
14         //[base]~^ impl has stricter
15         let mut v = vec![];
16         while let Some(item) = iter.next() {
17             v.push(item);
18         }
19         v
20     }
21 }
22
23 pub trait LendingIterator {
24     type Item<'a>
25     where
26         Self: 'a;
27     fn next(&mut self) -> Option<Self::Item<'_>>;
28 }
29
30 fn main() {}