My journey of learning the Rust programming language by working at it for 100 consecutive days.
To begin, I will be working through The Rust Programming Language (2nd ed.) by Klabnik and Nichols.
Other possible resources:
To play with:
| Day | Description |
|---|---|
| 1 | Rust "Hello, world!" and learned about the key cargo commands |
| 2 | Learned about variables, type conversion, and the match statement |
| 3 | Learned about 'loop' and 'match' keywords; read about basics of variables and functions |
| 4 | Finished up control flow syntax and began learning about ownership |
| 5 | Finshed chapter 4 on ownership |
| 6 | Started learning about structs |
| 7 | Finished up the basics of structs and now moving on to enums |
| 8 | Wrapped up enums and Option<t>, began learning more details about creates, etc. |
| 9 | More details about paths, scope, and public items |
| 10 | Finished the chapter on crate and module structures |
| 11 | Experimented with the rust-bio crate |
| 12 | Read the chapter on collections |
| 13 | Started reading about exception handling |
| 14 | Finished reading about exceptions and now onto generics and traits |
| 15 | Read up on generics and now learning about traits |
| 16 | Began reading about generic lifetimes and lifetime annotation 🤯 |
| 17 | Played around with example code from the internet, just general practice |
| 18 | Finished reading the chapter on generics and lifetime annotations; worked through the chapter of rust by example on conversions |
| 19 | Working through examples of flow control code just practising writing rust code |
| 20 | More practice with match and now working on examples with functions |
| 21 | Finished the set of examples for functions and now playing with random number generation in the cookbook |
| 22 | Finished the set of examples for functions and now playing with random number generation in the cookbook |
| 23 | Played with the rand and rand_distr crates using examples from the cookbook |
| 24 | Experimented with the concurrency examples in the cookbook |
| 25 | More examples with concurrency that gave me a good opporunity to learn about the "error-chain" crate |
| 26 | Learning about the "ndarray" crate |
| 27 | Learning about the "ndarray" crate |
| 28 | Finished the examples with "ndarray" and practiced some web requests including with async |
| 29 | Began working through the rust cli cookbook |
| 30 | Trying to refactor and test the simple cl tool |
| 31 | Succesfully refactored some of the demo cli tool to enable testing and added a unit test and two integration tests |
| 32 | Started a new simple project to query the omnivore api |
| 33 | Started a new simple project to query the omnivore api |
| 34 | Started chapter 13 of the book on functional programming in rust and revisited the chapter on generics, traits, and lifetimes |
| 35 | Converted a web-scraping project from python to rust, builst some some aws s3 interactions in rust for a work project |
| 36 | Worked on getting the trout stocking web-scraping code onto deta and writing to the provided database |
| 37 | Refactored my trout stocking code into binary and library and used axum to make a server interface |
| 38 | Working on getting my trout stocking scraping app deployed to deta space |
| 39 | Continued working on deplying my trout scraping deta app, now trying to use github actions to compile |
| 40 | Read about logging and tracing in rust and added logging to my app |
| 41 | Refactored the data scraping micro into a workspace to separate the scraping logic from the web-server front-end for deta |
| 42 | Add an index data base to my trout stocking deta space project |
| 43 | End point to initiate re-indexing of data bases periodically |
| 44 | Reduced code duplication and complexity by using traits and enums in my trout scraping project |
| 45 | Refactored more code for the trout data scraping project |
| 46 | Started working through the 'rustlings' problems |
| 47 | Continued with rustlings practice |
| 48 | Continued with rustlings practice (strings, hashmaps, modules, quiz 2) |
| 49 | Continued with rustlings practice (options and error handling) |
| 50 | Continued with rustlings practice (generics, trains, quiz 3) |
| 51 | Rustlings on lifetimes and tests, also setup advent of code 2022 in rust project |
| 52 | Rustlings iterators (took me a little while because the editor doesnt provide syntax help) |
| 53 | Advent of code 2022 day 3 puzzles - a lot of practice with iterators |
| 54 | Advent of code 2022 day 4 puzzles |
| 55 | Advent of code 2022 day 5 puzzle 1 gave me a lot of practice with parsing the input data |
| 56 | Advent of code 2022 day 5 puzzle 1 gave me a lot of practice with parsing the input data |
| 57 | Advent of code 2022 day 6 puzzle was actually easy, giving me some confidence |
| 58 | Started puzzle 7 for advent of code 2022 |
| 59 | Working example for puzzle 7, but run time error |
| 60 | Refactoring puzzle 7, but still got the same error; i think i know what the problem is though |
| 61 | Solved puzzle 7 |
| 62 | Solved puzzle 8 and it runs way faster with --release |
| 63 | Parsed the input for puzzle 9 of AoC 2022 |
| 64 | Finished both puzzles for day 9 of AoC 2022 |
| 65 | Parsed input and prepared key models for puzzles of day 10 of AoC 2022 |
| 66 | Finished puzzles for day 10 of AoC 2022 |
| 67 | Finished puzzles for day 11 of AoC 2022 but had to look up the hint for part 2 |
| 68 | Finished puzzles for day 12 of AoC 2022 |
| 69 | Start Advent of Code 2023 in Rust |
| 70 | Day 2 of AoC 2023 |
| 71 | Day 3 of AoC 2023 |
| 72 | Day 4 of AoC 2023 |
| 73 | Day 5 of AoC 2023 |
| 74 | Day 6 of AoC 2023 (brute force for puzzle 2 actually worked fine) |
| 75 | AoC 2023 day 6 |
| 76 | AoC 2023 day 7 was great practice with generics |
| 77 | Day 9 of AoC 2023 (an easy day) |
| 78 | Day 10 of AoC 2023; still working on part 2, but getting good practice at using the 'petgraph' crate |
| 79 | Day 11 of AoC 2023 gave me good practice with the 'ndarray' crate |
| 80 | Was stumped by part 2 of day 12 of AoC, but got help and was able to implement the recommended algorithm in rust easily enough |
| 81 | I completed day 13 of AoC without too much trouble, i'm definitely feeling more competent with rust |
| 82 | Completed another day of AoC without too much struggling against the language |
| 83 | Successfully coded the process described in day 15 of AoC in one attempt! |
| 84 | AoC 2023 Day 16 |
| 85 | I think I'm close to a solution for Day 17 of AoC 2023, but something is slightly off. |
| 86 | Solved AoC 2023 Day 17. |
| 87 | Day 18 of AoC 2023. |
| 88 | Start day 19 of aoc 2023, but it's pushing the limits of my ability to architect rust code |
| 89 | Finished day 19 puzzle 1, but it's going to have to change a lot for part 2 |
| 90 | Aoc 2023 day 20 part 1 |
| 91 | Aoc 2023 day 20 part 2 |
| 92 | Aoc 2023 day 21 part 1 |
| 93 | Read about closures and iterators in the rust book and did the rustlings exercises on smart pointers |
| 94 | Read the chapter on advanced uses of cargo and workspaces and started the chapter on smart pointers |
| 95 | Finished reading about smart pointers |
| 96 | Began ch 16 on "fearless concurrency" and completed appropraite rustlings exercise |
| 97 | Finished ch 16 on fearling concurrency and the corresponding rustlings exercises |
| 98 | Read chater 17 about oop (no paired rustlings) |
| 99 | Finished rust book reading about advanced features |
| 100 | Finished rustlings |