]> git.lizzy.rs Git - rust.git/blob - src/test/ui/issues/issue-13058.rs
Rollup merge of #60492 - acrrd:issues/54054_chain, r=SimonSapin
[rust.git] / src / test / ui / issues / issue-13058.rs
1 use std::ops::Range;
2
3 trait Itble<'r, T, I: Iterator<Item=T>> { fn iter(&'r self) -> I; }
4
5 impl<'r> Itble<'r, usize, Range<usize>> for (usize, usize) {
6     fn iter(&'r self) -> Range<usize> {
7         let &(min, max) = self;
8         min..max
9     }
10 }
11
12 fn check<'r, I: Iterator<Item=usize>, T: Itble<'r, usize, I>>(cont: &T) -> bool
13 {
14     let cont_iter = cont.iter();
15 //~^ ERROR explicit lifetime required in the type of `cont` [E0621]
16     let result = cont_iter.fold(Some(0), |state, val| {
17         state.map_or(None, |mask| {
18             let bit = 1 << val;
19             if mask & bit == 0 {Some(mask|bit)} else {None}
20         })
21     });
22     result.is_some()
23 }
24
25 fn main() {
26     check(&(3, 5));
27 }