summaryrefslogtreecommitdiff
path: root/meap/meap-code/ch6/ch6-heap-vs-stack/src/main.rs
blob: 3bf14c6347cc6ca80f078dfec6a046ecc8a17c76 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use std::mem::drop; // <1> Bring manual `drop()` into local scope

fn main() {
    let a = Box::new(1);
    let b = Box::new(1);
    let c = Box::new(1);

    let result1 = *a + *b + *c; // <2> Use the variables so that they're not optimized away by the compiler. The unary `pass:[*]` operator is called the dereference operator. It returns the value within the box.

    drop(a); // <3> The memory holding `a` is now available

    let d = Box::new(1);
    let result2 = *b + *c + *d;

    println!("{} {}", result1, result2);
}