diff options
author | Adam Carpenter <53hornet@gmail.com> | 2019-03-27 15:32:37 -0400 |
---|---|---|
committer | Adam Carpenter <53hornet@gmail.com> | 2019-03-27 15:32:37 -0400 |
commit | 67cdcc2e12118becb823e20a40cc2687f2b8425a (patch) | |
tree | ed92c3234b89079e6d4cf36f5e80c5ffa79def48 /meap/meap-code/ch6/ch6-heap-vs-stack | |
parent | e25482fca375d318a39c3b54db396b0db6e0b263 (diff) | |
download | learning-rust-67cdcc2e12118becb823e20a40cc2687f2b8425a.tar.xz learning-rust-67cdcc2e12118becb823e20a40cc2687f2b8425a.zip |
Started Rust in Action MEAP.
Diffstat (limited to 'meap/meap-code/ch6/ch6-heap-vs-stack')
-rw-r--r-- | meap/meap-code/ch6/ch6-heap-vs-stack/Cargo.lock | 46 | ||||
-rw-r--r-- | meap/meap-code/ch6/ch6-heap-vs-stack/Cargo.toml | 7 | ||||
-rw-r--r-- | meap/meap-code/ch6/ch6-heap-vs-stack/src/main.rs | 16 |
3 files changed, 69 insertions, 0 deletions
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 <paperless@timmcnamara.co.nz>"] + +[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); +} |