mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 14:27:49 +00:00
Merge pull request #71 from phil-opp/rename-min_by
The `Iterator::min_by` was renamed to `min_by_key`
This commit is contained in:
@@ -301,7 +301,7 @@ fn choose_next_area(&mut self) {
|
|||||||
self.current_area = self.areas.clone().filter(|area| {
|
self.current_area = self.areas.clone().filter(|area| {
|
||||||
let address = area.base_addr + area.length - 1;
|
let address = area.base_addr + area.length - 1;
|
||||||
Frame::containing_address(address as usize) >= self.next_free_frame
|
Frame::containing_address(address as usize) >= self.next_free_frame
|
||||||
}).min_by(|area| area.base_addr);
|
}).min_by_key(|area| area.base_addr);
|
||||||
|
|
||||||
if let Some(area) = self.current_area {
|
if let Some(area) = self.current_area {
|
||||||
let start_frame = Frame::containing_address(area.base_addr as usize);
|
let start_frame = Frame::containing_address(area.base_addr as usize);
|
||||||
@@ -311,9 +311,9 @@ fn choose_next_area(&mut self) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
This function chooses the area with the minimal base address that still has free frames, i.e. `next_free_frame` is smaller than its last frame. Note that we need to clone the iterator because the [min_by] function consumes it. If there are no areas with free frames left, `min_by` automatically returns the desired `None`.
|
This function chooses the area with the minimal base address that still has free frames, i.e. `next_free_frame` is smaller than its last frame. Note that we need to clone the iterator because the [min_by_key] function consumes it. If there are no areas with free frames left, `min_by_key` automatically returns the desired `None`.
|
||||||
|
|
||||||
[min_by]: https://doc.rust-lang.org/nightly/core/iter/trait.Iterator.html#method.min_by
|
[min_by_key]: https://doc.rust-lang.org/nightly/core/iter/trait.Iterator.html#method.min_by_key
|
||||||
|
|
||||||
If the `next_free_frame` is below the new `current_area`, it needs to be updated to the area's start frame. Else, the `allocate_frame` call could return an unavailable frame.
|
If the `next_free_frame` is below the new `current_area`, it needs to be updated to the area's start frame. Else, the `allocate_frame` call could return an unavailable frame.
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ impl AreaFrameAllocator {
|
|||||||
self.current_area = self.areas.clone().filter(|area| {
|
self.current_area = self.areas.clone().filter(|area| {
|
||||||
let address = area.base_addr + area.length - 1;
|
let address = area.base_addr + area.length - 1;
|
||||||
Frame::containing_address(address as usize) >= self.next_free_frame
|
Frame::containing_address(address as usize) >= self.next_free_frame
|
||||||
}).min_by(|area| area.base_addr);
|
}).min_by_key(|area| area.base_addr);
|
||||||
|
|
||||||
if let Some(area) = self.current_area {
|
if let Some(area) = self.current_area {
|
||||||
let start_frame = Frame::containing_address(area.base_addr as usize);
|
let start_frame = Frame::containing_address(area.base_addr as usize);
|
||||||
|
|||||||
Reference in New Issue
Block a user