Full concept checklist per lesson, distilled from README.md.
Directory: lesson-00/
Concepts:
- Console input (
std::io::stdin,read_line) - Console output (
print!,println!,flush) - Parsing and casting (
trim,parse::<T>()) - Paths and namespaces (
::) - Modules vs types (associated items)
Directory: lesson-01-hello-cargo/
Concepts:
- Installing Rust with
rustup - Creating projects with
cargo new - Understanding
Cargo.tomlandCargo.lock cargo build,cargo run,cargo check- The
main()function entry point
Directory: lesson-02-variables/
Concepts:
- Immutability by default (
let) - Mutable variables (
let mut) - Constants (
const) vs variables - Shadowing
- Type annotations
Directory: lesson-03-types/
Concepts:
- Scalar types: integers (
i32,u64, etc.), floats (f32,f64),bool,char - Compound types: tuples, arrays
- Type inference
- Numeric operations and overflow behavior
Directory: lesson-04-functions/
Concepts:
- Function definitions with
fn - Parameters and return types
- Statements vs expressions
- Implicit returns (no semicolon)
- Early returns with
return
Directory: lesson-05-control-flow/
Concepts:
if,else if,else- Using
ifas an expression loop,while,forbreakandcontinue- Loop labels for nested loops
- Returning values from loops
Directory: lesson-06-ownership/
Concepts:
- The three ownership rules
- Stack vs heap memory
- Move semantics
Copytrait for simple types- Scope and automatic memory cleanup (
Drop)
Directory: lesson-07-references/ (planned)
Concepts:
- Immutable references (
&T) - Mutable references (
&mut T) - The borrowing rules
- Preventing data races at compile time
- Reference scope (Non-Lexical Lifetimes)
Directory: lesson-08-slices/ (planned)
Concepts:
- String slices (
&str) - Array slices (
&[T]) - The relationship between
Stringand&str - Slice as a "view" into data
- String literals are slices
Directory: lesson-09-structs/ (planned)
Concepts:
- Defining and instantiating structs
- Field init shorthand
- Struct update syntax (
..) - Tuple structs
- Unit-like structs
- Methods with
implblocks - Associated functions (
Self::new())
Directory: lesson-10-enums/ (planned)
Concepts:
- Defining enums
- Enums with data (variants)
- The
Option<T>enum - No null in Rust
- Enum methods
Directory: lesson-11-pattern-matching/ (planned)
Concepts:
- The
matchexpression - Exhaustive matching
- Catch-all with
_andother if letfor concise matchingwhile letloops- Destructuring in patterns
Directory: lesson-12-result/ (planned)
Concepts:
Result<T, E>enumOkandErrvariantsunwrap()andexpect()- The
?operator for propagation - Combining
?withOption
Directory: lesson-13-panic/ (planned)
Concepts:
- When to use
panic! - Stack unwinding vs abort
RUST_BACKTRACE=1- Designing APIs: Result vs panic
Directory: lesson-14-vectors/ (planned)
Concepts:
- Creating vectors (
Vec<T>) - Adding and removing elements
- Accessing elements (indexing vs
.get()) - Iterating over vectors
- Vectors and ownership
Directory: lesson-15-strings/ (planned)
Concepts:
Stringvs&str- Creating and updating strings
- UTF-8 encoding
- Why you can't index strings
- Iterating over characters and bytes
- String slicing (with care)
Directory: lesson-16-hashmaps/ (planned)
Concepts:
- Creating
HashMap<K, V> - Inserting, accessing, updating
- Entry API for conditional updates
- Ownership and HashMaps
- Custom types as keys
Directory: lesson-17-iterators/ (planned)
Concepts:
- The
Iteratortrait iter(),iter_mut(),into_iter()- Iterator adaptors:
map,filter,take,skip - Consuming adaptors:
collect,sum,fold - Chaining iterators
- Lazy evaluation
Directory: lesson-18-generics/ (planned)
Concepts:
- Generic functions
- Generic structs and enums
- Generic method implementations
- Monomorphization (zero-cost abstractions)
Directory: lesson-19-traits/ (planned)
Concepts:
- Defining traits
- Implementing traits for types
- Default implementations
- Traits as parameters (
impl Trait) - Trait bounds
- The orphan rule
- Common traits:
Debug,Clone,Default,PartialEq
Directory: lesson-20-trait-bounds/ (planned)
Concepts:
- Multiple trait bounds (
+) whereclauses for readability- Conditional implementations
- Returning types that implement traits
Directory: lesson-21-modules/ (planned)
Concepts:
- Module system overview
modkeyword- File structure (
mod.rsvsfilename.rs) pubfor visibilityusefor bringing items into scope- Re-exporting with
pub use
Directory: lesson-22-crates/ (planned)
Concepts:
- Library vs binary crates
- crates.io ecosystem
- Adding dependencies in
Cargo.toml - Semantic versioning
- Features and optional dependencies
- Workspaces for multi-crate projects
Directory: lesson-23-threads/ (planned)
Concepts:
- Spawning threads with
thread::spawn JoinHandleand waiting for threadsmoveclosures for ownership transfer- Thread safety guarantees
Directory: lesson-24-channels/ (planned)
Concepts:
- Channels (
mpsc) SenderandReceiver- Sending values between threads
- Multiple producers
Directory: lesson-25-shared-state/ (planned)
Concepts:
Mutex<T>for mutual exclusionArc<T>for atomic reference counting- Deadlock prevention
RwLockfor reader-writer locksSendandSynctraits
Directory: lesson-26-lifetimes/ (planned)
Concepts:
- Why lifetimes exist
- Lifetime annotations (
'a) - Lifetime elision rules
- Lifetimes in structs
'staticlifetime- Lifetime bounds on generics
Directory: lesson-27-closures/ (planned)
Concepts:
- Closure syntax
- Type inference for closures
- Capturing environment:
Fn,FnMut,FnOnce moveclosures- Closures as function parameters and return types
Directory: lesson-28-smart-pointers/ (planned)
Concepts:
Box<T>for heap allocationRc<T>for reference countingRefCell<T>for interior mutabilityWeak<T>to prevent reference cyclesDerefandDroptraits
Directory: lesson-29-unsafe/ (planned)
Concepts:
- When and why to use
unsafe - Raw pointers
- Calling unsafe functions
- Safe abstractions over unsafe code
- FFI basics
Directory: lesson-30-macros/ (planned)
Concepts:
- Declarative macros (
macro_rules!) - Macro patterns and repetition
- Procedural macros overview
- Common macros:
vec!,println!,derive
Directory: lesson-31-capstone-cli/ (planned)
Goal components:
- Argument parsing (with
clap) - File I/O
- Error handling with custom error types
- Structs and enums for data modeling
- Iterators for data processing
- Tests
Suggested project ideas:
- A grep clone
- A todo list manager
- A Markdown to HTML converter
- A file organizer