Grinding Through The Rust Programming Language Book
The book can be found on here
======================================================================
Progress Metrics
- day 1: getting started
- installation
- hello, world
- hello, cargo
- day 2: programming a guessing game
- day 3: common programming concepts
- variables and mutability
- data types
- functions
- comments
- control flow
- day 4: understanding ownership
- what is ownership
- references and borrowing
- the slice type
- day 5: using structs to structure related data
- defining and instantiating structs
- an example program using structs
- method syntax
- day 6: enums and pattern matching
- defining an enum
- the
match
control flow construct - concise control flow with
if
let
- day 7: managing growing projects
- packages and crates
- defining modules for scope and privacy
- paths for referring to an item in the module tree
- bringing paths into scope with
use
- separating modules into different files
- day 8: common collections
- Storing Lists of Values with Vectors
- Storing UTF-8 Encoded Text with Strings
- Storing Keys with Associated Values in Hash Maps
-
Error Handling
9.1. Unrecoverable Errors with panic! 9.2. Recoverable Errors with Result 9.3. To panic! or Not to panic!
-
Generic Types, Traits, and Lifetimes
10.1. Generic Data Types 10.2. Traits: Defining Shared Behavior 10.3. Validating References with Lifetimes
-
Writing Automated Tests
11.1. How to Write Tests 11.2. Controlling How Tests Are Run 11.3. Test Organization
-
An I/O Project: Building a Command Line Program
12.1. Accepting Command Line Arguments 12.2. Reading a File 12.3. Refactoring to Improve Modularity and Error Handling 12.4. Developing the Library’s Functionality with Test Driven Development 12.5. Working with Environment Variables 12.6. Writing Error Messages to Standard Error Instead of Standard Output
-
Functional Language Features: Iterators and Closures
13.1. Closures: Anonymous Functions that Capture Their Environment 13.2. Processing a Series of Items with Iterators 13.3. Improving Our I/O Project 13.4. Comparing Performance: Loops vs. Iterators
-
More about Cargo and Crates.io
14.1. Customizing Builds with Release Profiles 14.2. Publishing a Crate to Crates.io 14.3. Cargo Workspaces 14.4. Installing Binaries from Crates.io with cargo install 14.5. Extending Cargo with Custom Commands
-
Smart Pointers
15.1. Using Box to Point to Data on the Heap 15.2. Treating Smart Pointers Like Regular References with the Deref Trait 15.3. Running Code on Cleanup with the Drop Trait 15.4. Rc, the Reference Counted Smart Pointer 15.5. RefCell and the Interior Mutability Pattern 15.6. Reference Cycles Can Leak Memory
-
Fearless Concurrency
16.1. Using Threads to Run Code Simultaneously 16.2. Using Message Passing to Transfer Data Between Threads 16.3. Shared-State Concurrency 16.4. Extensible Concurrency with the Sync and Send Traits
-
Object Oriented Programming Features of Rust
17.1. Characteristics of Object-Oriented Languages 17.2. Using Trait Objects That Allow for Values of Different Types 17.3. Implementing an Object-Oriented Design Pattern
-
Patterns and Matching
18.1. All the Places Patterns Can Be Used 18.2. Refutability: Whether a Pattern Might Fail to Match 18.3. Pattern Syntax
-
Advanced Features
19.1. Unsafe Rust 19.2. Advanced Traits 19.3. Advanced Types 19.4. Advanced Functions and Closures 19.5. Macros
-
Final Project: Building a Multithreaded Web Server
20.1. Building a Single-Threaded Web Server 20.2. Turning Our Single-Threaded Server into a Multithreaded Server 20.3. Graceful Shutdown and Cleanup
-
Appendix
21.1. A - Keywords 21.2. B - Operators and Symbols 21.3. C - Derivable Traits 21.4. D - Useful Development Tools 21.5. E - Editions 21.6. F - Translations of the Book 21.7. G - How Rust is Made and “Nightly Rust”