[INFO] cloning repository https://github.com/santiberna/aoc-solutions-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/santiberna/aoc-solutions-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsantiberna%2Faoc-solutions-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsantiberna%2Faoc-solutions-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4046a413409bc94e63dcdcff6e236e1c21b92442
[INFO] checking santiberna/aoc-solutions-rust against master#350d0ef0ec0493e6d21cfb265cb8211a0e74d766 for pr-145342
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsantiberna%2Faoc-solutions-rust" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/santiberna/aoc-solutions-rust
[INFO] finished tweaking git repo https://github.com/santiberna/aoc-solutions-rust
[INFO] tweaked toml for git repo https://github.com/santiberna/aoc-solutions-rust written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/santiberna/aoc-solutions-rust on toolchain 350d0ef0ec0493e6d21cfb265cb8211a0e74d766
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/santiberna/aoc-solutions-rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 49415b06d5593d51f3d4fcf8347e9249609005731858b2e7e1890c01044e5c8e
[INFO] running `Command { std: "docker" "start" "-a" "49415b06d5593d51f3d4fcf8347e9249609005731858b2e7e1890c01044e5c8e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "49415b06d5593d51f3d4fcf8347e9249609005731858b2e7e1890c01044e5c8e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "49415b06d5593d51f3d4fcf8347e9249609005731858b2e7e1890c01044e5c8e", kill_on_drop: false }`
[INFO] [stdout] 49415b06d5593d51f3d4fcf8347e9249609005731858b2e7e1890c01044e5c8e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8c0d3f1ce22c41f1a48f0ed8b6dc640b78d7c1c41d595b84a2457feabec5e567
[INFO] running `Command { std: "docker" "start" "-a" "8c0d3f1ce22c41f1a48f0ed8b6dc640b78d7c1c41d595b84a2457feabec5e567", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]     Checking bytemuck v1.23.1
[INFO] [stderr]     Checking memchr v2.7.5
[INFO] [stderr]     Checking rawpointer v0.2.1
[INFO] [stderr]     Checking regex-syntax v0.8.5
[INFO] [stderr]     Checking safe_arch v0.7.4
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking cfg-if v1.0.1
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking wide v0.7.33
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling matrixmultiply v0.3.10
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking num-iter v0.1.45
[INFO] [stderr]     Checking md-5 v0.10.6
[INFO] [stderr]     Checking simba v0.9.0
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking num v0.4.3
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]    Compiling nalgebra-macros v0.2.2
[INFO] [stderr]     Checking nalgebra v0.33.2
[INFO] [stderr]     Checking aoc-solutions-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `array` and `default`
[INFO] [stdout]  --> src/utility/mod.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{array, default};
[INFO] [stdout]   |           ^^^^^  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::check_result`
[INFO] [stdout]  --> src/y2016/c14_consecutive_hashes.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::check_result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::check_result`
[INFO] [stdout]  --> src/y2016/c18_generating_traps.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::check_result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::Ordering`
[INFO] [stdout]  --> src/y2016/c20_ip_ranges.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cmp::Ordering;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/y2016/c20_ip_ranges.rs:43:20
[INFO] [stdout]    |
[INFO] [stdout] 43 |         current -= (b - a + 1)
[INFO] [stdout]    |                    ^         ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 43 -         current -= (b - a + 1)
[INFO] [stdout] 43 +         current -= b - a + 1
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `array` and `default`
[INFO] [stdout]  --> src/utility/mod.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{array, default};
[INFO] [stdout]   |           ^^^^^  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::check_result`
[INFO] [stdout]  --> src/y2016/c14_consecutive_hashes.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::check_result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::check_result`
[INFO] [stdout]  --> src/y2016/c18_generating_traps.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::check_result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::Ordering`
[INFO] [stdout]  --> src/y2016/c20_ip_ranges.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cmp::Ordering;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/y2016/c20_ip_ranges.rs:43:20
[INFO] [stdout]    |
[INFO] [stdout] 43 |         current -= (b - a + 1)
[INFO] [stdout]    |                    ^         ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 43 -         current -= (b - a + 1)
[INFO] [stdout] 43 +         current -= b - a + 1
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `IVec2` is never used
[INFO] [stdout]  --> src/y2016/c1_taxi_driving.rs:5:6
[INFO] [stdout]   |
[INFO] [stdout] 5 | type IVec2 = Vector2<i32>;
[INFO] [stdout]   |      ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Turn` is never used
[INFO] [stdout]  --> src/y2016/c1_taxi_driving.rs:8:6
[INFO] [stdout]   |
[INFO] [stdout] 8 | enum Turn {
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `turn_right` is never used
[INFO] [stdout]   --> src/y2016/c1_taxi_driving.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |  fn turn_right(pos: &IVec2) -> IVec2 {
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `turn_left` is never used
[INFO] [stdout]   --> src/y2016/c1_taxi_driving.rs:18:13
[INFO] [stdout]    |
[INFO] [stdout] 18 |          fn turn_left(pos: &IVec2) -> IVec2 {
[INFO] [stdout]    |             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dir` is never used
[INFO] [stdout]   --> src/y2016/c1_taxi_driving.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn parse_dir(elem: &str) -> (Turn, i32) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `travel` is never used
[INFO] [stdout]   --> src/y2016/c1_taxi_driving.rs:32:4
[INFO] [stdout]    |
[INFO] [stdout] 32 | fn travel(dir: &mut IVec2, pos: &IVec2, (t, v): (Turn, i32)) -> IVec2 {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `track_travel` is never used
[INFO] [stdout]   --> src/y2016/c1_taxi_driving.rs:45:4
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn track_travel(items: &Vec<(Turn, i32)>) -> IVec2 {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c1_taxi_driving.rs:71:4
[INFO] [stdout]    |
[INFO] [stdout] 71 | fn challenge(input: &str) -> (i64, i64) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `IVec2` is never used
[INFO] [stdout]  --> src/y2016/c2_code_walk.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | type IVec2 = Vector2<i32>;
[INFO] [stdout]   |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_dir` is never used
[INFO] [stdout]  --> src/y2016/c2_code_walk.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse_dir(c: char) -> IVec2 {
[INFO] [stdout]   |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PANEL` is never used
[INFO] [stdout]   --> src/y2016/c2_code_walk.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const PANEL: [i32; 9] = [1, 2, 3, 4, 5, 6, 7, 8, 9];
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PANEL2` is never used
[INFO] [stdout]   --> src/y2016/c2_code_walk.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const PANEL2: [char; 25] = [
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/y2016/c2_code_walk.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn part1(items: &Vec<Vec<IVec2>>) -> i64 {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/y2016/c2_code_walk.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn part2(items: &Vec<Vec<IVec2>>) -> String {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c2_code_walk.rs:62:4
[INFO] [stdout]    |
[INFO] [stdout] 62 | fn challenge(input: &str) -> (i64, String) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Triangle` is never used
[INFO] [stdout]  --> src/y2016/c3_triangle_check.rs:3:6
[INFO] [stdout]   |
[INFO] [stdout] 3 | type Triangle = [i64; 3];
[INFO] [stdout]   |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_line` is never used
[INFO] [stdout]  --> src/y2016/c3_triangle_check.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn parse_line(str: &str) -> Triangle {
[INFO] [stdout]   |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `transform_vertical` is never used
[INFO] [stdout]   --> src/y2016/c3_triangle_check.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn transform_vertical(triangles: &Vec<Triangle>) -> Vec<Triangle> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_triangle` is never used
[INFO] [stdout]   --> src/y2016/c3_triangle_check.rs:34:4
[INFO] [stdout]    |
[INFO] [stdout] 34 | fn check_triangle(triangle: &Triangle) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c3_triangle_check.rs:42:4
[INFO] [stdout]    |
[INFO] [stdout] 42 | fn challenge(input: &str) -> (i64, i64) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Room` is never constructed
[INFO] [stdout]  --> src/y2016/c4_room_checksums.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | struct Room {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trim_checksum` is never used
[INFO] [stdout]   --> src/y2016/c4_room_checksums.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn trim_checksum(str: &str) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_room` is never used
[INFO] [stdout]   --> src/y2016/c4_room_checksums.rs:18:4
[INFO] [stdout]    |
[INFO] [stdout] 18 | fn parse_room(str: &str) -> Room {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sort_frequency` is never used
[INFO] [stdout]   --> src/y2016/c4_room_checksums.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn sort_frequency((c1, f1): &(char, usize), (c2, f2): &(char, usize)) -> Ordering {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `eval_room` is never used
[INFO] [stdout]   --> src/y2016/c4_room_checksums.rs:43:4
[INFO] [stdout]    |
[INFO] [stdout] 43 | fn eval_room(room: &Room) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_char` is never used
[INFO] [stdout]   --> src/y2016/c4_room_checksums.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn decode_char(c: char, r: i64) -> char {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_room_name` is never used
[INFO] [stdout]   --> src/y2016/c4_room_checksums.rs:83:4
[INFO] [stdout]    |
[INFO] [stdout] 83 | fn decode_room_name(room: &Room) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c4_room_checksums.rs:90:4
[INFO] [stdout]    |
[INFO] [stdout] 90 | fn challenge(input: &str) -> (i64, i64) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `md5_hash` is never used
[INFO] [stdout]  --> src/y2016/c5_hash_passwords.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn md5_hash(str: &[u8]) -> [u8; 16] {
[INFO] [stdout]   |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_zeros` is never used
[INFO] [stdout]  --> src/y2016/c5_hash_passwords.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn check_zeros(res: &[u8; 16]) -> bool {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sixth_hex` is never used
[INFO] [stdout]   --> src/y2016/c5_hash_passwords.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn get_sixth_hex(res: &[u8; 16]) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_seventh_hex` is never used
[INFO] [stdout]   --> src/y2016/c5_hash_passwords.rs:15:4
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn get_seventh_hex(res: &[u8; 16]) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u8_to_hex_string` is never used
[INFO] [stdout]   --> src/y2016/c5_hash_passwords.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn u8_to_hex_string(digits: &[u8]) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c5_hash_passwords.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn challenge(input: &str) -> (String, String) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]  --> src/y2016/c6_jumbled_message.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn challenge(input: &str) -> (String, String) {
[INFO] [stdout]   |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IPV7` is never constructed
[INFO] [stdout]  --> src/y2016/c7_ipv7_check.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | struct IPV7 {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_abba` is never used
[INFO] [stdout]  --> src/y2016/c7_ipv7_check.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn find_abba(str: &str) -> bool {
[INFO] [stdout]   |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_all_abas` is never used
[INFO] [stdout]   --> src/y2016/c7_ipv7_check.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn find_all_abas(str: &str) -> Vec<[u8; 3]> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `has_tls_support`, and `has_ssl_support` are never used
[INFO] [stdout]   --> src/y2016/c7_ipv7_check.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl IPV7 {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 22 |     fn new(str: &str) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn has_tls_support(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     fn has_ssl_support(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c7_ipv7_check.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn challenge(input: &str) -> (i64, i64) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WIDTH` is never used
[INFO] [stdout]  --> src/y2016/c8_screen_code.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const WIDTH: i64 = 50;
[INFO] [stdout]   |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEIGHT` is never used
[INFO] [stdout]  --> src/y2016/c8_screen_code.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const HEIGHT: i64 = 6;
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Instruction` is never used
[INFO] [stdout]   --> src/y2016/c8_screen_code.rs:11:6
[INFO] [stdout]    |
[INFO] [stdout] 11 | enum Instruction {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `State` is never constructed
[INFO] [stdout]   --> src/y2016/c8_screen_code.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct State {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `loop_mod` is never used
[INFO] [stdout]   --> src/y2016/c8_screen_code.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn loop_mod<T>(a: T, m: T) -> T
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `revert_instruction` is never used
[INFO] [stdout]   --> src/y2016/c8_screen_code.rs:65:4
[INFO] [stdout]    |
[INFO] [stdout] 65 | fn revert_instruction(state: State, ins: &Instruction) -> State {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_2d_bool_array` is never used
[INFO] [stdout]    --> src/y2016/c8_screen_code.rs:107:4
[INFO] [stdout]     |
[INFO] [stdout] 107 | fn print_2d_bool_array(data: &Vec<bool>, width: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]    --> src/y2016/c8_screen_code.rs:117:4
[INFO] [stdout]     |
[INFO] [stdout] 117 | fn challenge(input: &str) -> (i64, String) {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Marker` is never constructed
[INFO] [stdout]  --> src/y2016/c9_decompressing_text.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | struct Marker {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decompress_count` is never used
[INFO] [stdout]   --> src/y2016/c9_decompressing_text.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn decompress_count(input: &str) -> (usize, usize) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c9_decompressing_text.rs:52:4
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn challenge(input: &str) -> (usize, usize) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Target` is never used
[INFO] [stdout]   --> src/y2016/c10_comparing_bots.rs:14:6
[INFO] [stdout]    |
[INFO] [stdout] 14 | enum Target {
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Node` is never used
[INFO] [stdout]   --> src/y2016/c10_comparing_bots.rs:19:6
[INFO] [stdout]    |
[INFO] [stdout] 19 | type Node = (Target, Target);
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `State` is never used
[INFO] [stdout]   --> src/y2016/c10_comparing_bots.rs:21:6
[INFO] [stdout]    |
[INFO] [stdout] 21 | type State = [Vec<usize>; 256];
[INFO] [stdout]    |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_init` is never used
[INFO] [stdout]   --> src/y2016/c10_comparing_bots.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn setup_init(mut acc: Box<State>, s: &str) -> Box<State> {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_graph` is never used
[INFO] [stdout]   --> src/y2016/c10_comparing_bots.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn setup_graph(mut acc: HashMap<usize, Node>, s: &str) -> HashMap<usize, Node> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_values` is never used
[INFO] [stdout]   --> src/y2016/c10_comparing_bots.rs:59:4
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn get_values((i, v): (usize, &Vec<usize>)) -> (usize, usize, usize) {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c10_comparing_bots.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn challenge(input: &str) -> (usize, usize) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `State` is never constructed
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct State {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_initial_state` is never used
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn parse_initial_state(s: &str) -> State {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_goal` is never used
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:45:4
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn is_goal(s: &State) -> bool {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid` is never used
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn is_valid(state: &State) -> bool {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize` is never used
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:65:4
[INFO] [stdout]    |
[INFO] [stdout] 65 | fn normalize(state: &State) -> State {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Item` is never used
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:75:6
[INFO] [stdout]    |
[INFO] [stdout] 75 | enum Item {
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `next_states` is never used
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:80:4
[INFO] [stdout]    |
[INFO] [stdout] 80 | fn next_states(current: &State) -> Vec<State> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bfs` is never used
[INFO] [stdout]    --> src/y2016/c11_generator_elevators.rs:133:4
[INFO] [stdout]     |
[INFO] [stdout] 133 | fn bfs(initial: &State) -> usize {
[INFO] [stdout]     |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]    --> src/y2016/c11_generator_elevators.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn challenge(input: &str) -> (usize, usize) {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Literal` is never used
[INFO] [stdout]  --> src/y2016/c12_assembunny.rs:3:6
[INFO] [stdout]   |
[INFO] [stdout] 3 | type Literal = i64;
[INFO] [stdout]   |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Register` is never used
[INFO] [stdout]  --> src/y2016/c12_assembunny.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | type Register = char;
[INFO] [stdout]   |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Parameter` is never used
[INFO] [stdout]  --> src/y2016/c12_assembunny.rs:7:6
[INFO] [stdout]   |
[INFO] [stdout] 7 | enum Parameter {
[INFO] [stdout]   |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Instruction` is never used
[INFO] [stdout]   --> src/y2016/c12_assembunny.rs:13:6
[INFO] [stdout]    |
[INFO] [stdout] 13 | enum Instruction {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REGISTER_COUNT` is never used
[INFO] [stdout]   --> src/y2016/c12_assembunny.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const REGISTER_COUNT: usize = (b'z' - b'a') as usize;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VirtualMachine` is never constructed
[INFO] [stdout]   --> src/y2016/c12_assembunny.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | struct VirtualMachine {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `run`, `get_register`, and `get_register_mut` are never used
[INFO] [stdout]   --> src/y2016/c12_assembunny.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl VirtualMachine {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] 29 |     fn run(&mut self, code: &Vec<Instruction>) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     fn get_register(&self, register: char) -> &Literal {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     fn get_register_mut(&mut self, register: char) -> &mut Literal {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_instruction` is never used
[INFO] [stdout]   --> src/y2016/c12_assembunny.rs:80:4
[INFO] [stdout]    |
[INFO] [stdout] 80 | fn parse_instruction(s: &str) -> Instruction {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]    --> src/y2016/c12_assembunny.rs:110:4
[INFO] [stdout]     |
[INFO] [stdout] 110 | fn challenge(input: &str) -> (i64, i64) {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid` is never used
[INFO] [stdout]  --> src/y2016/c13_generate_maze.rs:8:4
[INFO] [stdout]   |
[INFO] [stdout] 8 | fn is_valid(pos: &IVec2, c: i32) -> bool
[INFO] [stdout]   |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c13_generate_maze.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn challenge(input: i32) -> (i64, i64) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_a_triple` is never used
[INFO] [stdout]  --> src/y2016/c14_consecutive_hashes.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn contains_a_triple(range: &[u8]) -> Option<u8> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_matching_quintuplet` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn contains_matching_quintuplet(range: &[u8], val: u8) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `md5_hash` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn md5_hash(str: &[u8]) -> [u8; 16] {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nibble_to_hex` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn nibble_to_hex(n: u8) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `md5_to_hex` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn md5_to_hex(hash: &[u8; 16]) -> [u8; 32] {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_hash_input` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn make_hash_input(salt: &[u8], num: usize) -> Vec<u8> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HashCache` is never constructed
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | struct HashCache {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calculate` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl HashCache {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 52 |     fn calculate<F>(&mut self, f: &F, index: usize) -> &[u8; 32]
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `algorithm` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:60:4
[INFO] [stdout]    |
[INFO] [stdout] 60 | fn algorithm<F>(f: &F) -> usize
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:88:4
[INFO] [stdout]    |
[INFO] [stdout] 88 | fn challenge(input: &[u8]) -> (usize, usize) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `into_equation` is never used
[INFO] [stdout]   --> src/y2016/c15_disc_capsule_fall.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn into_equation(&(index, length, time, current): &(i64, i64, i64, i64)) -> (i64, i64) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_disc` is never used
[INFO] [stdout]   --> src/y2016/c15_disc_capsule_fall.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn parse_disc(s: &str) -> Option<(i64, i64)> {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `constructive_crt` is never used
[INFO] [stdout]   --> src/y2016/c15_disc_capsule_fall.rs:32:4
[INFO] [stdout]    |
[INFO] [stdout] 32 | fn constructive_crt(input: &Vec<(i64, i64)>) -> i64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c15_disc_capsule_fall.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn challenge(input: &str) -> (i64, i64) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_bit` is never used
[INFO] [stdout]  --> src/y2016/c16_dragon_curve_fill.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn parse_bit(c: char) -> bool {
[INFO] [stdout]   |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dragon_expansion` is never used
[INFO] [stdout]   --> src/y2016/c16_dragon_curve_fill.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn dragon_expansion(input: &mut Vec<bool>) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dragon_collapse` is never used
[INFO] [stdout]   --> src/y2016/c16_dragon_curve_fill.rs:18:4
[INFO] [stdout]    |
[INFO] [stdout] 18 | fn dragon_collapse(input: &mut Vec<bool>) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bits_to_string` is never used
[INFO] [stdout]   --> src/y2016/c16_dragon_curve_fill.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn bits_to_string(bits: &Vec<bool>) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calc_checksum` is never used
[INFO] [stdout]   --> src/y2016/c16_dragon_curve_fill.rs:32:4
[INFO] [stdout]    |
[INFO] [stdout] 32 | fn calc_checksum(input: &Vec<bool>, size: usize) -> Vec<bool> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c16_dragon_curve_fill.rs:48:4
[INFO] [stdout]    |
[INFO] [stdout] 48 | fn challenge(input: &str) -> (String, String) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `determine_tile` is never used
[INFO] [stdout]  --> src/y2016/c18_generating_traps.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn determine_tile(left: bool, center: bool, right: bool) -> bool {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gen_tile` is never used
[INFO] [stdout]   --> src/y2016/c18_generating_traps.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn gen_tile(prev_row: &[bool], i: usize) -> bool {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `safe_tiles` is never used
[INFO] [stdout]   --> src/y2016/c18_generating_traps.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn safe_tiles(input: &[bool], rows: usize) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c18_generating_traps.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn challenge(input: &str) -> (usize, usize) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_elf1` is never used
[INFO] [stdout]  --> src/y2016/c19_elf_presents.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn calculate_elf1(input: usize) -> usize {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `least_power_of_3` is never used
[INFO] [stdout]  --> src/y2016/c19_elf_presents.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn least_power_of_3(n: usize) -> usize {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_elf2` is never used
[INFO] [stdout]   --> src/y2016/c19_elf_presents.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn calculate_elf2(input: usize) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c19_elf_presents.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn challenge(input: usize) -> (usize, usize) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_range` is never used
[INFO] [stdout]  --> src/y2016/c20_ip_ranges.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn extract_range(str: &str) -> (u32, u32) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_range` is never used
[INFO] [stdout]   --> src/y2016/c20_ip_ranges.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn merge_range(range1: &(u32, u32), range2: &(u32, u32)) -> Option<(u32, u32)> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_ranges` is never used
[INFO] [stdout]   --> src/y2016/c20_ip_ranges.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn merge_ranges(mut vec: Vec<(u32, u32)>, range: &(u32, u32)) -> Vec<(u32, u32)> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_all` is never used
[INFO] [stdout]   --> src/y2016/c20_ip_ranges.rs:39:4
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn count_all(input: &Vec<(u32, u32)>) -> u32 {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c20_ip_ranges.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn challenge(input: &str) -> (u32, u32) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Instruction` is never used
[INFO] [stdout]   --> src/y2016/c21_scramble_password.rs:20:6
[INFO] [stdout]    |
[INFO] [stdout] 20 | enum Instruction {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_instruction` is never used
[INFO] [stdout]   --> src/y2016/c21_scramble_password.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn parse_instruction(line: &str) -> Option<Instruction> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process` is never used
[INFO] [stdout]   --> src/y2016/c21_scramble_password.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn process(mut vec: Vec<u8>, instruction: &Instruction) -> Vec<u8> {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `invert_rotate_based_on_letter` is never used
[INFO] [stdout]   --> src/y2016/c21_scramble_password.rs:88:4
[INFO] [stdout]    |
[INFO] [stdout] 88 | fn invert_rotate_based_on_letter(vec: Vec<u8>, target_char: u8) -> Vec<u8> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `invert` is never used
[INFO] [stdout]    --> src/y2016/c21_scramble_password.rs:113:4
[INFO] [stdout]     |
[INFO] [stdout] 113 | fn invert(mut vec: Vec<u8>, instruction: &Instruction) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]    --> src/y2016/c21_scramble_password.rs:138:4
[INFO] [stdout]     |
[INFO] [stdout] 138 | fn challenge(input: &str) -> (String, String) {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiskInfo` is never constructed
[INFO] [stdout]   --> src/y2016/c22_filesystem_storage.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct DiskInfo {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_disk` is never used
[INFO] [stdout]   --> src/y2016/c22_filesystem_storage.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn parse_disk(line: &str) -> Option<((usize, usize), DiskInfo)> {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Coordinates` is never used
[INFO] [stdout]   --> src/y2016/c22_filesystem_storage.rs:39:6
[INFO] [stdout]    |
[INFO] [stdout] 39 | type Coordinates = (usize, usize);
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c22_filesystem_storage.rs:41:4
[INFO] [stdout]    |
[INFO] [stdout] 41 | fn challenge(input: &str) -> (usize, usize) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Option::<T>::is_none` that must be used
[INFO] [stdout]   --> src/y2016/c10_comparing_bots.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |         acc.insert(from, (low, high)).is_none();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: if you intended to assert that this doesn't have a value, consider wrapping this in an `assert!()` instead
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 53 |         let _ = acc.insert(from, (low, high)).is_none();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `Directions` should have an upper case name
[INFO] [stdout]   --> src/y2016/c13_generate_maze.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const Directions: [IVec2; 4] = [
[INFO] [stdout]    |           ^^^^^^^^^^ help: convert the identifier to upper case: `DIRECTIONS`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `md5_hash` is never used
[INFO] [stdout]  --> src/y2016/c5_hash_passwords.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn md5_hash(str: &[u8]) -> [u8; 16] {
[INFO] [stdout]   |    ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_zeros` is never used
[INFO] [stdout]  --> src/y2016/c5_hash_passwords.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn check_zeros(res: &[u8; 16]) -> bool {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sixth_hex` is never used
[INFO] [stdout]   --> src/y2016/c5_hash_passwords.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn get_sixth_hex(res: &[u8; 16]) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_seventh_hex` is never used
[INFO] [stdout]   --> src/y2016/c5_hash_passwords.rs:15:4
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn get_seventh_hex(res: &[u8; 16]) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u8_to_hex_string` is never used
[INFO] [stdout]   --> src/y2016/c5_hash_passwords.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn u8_to_hex_string(digits: &[u8]) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c5_hash_passwords.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn challenge(input: &str) -> (String, String) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_2d_bool_array` is never used
[INFO] [stdout]    --> src/y2016/c8_screen_code.rs:107:4
[INFO] [stdout]     |
[INFO] [stdout] 107 | fn print_2d_bool_array(data: &Vec<bool>, width: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `State` is never constructed
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct State {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_initial_state` is never used
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn parse_initial_state(s: &str) -> State {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_goal` is never used
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:45:4
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn is_goal(s: &State) -> bool {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid` is never used
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn is_valid(state: &State) -> bool {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize` is never used
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:65:4
[INFO] [stdout]    |
[INFO] [stdout] 65 | fn normalize(state: &State) -> State {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Item` is never used
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:75:6
[INFO] [stdout]    |
[INFO] [stdout] 75 | enum Item {
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `next_states` is never used
[INFO] [stdout]   --> src/y2016/c11_generator_elevators.rs:80:4
[INFO] [stdout]    |
[INFO] [stdout] 80 | fn next_states(current: &State) -> Vec<State> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bfs` is never used
[INFO] [stdout]    --> src/y2016/c11_generator_elevators.rs:133:4
[INFO] [stdout]     |
[INFO] [stdout] 133 | fn bfs(initial: &State) -> usize {
[INFO] [stdout]     |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]    --> src/y2016/c11_generator_elevators.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn challenge(input: &str) -> (usize, usize) {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_a_triple` is never used
[INFO] [stdout]  --> src/y2016/c14_consecutive_hashes.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn contains_a_triple(range: &[u8]) -> Option<u8> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_matching_quintuplet` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn contains_matching_quintuplet(range: &[u8], val: u8) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `md5_hash` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn md5_hash(str: &[u8]) -> [u8; 16] {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nibble_to_hex` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn nibble_to_hex(n: u8) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `md5_to_hex` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn md5_to_hex(hash: &[u8; 16]) -> [u8; 32] {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_hash_input` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn make_hash_input(salt: &[u8], num: usize) -> Vec<u8> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HashCache` is never constructed
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | struct HashCache {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calculate` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl HashCache {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 52 |     fn calculate<F>(&mut self, f: &F, index: usize) -> &[u8; 32]
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `algorithm` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:60:4
[INFO] [stdout]    |
[INFO] [stdout] 60 | fn algorithm<F>(f: &F) -> usize
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c14_consecutive_hashes.rs:88:4
[INFO] [stdout]    |
[INFO] [stdout] 88 | fn challenge(input: &[u8]) -> (usize, usize) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `determine_tile` is never used
[INFO] [stdout]  --> src/y2016/c18_generating_traps.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn determine_tile(left: bool, center: bool, right: bool) -> bool {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gen_tile` is never used
[INFO] [stdout]   --> src/y2016/c18_generating_traps.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn gen_tile(prev_row: &[bool], i: usize) -> bool {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `safe_tiles` is never used
[INFO] [stdout]   --> src/y2016/c18_generating_traps.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn safe_tiles(input: &[bool], rows: usize) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `challenge` is never used
[INFO] [stdout]   --> src/y2016/c18_generating_traps.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn challenge(input: &str) -> (usize, usize) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `size` and `percent` are never read
[INFO] [stdout]   --> src/y2016/c22_filesystem_storage.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct DiskInfo {
[INFO] [stdout]    |        -------- fields in this struct
[INFO] [stdout] 14 |     size: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     percent: usize,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DiskInfo` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Option::<T>::is_none` that must be used
[INFO] [stdout]   --> src/y2016/c10_comparing_bots.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |         acc.insert(from, (low, high)).is_none();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: if you intended to assert that this doesn't have a value, consider wrapping this in an `assert!()` instead
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 53 |         let _ = acc.insert(from, (low, high)).is_none();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `Directions` should have an upper case name
[INFO] [stdout]   --> src/y2016/c13_generate_maze.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const Directions: [IVec2; 4] = [
[INFO] [stdout]    |           ^^^^^^^^^^ help: convert the identifier to upper case: `DIRECTIONS`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.64s
[INFO] running `Command { std: "docker" "inspect" "8c0d3f1ce22c41f1a48f0ed8b6dc640b78d7c1c41d595b84a2457feabec5e567", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8c0d3f1ce22c41f1a48f0ed8b6dc640b78d7c1c41d595b84a2457feabec5e567", kill_on_drop: false }`
[INFO] [stdout] 8c0d3f1ce22c41f1a48f0ed8b6dc640b78d7c1c41d595b84a2457feabec5e567
