354 stable releases

Uses new Rust 2021

new 2019.12.405 Dec 3, 2021
2019.12.398 Nov 29, 2021
2019.12.354 Jul 30, 2021
2019.12.284 Mar 29, 2021
2019.12.168 Nov 30, 2020

#74 in Rust patterns

Download history 501/week @ 2021-08-13 7/week @ 2021-08-27 28/week @ 2021-09-03 37/week @ 2021-09-10 270/week @ 2021-09-17 469/week @ 2021-09-24 421/week @ 2021-10-01 166/week @ 2021-10-08 66/week @ 2021-10-15 422/week @ 2021-10-22 5/week @ 2021-10-29 342/week @ 2021-11-05 16/week @ 2021-11-12 143/week @ 2021-11-19 750/week @ 2021-11-26

1,251 downloads per month

MIT license

800KB
18K SLoC

Crates.io Docker Hub codecov

Advent of Code solutions

Solutions to Advent of Code problems in Rust.

Running locally

The command line tool takes <year> <day> <part> as arguments and reads the problem input from stdin:

$ echo 14 | cargo run -q 2019 1 1
2

Published crate

This crate is published to crates.io/crates/advent-of-code.

As a library it exposes a solve(year, day, part, input) function as documented on docs.rs/advent-of-code:

// Using the dependency added: advent-of-code = "*":
use advent_of_code::solve;

fn main() {
    assert_eq!(solve(2019, 1, 1, "14"), Ok("2".to_string()));
}

It also contains the command line program to run the solution:

$ cargo install advent-of-code
$ echo 14 | advent-of-code 2019 1 1
2

Docker image on Docker Hub

The command line interface is published to a fredrikfornwall/advent-of-code Docker image:

$ docker pull fredrikfornwall/advent-of-code:latest
$ echo 14 | docker run -i fredrikfornwall/advent-of-code:latest 2019 1 1
2

Generating flamegraphs on macOS

Install flamegraph with cargo install flamegraph and build a benchmark binary with:

RUSTFLAGS='-g' cargo build --release --bench benchmark

This will create a benchmark binary under something like ls ../../target/release/deps/benchmark-31ba773f80f7f5d8. Then profile and generate a flamegraph.svg by running

sudo flamegraph ../../target/release/deps/benchmark-31ba773f80f7f5d8  --bench 2020_07_1

Dependencies