A hands-on approach to mastering Rust through progressively challenging projects. This repository documents my intensive learning sprint, focusing on practical implementation over theoretical knowledge.
Learn → Build → Review → Refactor
Instead of reading exhaustively before coding, I:
- Learn just enough from The Rust Book to start building
- Implement projects that reinforce specific concepts
- Seek feedback and review my approach
- Refactor as I discover better patterns and idiomatic Rust
⚠️ Disclaimer: This is a learning repository. Code quality improves as projects progress. Earlier projects may be revisited and refactored as I gain deeper understanding of Rust's patterns and best practices.
- Master Rust fundamentals: ownership, borrowing, lifetimes
- Build confidence with traits, generics, and error handling
- Understand async programming and concurrency
- Learn to work with Rust's ecosystem (crates, Cargo)
- Develop muscle memory for idiomatic Rust patterns
| Status | Project | Focus Areas | Key Concepts |
|---|---|---|---|
| ✅ | Guessing Game | Syntax basics, random numbers, loops | rand crate, user input, pattern matching |
| ✅ | Temperature Converter | Functions, I/O, data types | Ownership basics, string handling |
| ✅ | Word Counter CLI | File I/O, collections | HashMap, file operations, iterators |
| ✅ | To-Do List CLI | Structs, enums, persistence | Data modeling, vector operations |
| ✅ | Simple Calculator | Pattern matching, error handling | match expressions, Result type |
| ✅ | Contact Book CLI | Serialization, data structures | serde, JSON, CRUD operations |
| ✅ | Matrix Library | Traits, generics, operator overloading | Generic programming, std::ops traits |
| ✅ | Mini CSV Parser | Iterators, closures | Iterator adapters, functional patterns |
| ✅ | Markdown → HTML Converter | String parsing, regex, enums | Text processing, regex crate |
| Status | Project | Focus Areas | Key Concepts |
|---|---|---|---|
| ✅ | HTTP Fetcher CLI | Async basics, concurrency | tokio, reqwest, async/await |
| ✅ | Chat Server (TCP) | Networking, channels | TCP sockets, message passing |
| ✅ | Weather CLI | External APIs, JSON | REST APIs, error propagation |
| ✅ | Mini Blockchain Ledger | Systems thinking, hashing | Cryptography, data structures |
| ✅ | Task Manager REST API | Backend fundamentals | axum, HTTP handlers, routing |
Legend:
- ✅ Completed
- 🔨 In Progress
- 📅 Planned
- Language: Rust 2024 Edition
- Package Manager: Cargo
- Key Crates:
serde,tokio,axum,reqwest,regex,rand,anyhow - Learning Resources: The Rust Book, Rustlings, Exercism
.
├── README.md # This file
├── guessing_game/ # Level 1 projects
├── temp_converter/
├── word_counter/
├── to-do_list/
├── simple_calculator/
├── contact_book/ # Level 2 projects
├── matrix_lib/ # Level 3 projects
├── mini_csv_parser/
├── markdown_to_html_converter/
├── http_fetcher/ # Level 4+ projects
├── chat_server/
├── weather_cli/
├── mini_blockchain/
└── task_manager_api/
Each project is a standalone Cargo workspace with its own Cargo.toml and dependencies.
To run any project:
cd project_name
cargo runTo run tests:
cargo test- Current Focus: Mini Blockchain Ledger
- Completed Projects: 14/14
- Lines of Code Written: ~20,000+
As I progress, earlier projects may be refactored to incorporate:
- Better error handling patterns
- More idiomatic Rust code
- Additional features that demonstrate new concepts
- Improved documentation and tests
This iterative approach mirrors real-world software development and reinforces learning.
This is a learning journey, and I'm actively seeking:
- Code review and suggestions for improvement
- Idiomatic Rust patterns I might have missed
- Better approaches to problem-solving in Rust
- General feedback on project structure and architecture
- Projects increase in complexity and introduce new Rust concepts progressively
- Each project folder contains its own README with specific learning objectives
- Some projects may have multiple iterations as I refactor with new knowledge
- Focus is on understanding why Rust works this way, not just how to write it
"The best way to learn Rust is to write Rust." - Building in public, one project at a time.