caniuse_serde/
SupportRangeIterator.rs1#[derive(Debug, Clone)]
7pub struct SupportRangeIterator<'a>
8{
9 feature: &'a Feature<'a>,
10 range: Range<'a, Version, SupportDetail>,
11}
12
13impl<'a> Iterator for SupportRangeIterator<'a>
14{
15 type Item = (&'a Version, Support<'a>);
16
17 #[inline(always)]
19 fn next(&mut self) -> Option<Self::Item>
20 {
21 let next = self.range.next();
22 self.transform(next)
23 }
24}
25
26impl<'a> DoubleEndedIterator for SupportRangeIterator<'a>
27{
28 #[inline(always)]
30 fn next_back(&mut self) -> Option<Self::Item>
31 {
32 let next = self.range.next_back();
33 self.transform(next)
34 }
35}
36
37impl<'a> SupportRangeIterator<'a>
38{
39 #[inline(always)]
40 fn transform(&self, next: Option<(&'a Version, &'a SupportDetail)>) -> Option<(&'a Version, Support<'a>)>
41 {
42 next.map
43 (
44 |(version, support_detail)|
45 {
46 (
47 version,
48 Support
49 {
50 support_detail,
51 feature: self.feature,
52 }
53 )
54 }
55 )
56 }
57}