A personally annotated copy of the "The Rust Programming Language"

Overview

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.

You might also like...
The Rust Programming Language, Chapter 8, Exercise 1

Rust Common Collections - Exercise 1 In the book The Rust Programming Language by Steve Klabnik and Carol Nichols, chapter 8 - Common Collections - pr

Game development practices with Rust programming language. I want to use different crates for this.

Hazır Oyun Motorlarını Kullanarak Rust Dili Yardımıyla Oyunlar Geliştirmek Rust programlama dilinde oyun geliştirmek için popüler birkaç hazır çatıyı

Use rust programming language to create a b+ tree.
Use rust programming language to create a b+ tree.

Use rust programming language to create a b+ tree.

This Repo Contains my Week Long Journey Trying to Learn Rust Programming Language 🦀.

the-rust-way This Repo Contains my Week Long Journey Trying to Learn Rust Programming Language 🦀 . 💪 Thanks to all Wonderful Contributors Thanks a l

⚛ Quantum computing crate for Rust programming language.

🦀 Quantum crab Quantum crab is a quantum computing crate for Rust programming language. use quantum_crab::{ backend::Backend, quantum_circuit

An annotated string type in Rust, made up of string slices

A string type made up of multiple annotated string slices.

An Interpreter for Brainfuck programming language implemented in the Rust programming language with zero dependencies.

Brainfuck Hello, Visitor! Hey there, welcome to my project showcase website! It's great to have you here. I hope you're ready to check out some awesom

A repository for showcasing my knowledge of the Rust programming language, and continuing to learn the language.

Learning Rust I started learning the Rust programming language before using GitHub, but increased its usage afterwards. I have found it to be a fast a

A lightning fast version of tmux-fingers written in Rust, copy/pasting tmux like vimium/vimperator
A lightning fast version of tmux-fingers written in Rust, copy/pasting tmux like vimium/vimperator

tmux-thumbs A lightning fast version of tmux-fingers written in Rust for copy pasting with vimium/vimperator like hints. Usage Press ( prefix + Space

A CLI utility to secretly copy secrets to your clipboard. 🦀
A CLI utility to secretly copy secrets to your clipboard. 🦀

seclip 🔒 📝 A CLI utility to secretly copy secrets to your clipboard. 🦀 Table of Contents Features Installation Usage Build From Source Contribution

Zero-Copy reading and writing of geospatial data.

GeoZero Zero-Copy reading and writing of geospatial data. GeoZero defines an API for reading geospatial data formats without an intermediate represent

Command-Line program that takes images and produces the copy of the image with a thin frame and palette made of the 10 most frequent colors.
Command-Line program that takes images and produces the copy of the image with a thin frame and palette made of the 10 most frequent colors.

paleatra v.0.0.1 Command-Line program that takes an image and produces the copy of the image with a thin frame and palette made of the 10 most frequen

Pitch-perfect copy of map generation algorithm from Slay the Spire

sts_map_oracle Pitch-perfect copy of map generation algorithm from Slay the Spire Usage Prints out map layouts in console for given seed: sts_map_orac

Copy Translator 是使用Rust编写的翻译小工具,使用DeepL翻译
Copy Translator 是使用Rust编写的翻译小工具,使用DeepL翻译

Copy Translator Copy Translator 是使用Rust编写的翻译小工具 特点 程序大小12MB,极其轻量 自动去除多余的换行和断句,优化PDF翻译体验 选中即翻译(划词翻译),专注论文阅读 使用DeepL进行翻译,翻译效果极佳 使用说明 工具仅一个exe,启动后会驻留后台,选

Rust wrapper for Eclipse iceoryx™ - true zero-copy inter-process-communication
Rust wrapper for Eclipse iceoryx™ - true zero-copy inter-process-communication

iceoryx-rs Experimental rust wrapper for the iceoryx IPC middleware. clone and build The iceoryx repo is include as git submodule, therefore keep in m

Membrane is an opinionated crate that generates a Dart package from a Rust library. Extremely fast performance with strict typing and zero copy returns over the FFI boundary via bincode.

Membrane is an opinionated crate that generates a Dart package from a Rust library. Extremely fast performance with strict typing and zero copy returns over the FFI boundary via bincode.

A trash-cli copy, but this time in Rust.

trash-rs A trash-cli copy, but this time in Rust. TODO Deletion Relative paths * functionality List files Include in Metadata: Original directory Date

Terra Trophies is a copy of Ethereum's POAP project for Terra

Terra Trophies Terra Trophies is a copy of Ethereum's POAP project for Terra. It allows anyone to create digital badges for participants of events, or

 rkyv (archive) is a zero-copy deserialization framework for Rust
rkyv (archive) is a zero-copy deserialization framework for Rust

rkyv (archive) is a zero-copy deserialization framework for Rust Resources Learning Materials The rkyv book covers the motivation, architecture, and m

Owner
Matan Lurey
Staff Software Engineer / TLM. I only contribute to fun/personal projects on GitHub and not anything related to my work 😎
Matan Lurey
A minimal and fast zero-copy parser for the PE32+ file format.

peview A minimal and fast zero-copy parser for the PE32+ file format. Goal This project aims to offer a more light weight and easier to use alternativ

null 5 Dec 20, 2022
Zero-copy, no-std proquint encoding and decoding

proqnt A pronounceable quintuplet, or proquint, is a pronounceable 5-letter string encoding a unique 16-bit integer. Proquints may be used to encode b

Jad Ghalayini 11 May 9, 2023
Rust library for concurrent data access, using memory-mapped files, zero-copy deserialization, and wait-free synchronization.

mmap-sync mmap-sync is a Rust crate designed to manage high-performance, concurrent data access between a single writer process and multiple reader pr

Cloudflare 97 Jun 26, 2023
Rust Vector for large amounts of data, that does not copy when growing, by using full `mmap`'d pages.

Large Vector Rust Vector for large amounts of data, that does not copy when growing, by using full mmap'd pages. Maturity I made ths to learn about mm

Wonko der Verständige 21 Apr 23, 2024
clone of grep cli written in Rust. From Chapter 12 of the Rust Programming Language book

minigrep is a clone of the grep cli in rust Minigrep will find a query string in a file. To test it out, clone the project and run cargo run body poem

Raunak Singh 1 Dec 14, 2021
The Rust Compiler Collection is a collection of compilers for various languages, written with The Rust Programming Language.

rcc The Rust Compiler Collection is a collection of compilers for various languages, written with The Rust Programming Language. Compilers Language Co

null 2 Jan 17, 2022
Game Boy Emulator written in Rust, as a way to fully grasp the Rust programming language

Flan's Game Boy Emulator Game Boy Emulator written in Rust, as a way to get hands-on with the Rust programming language, and creating a proper project

Flan 3 Dec 31, 2022
A minimal version of 'grep' implemented in Rust. Exercise in the "The Rust Programming Language" book.

Minigrep - A simple grep-like tool implemented in Rust This simple CLI tool searches for a given pattern in a specified file and as a result, it print

Filip Szutkowski 3 Mar 15, 2024
This repository contains the source of "The Rust Programming Language" book.

The Rust Programming Language This repository contains the source of "The Rust Programming Language" book. The book is available in dead-tree form fro

The Rust Programming Language 11.2k Jan 8, 2023
A short exercise to introduce people to the Rust programming language

Searching primes by brute force This code is ment to be an exercice to teach rust and give a first impression on how to work with the language during

JoelImgu 3 Dec 14, 2022