Book #13 - Rust in Action
Rust in Action
by T. S McNamara (2021)
We started with the MEAP. Now it’s published. The epub version still seems to be a MEAP. The PDF version looks final, and the PDF version is the one we’re using now as the definitive version.
Tuesday evenings - 7:00 pm pacific time
Meetup: https://www.meetup.com/Los-Gatos-Rust-Reading-Group/events/279749930
Zoom: https://us02web.zoom.us/j/84281187589
Manning: https://www.manning.com/books/rust-in-action
Source code (zip file): https://www.manning.com/downloads/1607 - more up-to-date with MEAP version 16 of the book than on GitHub
Source code (github): https://github.com/rust-in-action/code- many files are out of date with MEAP version 16 of the book
Chapter 12 August 3, 2021 | Presenter |
---|---|
12.1 Glossary | Peter |
12.2 How interrupts affect applications | Peter |
12.3 Software interrupts | Peter |
12.3.2 Using a global variable… | Peter |
12.4 Hardware interrupts | Karthik |
12.5 Signal handling | Karthik |
12.6 Handling signals with custom actions | Karthik |
12.7 Sending application-defined signals | Karthik |
12.8 Ignoring signals | Casey |
12.9 Shutting down from deeply nested call stacks | Casey |
12.10 A note on applying these techniques to platforms without signals | Casey |
12.11 Revising exceptions | Casey |
Chapter 11 July 27, 2010 | Presenter |
---|---|
On the setup and getting past the bugs for OS-0, OS-1, OS-2, OS-3, OS-4 | Casey |
11 (all sections) | Karthik (using old version of PDF with 4 sections instead of 6) |
Note on Chapter 11
To get the code to run this week, I found that I needed to add some steps.
I made a fresh github clone, moved to the ch11/ch11-fledgeos-0 folder, changed the Cargo.toml x86_64 = "0.14
", deleted the target folder (if I’d been mucking around), deleted the Cargo.lock, then ran cargo +nightly build
and then cargo +nightly run
. This worked for fledgeos-1, fledgeos-3, and fledgeos-4, too, but not for fledgos-2.
For fledgeos-2, one must also change the Cargo.toml version for bootloader -bootloader = "0.9"
and also replace the last lines with[package.metadata.bootimage]
build-command = ["build"]
run-command = ["qemu-system-x86_64", "-drive", "format=raw,file={}"]
Chapter 10 July 20, 2021 | Presenter |
---|---|
10.1 Anonymous functions | Jens |
10.2 Spawning threads | Jens |
10.3 Differences between closures and functions | Karthik |
10.4 Procedurally generated avatars from a multithreaded parser and code generator | Casey |
10.5 Concurrency and task virtualization | Karthik |
Chapter 9 | Presenter |
---|---|
9.1 Background | Karthik |
9.2 Sources of Time | Karthik |
9.3 Definitions | Karthik |
9.4 Encoding Time | Karthik |
9.5 clock v0.1.0: Teaching an application how to tell the time | Jens |
9.6 clock v0.1.1: Formatting timestamps to comply with ISO 8601 and email standards | Jens |
9.7 clock v0.1.2: Setting the time | Casey |
9.8 Improving error handling | Casey |
9.9 clock v0.1.3: Resolving differences between clocks with the Network Time Protocol (NTP) | Casey |
Chapter 8 June 8, 2021 | Presenter |
---|---|
8.1 Just enough HTTP | Peter |
8.2 Generating an HTTP GET request with reqwest | Peter |
8.3 Trait Objects | Karthik |
8.4 TCP | Jens |
8.5 Ergonomic Error Handling for Libraries | Karthik |
8.6 MAC addresses | Jens - July 13 |
8.7 Implementing state machines with Rust’s enums | Jens - July 13 |
8.8 Raw TCP | Casey - July 13 |
Chapter 7 June 1, 2021 | Presenter |
---|---|
7.1 What is a file format? | Peter |
7.2 Creating your own file formats for data storage with serde | Peter |
7.3 Implementing a hexdump Clone | Peter |
7.4.1 File operations in Rust | Peter |
7.4.2 Interacting with the file system in a type-safe manner with std::fs::Path | Peter |
Implementing a key-value store with a log-structured, append-only storage architecture | Karthik |
actionkv v0.1 front-end code | Karthik |
Understanding the core of actionkv: the libactionkv crate 7.7.1-7.7.3 | Karthik |
7.7.4-7.7.6 | Jens |
7.7.7-7.7.11 | Jens |
Chapter 6 May 11, 2021 | Presenter |
---|---|
6.1 Pointers | Peter |
6.2 Exploring Rust’s reference and pointer types | Peter |
6.2.3 | Casey |
6.3 Providing programs with memory for their data | Casey |
6.3.3-6.3.4 | TBD after 1st edition is released |
6.4 Virtual Memory | TBD after 1st edition is released |
Chapter 5 May 4, 2021 | Presenter |
---|---|
5.1 Bit Patterns and Types | Casey |
5.2 Life of an Integer | Casey |
5.3 Decimal Numbers | Casey |
5.4 Generating f32 values between 0 and 1 from random bytes | Peter |
5.5 Implementing a CPU in Software to Establish that Functions are also Data | Peter |
5.5.2 First working emulator | Peter |
5.5.4 CPU 3: Adding functions | Peter |
Chapter 4 April 27, 2021 | Presenter |
---|---|
4.1 “Implementing” a Mock CubeSat Ground 4.2 Guide to the figures in this chapter | Karthik |
4.3 What is an Owner? Does it Have any Responsibilities? 4.4 How Ownership Moves | Casey |
4.5 Resolving Ownership Issues | Tim |
4.5.1 Use references where full ownership is not required | Tim |
4.5.2 Use Fewer Long-Lived Values | Peter |
4.5.3 Duplicate the value | Peter |
4.5.4 Wrap Data Within Specialty Types | Peter |
Chapter 3 April 20, 2021 | Presenter |
---|---|
Using plain functions to experiment with an API | Karthik |
Modeling files with struct | Karthik |
Adding Methods to a struct with impl | Tim |
Returning errors | Casey |
Defining and making use of enum | Casey |
Defining Common Behavior with Traits | Casey |
Exposing your types to the world | Peter |
Creating in-line Documentation | Peter |
Chapter 2 Language Foundations | Presenter |
---|---|
Create a running program | Karthik |
Numbers | Karthik |
Iteration | Karthik |
Flow control | Karthik |
Defining functions | Peter |
Advanced function definitions | Peter |
Creating grep-lite | Peter |
Making lists of things with arrays, slices and vectors | Casey |
Including Third Party Code | Casey |
Supporting Command Line Arguments | Casey |
Reading From Files | Casey |
Chapter 1 | Presenter |
---|---|
Orientation for new members of Reading Group | Casey |
Chapter 1 | Casey |