@@ -22,16 +22,15 @@ pub struct MemoryMapTag {
22
22
23
23
impl MemoryMapTag {
24
24
/// Return an iterator over all AVAILABLE marked memory areas.
25
- pub fn memory_areas ( & self ) -> MemoryAreaIter {
26
- MemoryAreaIter {
27
- iter : self . all_memory_areas ( ) ,
28
- }
25
+ pub fn memory_areas ( & self ) -> impl Iterator < Item = & MemoryArea > {
26
+ self . all_memory_areas ( ) . filter ( |entry| entry. typ == 1 )
29
27
}
28
+
30
29
/// Return an iterator over all marked memory areas.
31
- pub fn all_memory_areas ( & self ) -> AllMemoryAreaIter {
30
+ pub fn all_memory_areas ( & self ) -> MemoryAreaIter {
32
31
let self_ptr = self as * const MemoryMapTag ;
33
32
let start_area = ( & self . first_area ) as * const MemoryArea ;
34
- AllMemoryAreaIter {
33
+ MemoryAreaIter {
35
34
current_area : start_area as u64 ,
36
35
last_area : ( self_ptr as u64 + ( self . size - self . entry_size ) as u64 ) ,
37
36
entry_size : self . entry_size ,
@@ -99,14 +98,14 @@ pub enum MemoryAreaType {
99
98
100
99
/// An iterator over all memory areas
101
100
#[ derive( Clone , Debug ) ]
102
- pub struct AllMemoryAreaIter < ' a > {
101
+ pub struct MemoryAreaIter < ' a > {
103
102
current_area : u64 ,
104
103
last_area : u64 ,
105
104
entry_size : u32 ,
106
105
phantom : PhantomData < & ' a MemoryArea > ,
107
106
}
108
107
109
- impl < ' a > Iterator for AllMemoryAreaIter < ' a > {
108
+ impl < ' a > Iterator for MemoryAreaIter < ' a > {
110
109
type Item = & ' a MemoryArea ;
111
110
fn next ( & mut self ) -> Option < & ' a MemoryArea > {
112
111
if self . current_area > self . last_area {
@@ -119,24 +118,6 @@ impl<'a> Iterator for AllMemoryAreaIter<'a> {
119
118
}
120
119
}
121
120
122
- /// An iterator over Available memory areas.
123
- #[ derive( Clone , Debug ) ]
124
- pub struct MemoryAreaIter < ' a > {
125
- iter : AllMemoryAreaIter < ' a > ,
126
- }
127
-
128
- impl < ' a > Iterator for MemoryAreaIter < ' a > {
129
- type Item = & ' a MemoryArea ;
130
- fn next ( & mut self ) -> Option < & ' a MemoryArea > {
131
- let ret = self . iter . next ( ) ?;
132
- if ret. typ == 1 {
133
- Some ( ret)
134
- } else {
135
- self . next ( )
136
- }
137
- }
138
- }
139
-
140
121
/// EFI memory map as per EFI specification.
141
122
#[ derive( Debug ) ]
142
123
#[ repr( C ) ]
0 commit comments