aoc/README.md
2022-12-01 20:35:50 +00:00

55 lines
1.2 KiB
Markdown

# aoc-2022
don't look in `src/bin/day_*.rs` if you don't want spoilers.
yes some of this setup is needlessly overengineered
## magic rust macros (tm)
yes
i thought teehee i could make a proc macro for this
## using this
just don't
### ok alright
Make a solution for a day:
```rust
// Some useful things, including macros + color_eyre
use aoc_2022::prelude::*;
type Input = String; // some mildly useful structure for the input data
fn parse(s: &str) -> Result<Input> {
// implement whatever scary string manipulation you like
Ok(s.to_owned())
}
// heres some macro magic ✨
#[aoc(
day = 100, // used to fetch the challenge stuff from AOC directly
parse = parse, // so I can reuse parsers if needed
test_cases = ["day_100.txt"] // loaded from `test_cases/`
)]
fn day_100(mut input: Input) -> Result<()> {
// do something remotely awful to solve the challenge
// probably should println!() the results or something
Ok(())
}
// macro: a wild main function appears!
```
### auto-fetching
steal your session cookie from the browser devtools
make `.env` and add `AOC_SESSION=<your massive long session token>`
maybe use direnv to make it easier to load the `.env` file? (and the nix flake (yes theres one of those too uwu))