mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 22:37:49 +00:00
Fix HierachicalLevel typo
This commit is contained in:
committed by
Philipp Oppermann
parent
74e84c7ea4
commit
337799599a
@@ -340,14 +340,14 @@ impl TableLevel for Level1 {}
|
|||||||
```
|
```
|
||||||
An empty enum has size zero and disappears completely after compiling. Unlike an empty struct, it's not possible to instantiate an empty enum. Since we will use `TableLevel` and `Level4` in exported types, they need to be public as well.
|
An empty enum has size zero and disappears completely after compiling. Unlike an empty struct, it's not possible to instantiate an empty enum. Since we will use `TableLevel` and `Level4` in exported types, they need to be public as well.
|
||||||
|
|
||||||
To differentiate the P1 table from the other tables, we introduce a `HierachicalLevel` trait, which is a subtrait of `TableLevel`. But we implement it only for the levels 4, 3, and 2:
|
To differentiate the P1 table from the other tables, we introduce a `HierarchicalLevel` trait, which is a subtrait of `TableLevel`. But we implement it only for the levels 4, 3, and 2:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
trait HierachicalLevel: TableLevel {}
|
trait HierarchicalLevel: TableLevel {}
|
||||||
|
|
||||||
impl HierachicalLevel for Level4 {}
|
impl HierarchicalLevel for Level4 {}
|
||||||
impl HierachicalLevel for Level3 {}
|
impl HierarchicalLevel for Level3 {}
|
||||||
impl HierachicalLevel for Level2 {}
|
impl HierarchicalLevel for Level2 {}
|
||||||
```
|
```
|
||||||
|
|
||||||
Now we add the level parameter to the `Table` type:
|
Now we add the level parameter to the `Table` type:
|
||||||
@@ -374,7 +374,7 @@ impl<L> Table<L> where L: TableLevel
|
|||||||
pub fn zero(&mut self) {...}
|
pub fn zero(&mut self) {...}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<L> Table<L> where L: HierachicalLevel
|
impl<L> Table<L> where L: HierarchicalLevel
|
||||||
{
|
{
|
||||||
pub fn next_table(&self, index: usize) -> Option<&Table<???>> {...}
|
pub fn next_table(&self, index: usize) -> Option<&Table<???>> {...}
|
||||||
|
|
||||||
@@ -391,22 +391,22 @@ Now the `next_table` methods are only available for P4, P3, and P2 tables. But t
|
|||||||
|
|
||||||
For a P4 table we would like to return a `Table<Level3>`, for a P3 table a `Table<Level2>`, and for a P2 table a `Table<Level1>`. So we want to return a table of the _next level_.
|
For a P4 table we would like to return a `Table<Level3>`, for a P3 table a `Table<Level2>`, and for a P2 table a `Table<Level1>`. So we want to return a table of the _next level_.
|
||||||
|
|
||||||
We can define the next level by adding an associated type to the `HierachicalLevel` trait:
|
We can define the next level by adding an associated type to the `HierarchicalLevel` trait:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
trait HierachicalLevel: TableLevel {
|
trait HierarchicalLevel: TableLevel {
|
||||||
type NextLevel: TableLevel;
|
type NextLevel: TableLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HierachicalLevel for Level4 {
|
impl HierarchicalLevel for Level4 {
|
||||||
type NextLevel = Level3;
|
type NextLevel = Level3;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HierachicalLevel for Level3 {
|
impl HierarchicalLevel for Level3 {
|
||||||
type NextLevel = Level2;
|
type NextLevel = Level2;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HierachicalLevel for Level2 {
|
impl HierarchicalLevel for Level2 {
|
||||||
type NextLevel = Level1;
|
type NextLevel = Level1;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ impl<L> Table<L> where L: TableLevel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<L> Table<L> where L: HierachicalLevel
|
impl<L> Table<L> where L: HierarchicalLevel
|
||||||
{
|
{
|
||||||
fn next_table_address(&self, index: usize) -> Option<usize> {
|
fn next_table_address(&self, index: usize) -> Option<usize> {
|
||||||
let entry_flags = self[index].flags();
|
let entry_flags = self[index].flags();
|
||||||
@@ -87,18 +87,18 @@ impl TableLevel for Level3 {}
|
|||||||
impl TableLevel for Level2 {}
|
impl TableLevel for Level2 {}
|
||||||
impl TableLevel for Level1 {}
|
impl TableLevel for Level1 {}
|
||||||
|
|
||||||
trait HierachicalLevel: TableLevel {
|
trait HierarchicalLevel: TableLevel {
|
||||||
type NextLevel: TableLevel;
|
type NextLevel: TableLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HierachicalLevel for Level4 {
|
impl HierarchicalLevel for Level4 {
|
||||||
type NextLevel = Level3;
|
type NextLevel = Level3;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HierachicalLevel for Level3 {
|
impl HierarchicalLevel for Level3 {
|
||||||
type NextLevel = Level2;
|
type NextLevel = Level2;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HierachicalLevel for Level2 {
|
impl HierarchicalLevel for Level2 {
|
||||||
type NextLevel = Level1;
|
type NextLevel = Level1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user