From 67cdcc2e12118becb823e20a40cc2687f2b8425a Mon Sep 17 00:00:00 2001 From: Adam Carpenter <53hornet@gmail.com> Date: Wed, 27 Mar 2019 15:32:37 -0400 Subject: Started Rust in Action MEAP. --- meap/meap-code/ch6/ch6-heap-vs-stack/src/main.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 meap/meap-code/ch6/ch6-heap-vs-stack/src/main.rs (limited to 'meap/meap-code/ch6/ch6-heap-vs-stack/src/main.rs') 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 100644 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