mirror of
https://github.com/ahgamut/rust-ape-example.git
synced 2024-05-15 10:02:42 +00:00
51 lines
877 B
Rust
51 lines
877 B
Rust
// ./src/scope/raii.md
|
|
|
|
|
|
// raii.rs
|
|
fn create_box() {
|
|
// Allocate an integer on the heap
|
|
let _box1 = Box::new(3i32);
|
|
|
|
// `_box1` is destroyed here, and memory gets freed
|
|
}
|
|
|
|
fn part0() {
|
|
// Allocate an integer on the heap
|
|
let _box2 = Box::new(5i32);
|
|
|
|
// A nested scope:
|
|
{
|
|
// Allocate an integer on the heap
|
|
let _box3 = Box::new(4i32);
|
|
|
|
// `_box3` is destroyed here, and memory gets freed
|
|
}
|
|
|
|
// Creating lots of boxes just for fun
|
|
// There's no need to manually free memory!
|
|
for _ in 0u32..1_000 {
|
|
create_box();
|
|
}
|
|
|
|
// `_box2` is destroyed here, and memory gets freed
|
|
}
|
|
|
|
struct ToDrop;
|
|
|
|
impl Drop for ToDrop {
|
|
fn drop(&mut self) {
|
|
println!("ToDrop is being dropped");
|
|
}
|
|
}
|
|
|
|
fn part1() {
|
|
let x = ToDrop;
|
|
println!("Made a ToDrop!");
|
|
}
|
|
|
|
pub fn main() {
|
|
part0();
|
|
part1();
|
|
}
|
|
|