Follow these steps:
-
Open the Cargo.toml file that was generated earlier for you.
-
In the folder bin, create a file called raii.rs.
-
Add the following code and run it with cargo run --bin raii:
1 use std::ops::Deref;
2
3 // This represents a low level, close to the metal OS feature
that
4 // needs to be locked and unlocked in some way in order to be
accessed
5 // and is usually unsafe to use directly
6 struct SomeOsSpecificFunctionalityHandle;
7
8 // This is a safe wrapper around the low level struct
9 struct SomeOsFunctionality<T> {
10 // The data variable represents whatever useful information
11 // the user might provide to the OS functionality
12 data: T,
13 // The underlying struct is usually not savely movable,
14 // so it's given a constant address in a box
15 inner: Box<SomeOsSpecificFunctionalityHandle>,
16 }
17
18 // Access to a locked SomeOsFunctionality is wrapped in a guard
19 // that automatically unlocks...