From 7e8ee5ed9cad6484e9f13f81731b102ced58402e Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 9 Jul 2019 15:14:04 -0400 Subject: Init. --- meap/meap-code/ch6/ch6-heap-vs-stack/src/main.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100755 meap/meap-code/ch6/ch6-heap-vs-stack/src/main.rs (limited to 'meap/meap-code/ch6/ch6-heap-vs-stack/src') diff --git a/meap/meap-code/ch6/ch6-heap-vs-stack/src/main.rs b/meap/meap-code/ch6/ch6-heap-vs-stack/src/main.rs new file mode 100755 index 0000000..3bf14c6 --- /dev/null +++ b/meap/meap-code/ch6/ch6-heap-vs-stack/src/main.rs @@ -0,0 +1,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); +} -- cgit v1.2.3