Skip to content

Latest commit

 

History

History
96 lines (72 loc) · 3.71 KB

README.md

File metadata and controls

96 lines (72 loc) · 3.71 KB

Rust Book

This is a personally annotated copy of the "The Rust Programming Language"1.

Why Rust

For me, I've never really been exposed to low-level systems programming, having majored in Informatics at UC Irvine precisely to avoid it (and well, math). My first language was Visual Basic 6, and even though I've grown to love strong, static langauges, I've never really used C, or anything like it, for anything substantial.

I'd love to Rust to learn more about:

  • Lower-level system details, such as memory usage
  • Using non-traditional languages
  • Mastering the borrow checker

Rust, is well, also pretty cool:

Rust gaining popularity from 2017 -> 2022

This repository

Every chapter in the book receives its own folder, i.e. chapter/01-getting-started:

  1. 🟢 Getting Started
  2. 🟢 Programming a Guessing Game
  3. 🟢 Common Programming Concepts
  4. 🟢 Understanding Ownership
  5. 🟢 Using Structs to Structure Related Data
  6. 🟢 Enums and Pattern Matching
  7. 🟢 Managing Growing Projects
  8. 🟢 Common Collections
  9. 🟢 Error Handling
  10. 🟢 Generic Types, Traits, and Lifetimes
  11. 🟢 Writing Automated Tests
  12. 🟢 An I/O Project: Building a Command Line Program
  13. 🟢 Functional Langauge Features: Iterators and Closures
  14. 🟢 More about Cargo and Crates.io
  15. 🟢 Smart Pointers
  16. 🟢 Fearless Concurrency
  17. 🟢 Object Oriented Programming Features of Rust
  18. 🟢 Patterns and Matching
  19. 🟢 Advanced Features
  20. 🟢 Final Project: Building a Multithreaded Web Server

Unless otherwise specified, the only tools required to be installed are:

When possible, copies of other source material, such as PDFs or images, should be cached in this repository so that the only thing required to interact with this repository is an installation of Rust, an IDE, a linker, and a clone.

To verify, run ./CHECK.sh.

Creating a new chapter

cargo new chapter/00-chapter-name --name chapter-name --vcs none

Then, edit Cargo.toml and add the new workspace member:

members = [
  # ...
  "chapter/00-chapter-name",
]

Adding dependencies

cargo add package-name -p chapter-name

Footnotes

  1. Available at https://doc.rust-lang.org/book/, or rustup docs --book.