Book #24 - Rust for Rustaceans

Rust for Rustaceans
by Jon Gjengset (2022)

Along with a chapter from Programming Rust, 2nd edition, Chapter 20 on asynchronous programming)

Tuesday evenings, 5 pm pacific time / 7 pm central time

Meetup: https://www.meetup.com/the-south-padre-island-reading-group/events/284691344/
Zoom: Join our Cloud HD Video Meeting
Discord: Join the Los Gatos Reading Group Discord Server!
No Starch Press: Rust for Rustaceans

 

March 22, 2022

Provisionally, we are done with this book now, at least the chapters we were interested in doing. We might come back to discuss the final chapter, Chapter 13 The Rust Ecosystem.



Chapter 10
Concurrency (and Parallelism)

March 22, 2022

Presenter

Chapter 10
Concurrency (and Parallelism)

March 22, 2022

Presenter

The Trouble with Concurrency

 

Concurrency Models

 

Asynchrony and Parallelism

 

Lower-level Concurrency

 

Sane Concurrency

 

 

Chapter 20 - Programming Rust, 2nd edition
Asynchronous Programming

March 15, 2022

Presenter

Chapter 20 - Programming Rust, 2nd edition
Asynchronous Programming

March 15, 2022

Presenter

From Synchronous to Asynchronous

Casey & Karthik

An Asynchronous Client and Server

Primitive Futures and Executors: When is a Future Worth Polling Again?

Pinning

When is Asynchronous Code Helpful?

 

Chapter 8
Asynchronous Programming

March 1, 2022
March 22, 2022

Presenter

Chapter 8
Asynchronous Programming

March 1, 2022
March 22, 2022

Presenter

What’s the Deal with Asynchrony?

Casey

Ergonomic Futures
| async/await

Casey

| Pin and unpin

Karthik

Going to Sleep

 

Tying It All Together with spawn

 

 

 

Chapter 7
Macros

February 22, 2021

Presenter

Chapter 7
Macros

February 22, 2021

Presenter

Declarative Macros
| When to Use Them
| How They Work

Casey

Declarative Macros
| How to Write Declarative Macros

Karthik

Procedural Macros
| Types of Procedural Macros
| The Cost of Procedural Macros

Karthik

Procedural Macros
| So You Think You Want a Macro

Casey

Procedural Macros
| How Do They Work?

Casey

 

Chapter 6
Testing

February 15, 2022

Presenter

Chapter 6
Testing

February 15, 2022

Presenter

Rust Testing Mechanisms | The Test Harness

Casey

Rust Testing Mechanisms | #[cfg(test)]

Karthik

Rust Testing Mechanisms | Doctests

Casey

Additional Testing Tools | Linting
Additional Testing Tools | Test Generation

Viktor

Additional Testing Tools | Test Augmentation
Additional Testing Tools | Performance Testing

Raj


Notes:

Here is some interesting supplementary material on the issue Karthik and I were discussing
Dependency Resolution - The Cargo Book (see Version-incompatibility hazards)
GitHub - dtolnay/semver-trick: How to avoid complicated coordinated upgrades
Let’s discuss this briefly at our next session.

Chapter 5
Project Structure

February 8, 2022

Presenter

Chapter 5
Project Structure

February 8, 2022

Presenter

Features

Karthik

Workspaces

Viktor

Project Configuration

Casey

Conditional Compilation

Raj

Versioning

Casey

Chapter 4
Error Handling
February 1, 2022

Presenter

Chapter 4
Error Handling
February 1, 2022

Presenter

Representing Errors | Enumeration

Casey

Representing Errors | Opaque Errors

Casey

Representing Errors | Special Error Cases

Karthik

Propagating Errors

Karthik

 

Chapter 3
Designing Interfaces

January 18, 2022
January 25, 2022

Presenter

Chapter 3
Designing Interfaces

January 18, 2022
January 25, 2022

Presenter

Unsurprising | Naming Practices,, Common Traits for Types

Casey - January 18

Unsurprising | Ergonomic Trait Implementations, Wrapper Types

Casey - January 25

Flexible | Generic Arguments

Victor

Flexible | Object Safety

Victor

Flexible | Borrowed vs. Owned

Victor

Flexible | Fallible and Blocking Destructors

Victor

Obvious | Documentation

Karthik

Obvious | Type System Guidance

Karthik

Constrained | Type Modifications

Casey

Constrained | Type Implementations

Casey

Constrained | Hidden Contracts

Casey

 

Chapter 2
Types

December 21, 2021
January 11, 2022
January 18, 2022

Presenter

Chapter 2
Types

December 21, 2021
January 11, 2022
January 18, 2022

Presenter

Types in Memory | Alignment

Victor S - December 21

Types in Memory | Layout

Victor S - January 11

Types in Memory | Complex Types, Dynamically Sized Types and Wide Pointers

Karthik - January 11

Traits and Trait Bounds | Compilation and Dispatch

Casey - January 11

Traits and Trait Bounds | Generic Traits

Casey - January 11

Traits and Trait Bounds | Coherence and the Orphan Rule

Casey - January 11

Traits and Trait Bounds | Trait Bounds

Karthik - January 18

Traits and Trait Bounds | Marker Traits

Karthik - January 18

Existential Types

Karthik - January 18

 

Chapter 1
Foundations

December 7, 2021
December 14, 2021
December 21, 2021 (Lifetimes)

Presenter

Chapter 1
Foundations

December 7, 2021
December 14, 2021
December 21, 2021 (Lifetimes)

Presenter

Talking About Memory

Casey - continuing on December 14 at “shadowing” (p. 4)

Ownership

Jens - December 14

Borrowing and Lifetimes | Shared References

Vin - December 14

Borrowing and Lifetimes | Mutable References

Victor S - December 14

Borrowing and Lifetimes | Interior Mutability

Victor S - December 14

Borrowing and Lifetimes | Lifetimes

Karthik - December 21