diff --git a/README.md b/README.md index bf1f2aa..8c77924 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ I'm trying the [advent of code](https://adventofcode.com/2023) in Rust this year to learn Rust. I'm not trying to be fast and place on the leaderboards (which also require working at midnight, which I'm mostly not interested in -doing), I'm trying to be somewhat elegant and learn new things. +doing), I'm trying to be somewhat elegant and learn new things in Rust. ## Formatting and linting @@ -44,4 +44,21 @@ feature in the nightlies (`01` supports it), but I wanted `cargo fmt` and approach. Features used in each vary. For example, `05` has an optional progress bar -(opt-out). `08` uses a crate. +(opt-out). Over time, I've been cleaning up the older problems based on what +I've learned in newer problems, so looking at the history for a file might be +instructive. I started using external crates like `itertools` & `derive_more` +around 10-12 or so, but backported a lot of the cleanups later. + +A few of the crates I'm using or have used: + +- `cached`: Python's `itertools.cache` basically +- `derive-new`: Powerful `new` creation (supports default, unlike `derive_more`'s `Constructor`. +- `derive_more`: Adds useful derives not part of the stdlib (like Add) +- `grid`: A simple 2D array library +- `indicatif`: Progress bars +- `log`, `env_logger`, `test-log`: logging facilities +- `num`: Needed `lcm` in a problem. +- `rayon` (not actively used): Easy multithreading +- `strum`: Powerful enum tools like conversion with strings & iteration over enums + +I added some documentation to 13 to try `cargo doc`.