[INFO] cloning repository https://github.com/AdaephonBen/aoc-2023
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/AdaephonBen/aoc-2023" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAdaephonBen%2Faoc-2023", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAdaephonBen%2Faoc-2023'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] bbf3f5bcc57aa20de84b68d5f34c19371378b3d0
[INFO] checking AdaephonBen/aoc-2023 against master#c8a31b780d5415358566a20b94912620a3f27067 for pr-139493-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAdaephonBen%2Faoc-2023" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/AdaephonBen/aoc-2023
[INFO] finished tweaking git repo https://github.com/AdaephonBen/aoc-2023
[INFO] tweaked toml for git repo https://github.com/AdaephonBen/aoc-2023 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/AdaephonBen/aoc-2023 on toolchain c8a31b780d5415358566a20b94912620a3f27067
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c8a31b780d5415358566a20b94912620a3f27067" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/AdaephonBen/aoc-2023 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" "+c8a31b780d5415358566a20b94912620a3f27067" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+c8a31b780d5415358566a20b94912620a3f27067" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 76e3695e019050aabc56e70de7b5587c7be8a9f7fadf3952512bb4350f7a6926
[INFO] running `Command { std: "docker" "start" "-a" "76e3695e019050aabc56e70de7b5587c7be8a9f7fadf3952512bb4350f7a6926", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "76e3695e019050aabc56e70de7b5587c7be8a9f7fadf3952512bb4350f7a6926", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "76e3695e019050aabc56e70de7b5587c7be8a9f7fadf3952512bb4350f7a6926", kill_on_drop: false }`
[INFO] [stdout] 76e3695e019050aabc56e70de7b5587c7be8a9f7fadf3952512bb4350f7a6926
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+c8a31b780d5415358566a20b94912620a3f27067" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b9483767a874954768eb86d09811a5378b70dd29c5529bdae354ec907e20cc31
[INFO] running `Command { std: "docker" "start" "-a" "b9483767a874954768eb86d09811a5378b70dd29c5529bdae354ec907e20cc31", kill_on_drop: false }`
[INFO] [stderr]     Checking advent-of-code-2023 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: type `grab` should have an upper camel case name
[INFO] [stdout]  --> src/day2.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | struct grab {
[INFO] [stdout]   |        ^^^^ help: convert the identifier to upper camel case: `Grab`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `grab` should have an upper camel case name
[INFO] [stdout]  --> src/day2.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | struct grab {
[INFO] [stdout]   |        ^^^^ help: convert the identifier to upper camel case: `Grab`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `chars` as mutable, as it is not declared as mutable
[INFO] [stdout]   --> src/common.rs:22:30
[INFO] [stdout]    |
[INFO] [stdout] 22 |         final_substring.push(chars.nth(index as usize).unwrap());
[INFO] [stdout]    |                              ^^^^^ cannot borrow as mutable
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing this to be mutable
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let mut chars = str.chars();
[INFO] [stdout]    |         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0381]: used binding `final_substring` isn't initialized
[INFO] [stdout]   --> src/common.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut final_substring: String;
[INFO] [stdout]    |         ------------------- binding declared here but left uninitialized
[INFO] [stdout] ...
[INFO] [stdout] 24 |     final_substring
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ `final_substring` used here but it isn't initialized
[INFO] [stdout]    |
[INFO] [stdout] help: consider assigning a value
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut final_substring: String = Default::default();
[INFO] [stdout]    |                                     ++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `chars` as mutable, as it is not declared as mutable
[INFO] [stdout]   --> src/common.rs:22:30
[INFO] [stdout]    |
[INFO] [stdout] 22 |         final_substring.push(chars.nth(index as usize).unwrap());
[INFO] [stdout]    |                              ^^^^^ cannot borrow as mutable
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing this to be mutable
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let mut chars = str.chars();
[INFO] [stdout]    |         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0381]: used binding `final_substring` isn't initialized
[INFO] [stdout]   --> src/common.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut final_substring: String;
[INFO] [stdout]    |         ------------------- binding declared here but left uninitialized
[INFO] [stdout] ...
[INFO] [stdout] 24 |     final_substring
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ `final_substring` used here but it isn't initialized
[INFO] [stdout]    |
[INFO] [stdout] help: consider assigning a value
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut final_substring: String = Default::default();
[INFO] [stdout]    |                                     ++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0381]: partially assigned binding `current_grab` isn't fully initialized
[INFO] [stdout]   --> src/day2.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut current_grab: grab;
[INFO] [stdout]    |         ---------------- binding declared here but left uninitialized
[INFO] [stdout] 28 |     current_grab.green = parse_color(String::from("green"), grab_string);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `current_grab` partially assigned here but it isn't fully initialized
[INFO] [stdout]    |
[INFO] [stdout]    = help: partial initialization isn't supported, fully initialize the binding with a default value and mutate it, or use `std::mem::MaybeUninit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `grab_string`
[INFO] [stdout]   --> src/day2.rs:29:59
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn get_grab(grab_string: String) -> grab {
[INFO] [stdout]    |             ----------- move occurs because `grab_string` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] 27 |     let mut current_grab: grab;
[INFO] [stdout] 28 |     current_grab.green = parse_color(String::from("green"), grab_string);
[INFO] [stdout]    |                                                             ----------- value moved here
[INFO] [stdout] 29 |     current_grab.blue = parse_color(String::from("blue"), grab_string);
[INFO] [stdout]    |                                                           ^^^^^^^^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] note: consider changing this parameter type in function `parse_color` to borrow instead if owning the value isn't necessary
[INFO] [stdout]   --> src/day2.rs:9:42
[INFO] [stdout]    |
[INFO] [stdout]  9 | fn parse_color(color_name: String, grab: String) -> u32 {
[INFO] [stdout]    |    ----------- in this function          ^^^^^^ this parameter takes ownership of the value
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 28 |     current_grab.green = parse_color(String::from("green"), grab_string.clone());
[INFO] [stdout]    |                                                                        ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `grab_string`
[INFO] [stdout]   --> src/day2.rs:30:57
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn get_grab(grab_string: String) -> grab {
[INFO] [stdout]    |             ----------- move occurs because `grab_string` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 29 |     current_grab.blue = parse_color(String::from("blue"), grab_string);
[INFO] [stdout]    |                                                           ----------- value moved here
[INFO] [stdout] 30 |     current_grab.red = parse_color(String::from("red"), grab_string);
[INFO] [stdout]    |                                                         ^^^^^^^^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] note: consider changing this parameter type in function `parse_color` to borrow instead if owning the value isn't necessary
[INFO] [stdout]   --> src/day2.rs:9:42
[INFO] [stdout]    |
[INFO] [stdout]  9 | fn parse_color(color_name: String, grab: String) -> u32 {
[INFO] [stdout]    |    ----------- in this function          ^^^^^^ this parameter takes ownership of the value
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 29 |     current_grab.blue = parse_color(String::from("blue"), grab_string.clone());
[INFO] [stdout]    |                                                                      ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `line`
[INFO] [stdout]   --> src/day2.rs:36:73
[INFO] [stdout]    |
[INFO] [stdout] 34 | fn get_grabs(line: String) -> Vec<grab> {
[INFO] [stdout]    |              ---- move occurs because `line` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] 35 |     let colon_position: u32 = line.find(":").expect("Unable to unwrap position of colon") as u32;
[INFO] [stdout] 36 |     let line_without_colon = common::substring(line, colon_position+1, (line.len()-1) as u32);
[INFO] [stdout]    |                                                ---- value moved here    ^^^^ value borrowed here after move
[INFO] [stdout]    |
[INFO] [stdout] note: consider changing this parameter type in function `substring` to borrow instead if owning the value isn't necessary
[INFO] [stdout]   --> src/common.rs:18:23
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn substring(str: String, start_index: u32, end_index: u32) -> String {
[INFO] [stdout]    |        ---------      ^^^^^^ this parameter takes ownership of the value
[INFO] [stdout]    |        |
[INFO] [stdout]    |        in this function
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let line_without_colon = common::substring(line.clone(), colon_position+1, (line.len()-1) as u32);
[INFO] [stdout]    |                                                    ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0381]: used binding `grabs` isn't initialized
[INFO] [stdout]   --> src/day2.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     let mut grabs: Vec<grab>;
[INFO] [stdout]    |         --------- binding declared here but left uninitialized
[INFO] [stdout] ...
[INFO] [stdout] 43 |     grabs
[INFO] [stdout]    |     ^^^^^ `grabs` used here but it isn't initialized
[INFO] [stdout]    |
[INFO] [stdout] help: consider assigning a value
[INFO] [stdout]    |
[INFO] [stdout] 38 |     let mut grabs: Vec<grab> = vec![];
[INFO] [stdout]    |                              ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0381]: used binding `games` isn't initialized
[INFO] [stdout]   --> src/day2.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut games: Vec<Vec<grab>>;
[INFO] [stdout]    |         --------- binding declared here but left uninitialized
[INFO] [stdout] ...
[INFO] [stdout] 51 |         games.push(grabs);
[INFO] [stdout]    |         ^^^^^ `games` used here but it isn't initialized
[INFO] [stdout]    |
[INFO] [stdout] help: consider assigning a value
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut games: Vec<Vec<grab>> = vec![];
[INFO] [stdout]    |                                   ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0381, E0382, E0596.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0381`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `advent-of-code-2023` (bin "advent-of-code-2023" test) due to 8 previous errors; 1 warning emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0381]: partially assigned binding `current_grab` isn't fully initialized
[INFO] [stdout]   --> src/day2.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut current_grab: grab;
[INFO] [stdout]    |         ---------------- binding declared here but left uninitialized
[INFO] [stdout] 28 |     current_grab.green = parse_color(String::from("green"), grab_string);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `current_grab` partially assigned here but it isn't fully initialized
[INFO] [stdout]    |
[INFO] [stdout]    = help: partial initialization isn't supported, fully initialize the binding with a default value and mutate it, or use `std::mem::MaybeUninit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `grab_string`
[INFO] [stdout]   --> src/day2.rs:29:59
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn get_grab(grab_string: String) -> grab {
[INFO] [stdout]    |             ----------- move occurs because `grab_string` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] 27 |     let mut current_grab: grab;
[INFO] [stdout] 28 |     current_grab.green = parse_color(String::from("green"), grab_string);
[INFO] [stdout]    |                                                             ----------- value moved here
[INFO] [stdout] 29 |     current_grab.blue = parse_color(String::from("blue"), grab_string);
[INFO] [stdout]    |                                                           ^^^^^^^^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] note: consider changing this parameter type in function `parse_color` to borrow instead if owning the value isn't necessary
[INFO] [stdout]   --> src/day2.rs:9:42
[INFO] [stdout]    |
[INFO] [stdout]  9 | fn parse_color(color_name: String, grab: String) -> u32 {
[INFO] [stdout]    |    ----------- in this function          ^^^^^^ this parameter takes ownership of the value
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 28 |     current_grab.green = parse_color(String::from("green"), grab_string.clone());
[INFO] [stdout]    |                                                                        ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `grab_string`
[INFO] [stdout]   --> src/day2.rs:30:57
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn get_grab(grab_string: String) -> grab {
[INFO] [stdout]    |             ----------- move occurs because `grab_string` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 29 |     current_grab.blue = parse_color(String::from("blue"), grab_string);
[INFO] [stdout]    |                                                           ----------- value moved here
[INFO] [stdout] 30 |     current_grab.red = parse_color(String::from("red"), grab_string);
[INFO] [stdout]    |                                                         ^^^^^^^^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] note: consider changing this parameter type in function `parse_color` to borrow instead if owning the value isn't necessary
[INFO] [stdout]   --> src/day2.rs:9:42
[INFO] [stdout]    |
[INFO] [stdout]  9 | fn parse_color(color_name: String, grab: String) -> u32 {
[INFO] [stdout]    |    ----------- in this function          ^^^^^^ this parameter takes ownership of the value
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 29 |     current_grab.blue = parse_color(String::from("blue"), grab_string.clone());
[INFO] [stdout]    |                                                                      ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `line`
[INFO] [stdout]   --> src/day2.rs:36:73
[INFO] [stdout]    |
[INFO] [stdout] 34 | fn get_grabs(line: String) -> Vec<grab> {
[INFO] [stdout]    |              ---- move occurs because `line` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] 35 |     let colon_position: u32 = line.find(":").expect("Unable to unwrap position of colon") as u32;
[INFO] [stdout] 36 |     let line_without_colon = common::substring(line, colon_position+1, (line.len()-1) as u32);
[INFO] [stdout]    |                                                ---- value moved here    ^^^^ value borrowed here after move
[INFO] [stdout]    |
[INFO] [stdout] note: consider changing this parameter type in function `substring` to borrow instead if owning the value isn't necessary
[INFO] [stdout]   --> src/common.rs:18:23
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn substring(str: String, start_index: u32, end_index: u32) -> String {
[INFO] [stdout]    |        ---------      ^^^^^^ this parameter takes ownership of the value
[INFO] [stdout]    |        |
[INFO] [stdout]    |        in this function
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let line_without_colon = common::substring(line.clone(), colon_position+1, (line.len()-1) as u32);
[INFO] [stdout]    |                                                    ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0381]: used binding `grabs` isn't initialized
[INFO] [stdout]   --> src/day2.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     let mut grabs: Vec<grab>;
[INFO] [stdout]    |         --------- binding declared here but left uninitialized
[INFO] [stdout] ...
[INFO] [stdout] 43 |     grabs
[INFO] [stdout]    |     ^^^^^ `grabs` used here but it isn't initialized
[INFO] [stdout]    |
[INFO] [stdout] help: consider assigning a value
[INFO] [stdout]    |
[INFO] [stdout] 38 |     let mut grabs: Vec<grab> = vec![];
[INFO] [stdout]    |                              ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0381]: used binding `games` isn't initialized
[INFO] [stdout]   --> src/day2.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut games: Vec<Vec<grab>>;
[INFO] [stdout]    |         --------- binding declared here but left uninitialized
[INFO] [stdout] ...
[INFO] [stdout] 51 |         games.push(grabs);
[INFO] [stdout]    |         ^^^^^ `games` used here but it isn't initialized
[INFO] [stdout]    |
[INFO] [stdout] help: consider assigning a value
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut games: Vec<Vec<grab>> = vec![];
[INFO] [stdout]    |                                   ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0381, E0382, E0596.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0381`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `advent-of-code-2023` (bin "advent-of-code-2023") due to 8 previous errors; 1 warning emitted
[INFO] running `Command { std: "docker" "inspect" "b9483767a874954768eb86d09811a5378b70dd29c5529bdae354ec907e20cc31", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b9483767a874954768eb86d09811a5378b70dd29c5529bdae354ec907e20cc31", kill_on_drop: false }`
[INFO] [stdout] b9483767a874954768eb86d09811a5378b70dd29c5529bdae354ec907e20cc31
