Skip to content

GWizard98/rust-learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Rust Learning Journey 🦀

A Complete, Structured Learning System from Zero to Systems Programming

Rust Rust CI License: MIT

Day 1 Achievement: Complete professional-grade Rust development environment with comprehensive learning system, daily practice automation, and production-ready toolchain setup.

📖 About This Project

This repository contains a complete, self-contained Rust learning system designed to take you from zero knowledge to building real-world applications. Unlike scattered tutorials, this provides:

  • 🎯 Structured 3-phase progression (8 weeks to proficiency)
  • 🤖 Automated daily practice system with kata generation
  • 📚 Professional PDF guide (60+ pages of curated content)
  • 🛠️ Production-ready development environment
  • 📊 Progress tracking and milestone system

🏆 What Makes This Special

  • Complete Learning Infrastructure: Not just code, but a full system
  • Daily Practice Automation: ./new-kata.sh generates practice exercises
  • Professional Documentation: Comprehensive PDF guide included
  • Real-World Focus: Build CLI tools, async systems, performance-critical code
  • Community-Tested: Based on proven Rust learning patterns

📁 Directory Structure

rust-learning/
├── 📄 Rust_Learning_Guide.pdf      # Complete 60+ page learning guide
├── 🛠️  00-setup/                    # Installation & environment setup
│   └── INSTALL.md                  # macOS-optimized setup guide
├── 📚 01-basics/                    # Core concepts & first programs  
│   ├── concepts/                   # 7 core concept exercises
│   ├── exercises/                  # Hands-on practice problems
│   ├── projects/                   # word-counter, json-formatter
│   └── notes/                      # Your learning notes
├── ⚡ 02-intermediate/               # CLI tools, async, real projects
│   ├── cli-tools/                  # Advanced CLI applications
│   ├── async/                      # Tokio and async programming
│   ├── structures/                 # Traits, generics, advanced types
│   └── testing/                    # Comprehensive testing strategies
├── 🔧 03-advanced/                  # Systems programming & performance
│   ├── systems/                    # OS interaction, FFI, embedded
│   ├── performance/                # Optimization and profiling
│   ├── unsafe/                     # Safe unsafe code patterns
│   ├── concurrency/                # Lock-free and concurrent systems
│   └── capstone/                   # Final substantial project
├── 🏃‍♂️ daily-practice/               # Daily skill building system
│   ├── katas/                      # Generated practice exercises
│   ├── new-kata.sh                # Automated kata generation
│   └── progress.md                 # Personal progress tracking
├── 📖 resources/                    # Curated learning materials
│   └── README.md                  # Books, videos, communities
├── 🛠️  html_to_pdf.py               # PDF generation utility
└── 📂 projects/                     # Your completed projects

🚀 Learning Path

✅ Phase 0: Setup (Day 1) - COMPLETED

  • Professional Rust toolchain via rustup
  • Essential tools: clippy, rustfmt, rust-analyzer, cargo-edit, cargo-watch
  • Clean environment (removed conflicting installations)
  • VS Code integration ready
  • First "Hello, World!" program successful

📚 Phase 1: Basics (Week 1-2)

  • Day 1-5: Core concepts (ownership, borrowing, lifetimes, patterns)
  • Day 6-7: Error handling and collections
  • Day 8-14: Two CLI projects (word-counter, json-formatter)
  • Goal: Build first useful CLI tool

⚡ Phase 2: Intermediate (Week 3-4)

  • Week 3: CLI mastery (advanced tools, HTTP clients, TUIs)
  • Week 4: Async programming, traits, generics
  • Goal: Professional-grade applications

🔧 Phase 3: Advanced (Month 2+)

  • Month 2: Systems programming and performance
  • Month 3+: Capstone project (database engine, compiler, game engine)
  • Goal: Contribute to Rust ecosystem

🏃‍♂️ Daily Practice System

Quick Start

# Generate today's kata
cd daily-practice
./new-kata.sh "ownership_fundamentals"

# Auto-rebuild on changes
cargo watch -x check

# Lint and format
cargo clippy && cargo fmt

Daily Routine (30-45 min)

  1. Morning (15-20 min): Focused kata on one Rust concept
  2. Project Time (45-60 min): Work on current phase project
  3. Evening (15 min): Read resources, update progress

📊 Progress Tracking

Current Status

  • Phase: 0 ✅ → 1 🔄
  • Setup: Complete professional environment
  • Next: Begin ownership and borrowing fundamentals

Success Metrics

  • Can write Rust without fighting the borrow checker
  • Built 3+ CLI tools that you actually use
  • Comfortable with async/await and error handling
  • Completed one substantial project (web server, game, systems tool)
  • Contributing to Rust community (Discord/Reddit help)

🛠️ Technology Stack

Core Rust Tools:

  • rustup 1.28.2 - Toolchain management
  • rustc 1.90.0 - Compiler
  • cargo 1.90.0 - Package manager
  • clippy 0.1.90 - Linter
  • rustfmt 1.8.0 - Formatter
  • rust-analyzer - IDE support

Additional Tools:

  • cargo-edit - Easy dependency management
  • cargo-watch 8.5.3 - Auto-rebuild
  • Python 3.14 - PDF generation utilities

🎯 Getting Started

For New Learners

  1. Read the Guide: Open Rust_Learning_Guide.pdf
  2. Setup Environment: Follow 00-setup/INSTALL.md
  3. Start Daily Practice: cd daily-practice && ./new-kata.sh "hello_rust"
  4. Begin Phase 1: cd 01-basics/concepts/01-ownership

For Experienced Developers

  • Jump to Phase 2 if you know the basics
  • Focus on 02-intermediate/async/ for modern Rust patterns
  • Check out 03-advanced/systems/ for low-level programming

🪧 Showcase

  • Word Counter CLI (Phase 1)
    • Path: 01-basics/projects/word-counter/wordcount
    • Run examples:
      • cargo run -- test.txt
      • cargo run -- -l test.txt (lines)
      • cargo run -- -c test.txt (chars)
    • Tests: cargo test

📚 Documentation

🤝 Contributing

This learning system is designed for personal growth, but improvements are welcome:

  • Additional practice exercises
  • New project ideas
  • Resource recommendations
  • Setup guides for other platforms

Developer Notes: dev-flow helper

Use the helper script to streamline the PR workflow:

  • Start a branch: ./scripts/dev-flow.sh start feature/my-change

  • Commit your edits: ./scripts/dev-flow.sh commit "Describe your change"

  • Push the branch: ./scripts/dev-flow.sh push

  • Open a PR (browser opens): ./scripts/dev-flow.sh pr

  • After merging: ./scripts/dev-flow.sh sync ./scripts/dev-flow.sh cleanup feature/my-change

📄 License

This project is licensed under the MIT License. See LICENSE for details.

🦀 Connect


Started: October 13, 2024
Status: Day 1 Complete - Professional Development Environment Ready
Next: Phase 1 Fundamentals

"The best time to plant a tree was 20 years ago. The second best time is now." 🌱➡️🦀

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors