Visualizing memory layout of Rust’s data types

Covers how a binary is executed, what segments are mapped to memory, the purpose/working of stack and heap memory, and how values of Rust’s data types are laid out in memory. The data types that we cover here are integers, char, Vector, slice, String, string slice, structs, enums, smart pointers like Box, Rc, Arc, Trait object and Fn traits like FnOnce, FnMut and Fn. We also cover the difference between String and str types, Vector and slice types. Topics like fat pointers, optimizations done by the Rust compiler when you wrap a reference inside an Option are also covered. 0:00 Intro 0:41 Segments in a binary 3:09 Stack & Heap 5:35 CPU Word size 6:57 Working of stack memory 10:16 working of Heap memory 13:58 Integer data types 14:28 char 15:13 size_of & align_of 15:51 Reference 16:58 Array 17:22 Vector 18:19 Slice of T 19:54 String, str, &str 21:09 Struct 22:04 Enum 23:48 Box pointer 24:43 Optimizations on Option 26:27 Copy Vs Move 29:21 Rc pointer 30:49 Send vs Sync traits 31:05 Why RC is neither Send nor Sync 31:24 Arc 32:25 Trait object 34:27 Function pointer 34:44 Closures - Fn, FnOnce, FnMut Life of an async fn: stack & heap / virtual address space: Book: Programming Rust by Jason Orendorff, Jim Blandy, and Leonora F.S. Tindall
Back to Top