https://github.com/martcpp/50-daysofrust
This a 50 day of learning rust and project related learning starting hacktober 1st
https://github.com/martcpp/50-daysofrust
Last synced: 10 months ago
JSON representation
This a 50 day of learning rust and project related learning starting hacktober 1st
- Host: GitHub
- URL: https://github.com/martcpp/50-daysofrust
- Owner: martcpp
- License: mit
- Created: 2024-09-30T12:53:46.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-16T06:36:02.000Z (over 1 year ago)
- Last Synced: 2024-10-17T23:20:54.800Z (over 1 year ago)
- Language: Rust
- Size: 107 KB
- Stars: 8
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 50-DaysOfRust Challenge
A structured 50-day Rust learning and project challenge starting Hacktober 1st. This plan balances learning core concepts and building practical Rust projects.
## Week 1: Rust Basics & Syntax
**Day 1-5:**
- Install Rust and set up the development environment.
- Learn basic syntax: variables, data types, functions, conditionals, loops.
- **Project:** Create a simple CLI calculator to practice basic operations and user input.
**Day 6-7:**
- Dive into ownership, borrowing, and lifetimes.
- **Project:** Extend your calculator to handle complex operations and introduce error handling.
## Week 2: Structs, Enums, and Error Handling
**Day 8-9:**
- Learn about structs and enums.
- **Project:** Build a small inventory management system using structs and enums.
**Day 10-11:**
- Understand pattern matching and control flow.
- **Project:** Add pattern matching to the inventory system, allowing for item categorization.
**Day 12-14:**
- Deep dive into Rust's error handling with `Result` and `Option`.
- **Project:** Add error handling to the inventory, making it more robust.
## Week 3: Collections and Iterators
**Day 15-17:**
- Learn about vectors, hash maps, and strings.
- **Project:** Build a contact book app, allowing for the addition, removal, and search of contacts.
**Day 18-19:**
- Master iterators and closures.
- **Project:** Add sorting and filtering options to the contact book using iterators.
**Day 20-21:**
- Study traits and generics in Rust.
- **Project:** Refactor the contact book to make it more generic and reusable.
## Week 4: Async Programming and Concurrency
**Day 22-25:**
- Learn async programming with `tokio`.
- **Project:** Build an asynchronous web scraper that fetches and processes data from multiple websites concurrently.
**Day 26-28:**
- Study concurrency using threads.
- **Project:** Modify the web scraper to handle multiple scraping tasks concurrently.
## Week 5: Working with Files, Crates, and Modules
**Day 29-31:**
- Learn file I/O in Rust and how to use crates.
- **Project:** Build a log parser that reads logs from a file and generates a report.
**Day 32-34:**
- Learn about Rust modules and crate structures.
- **Project:** Refactor the log parser to be modular and scalable.
## Week 6: Web Development with Actix or Warp
**Day 35-38:**
- Study basic web development in Rust using `actix-web` or `warp`.
- **Project:** Create a simple REST API for a TODO app.
**Day 39-41:**
- Add database integration with `SQLx` or `Diesel`.
- **Project:** Extend the TODO app to store tasks in a Postgres or SQLite database.
## Week 7: Advanced Topics (FFI, Unsafe, Macros)
**Day 42-44:**
- Learn about Foreign Function Interface (FFI) and using C libraries in Rust.
- **Project:** Build a small Rust application that uses a C library for some functionality.
**Day 45-47:**
- Dive into unsafe Rust.
- **Project:** Build a memory-efficient data structure using unsafe code for performance optimization.
**Day 48-50:**
- Study Rust macros and how to create your own.
- **Project:** Create a custom derive macro to automatically generate code for common tasks in one of your previous projects.
### Don't forget to drop a star to the repository
Throughout the challenge, contribute to Hacktoberfest by submitting pull requests to open-source Rust projects or libraries.