Visualizing memory layout of Rust's data types
Sreekanth Sreekanth
8.37K subscribers
16,478 views
1.1K

 Published On Sep 24, 2023

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:    • RustFest Barcelona - Tyler Mandry: Li...  
stack & heap / virtual address space:
https://lwn.net/Articles/738975/
https://docs.microsoft.com/en-us/wind...
Book: Programming Rust by Jason Orendorff, Jim Blandy, and Leonora F.S. Tindall

show more

Share/Embed