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/Cargo.lock | 46 ++++++++++++++++++++++++ meap/meap-code/ch6/ch6-heap-vs-stack/Cargo.toml | 7 ++++ meap/meap-code/ch6/ch6-heap-vs-stack/src/main.rs | 16 +++++++++ 3 files changed, 69 insertions(+) create mode 100644 meap/meap-code/ch6/ch6-heap-vs-stack/Cargo.lock create mode 100644 meap/meap-code/ch6/ch6-heap-vs-stack/Cargo.toml create mode 100644 meap/meap-code/ch6/ch6-heap-vs-stack/src/main.rs (limited to 'meap/meap-code/ch6/ch6-heap-vs-stack') diff --git a/meap/meap-code/ch6/ch6-heap-vs-stack/Cargo.lock b/meap/meap-code/ch6/ch6-heap-vs-stack/Cargo.lock new file mode 100644 index 0000000..d427b41 --- /dev/null +++ b/meap/meap-code/ch6/ch6-heap-vs-stack/Cargo.lock @@ -0,0 +1,46 @@ +[[package]] +name = "bitflags" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ch6-heap-via-box" +version = "0.1.0" +dependencies = [ + "rand 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libc" +version = "0.2.36" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rand" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[metadata] +"checksum bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b3c30d3802dfb7281680d6285f2ccdaa8c2d8fee41f93805dba5c4cf50dc23cf" +"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +"checksum libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "1e5d97d6708edaa407429faa671b942dc0f2727222fb6b6539bf1db936e4b121" +"checksum rand 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)" = "512870020642bb8c221bf68baa1b2573da814f6ccfe5c9699b1c303047abe9b1" diff --git a/meap/meap-code/ch6/ch6-heap-vs-stack/Cargo.toml b/meap/meap-code/ch6/ch6-heap-vs-stack/Cargo.toml new file mode 100644 index 0000000..46d9dff --- /dev/null +++ b/meap/meap-code/ch6/ch6-heap-vs-stack/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "ch6-heap-via-box" +version = "0.1.0" +authors = ["Tim McNamara "] + +[dependencies] +rand = "0.3" \ No newline at end of file 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