[INFO] cloning repository https://github.com/simons-hub/rust-word-analyzer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/simons-hub/rust-word-analyzer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsimons-hub%2Frust-word-analyzer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsimons-hub%2Frust-word-analyzer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4414ee603be574fb1e254be8d99bf60616b68902
[INFO] checking simons-hub/rust-word-analyzer/4414ee603be574fb1e254be8d99bf60616b68902 against a7c37f9f0ee5e93396106e9de20f4a86b4154e63 for pr-129249-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsimons-hub%2Frust-word-analyzer" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/simons-hub/rust-word-analyzer
[INFO] finished tweaking git repo https://github.com/simons-hub/rust-word-analyzer
[INFO] tweaked toml for git repo https://github.com/simons-hub/rust-word-analyzer written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/simons-hub/rust-word-analyzer on toolchain a7c37f9f0ee5e93396106e9de20f4a86b4154e63
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a7c37f9f0ee5e93396106e9de20f4a86b4154e63" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/simons-hub/rust-word-analyzer 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" "+a7c37f9f0ee5e93396106e9de20f4a86b4154e63" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded quick-xml v0.37.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:c0af3998e971868164375a7dfb646c9933ddd1a3bdb00fa2041266763dc1eeab" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] b4e52422af241f34a6671e9d2a0a532b82bea785e35ce313de3152996299ee3b
[INFO] running `Command { std: "docker" "start" "b4e52422af241f34a6671e9d2a0a532b82bea785e35ce313de3152996299ee3b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b4e52422af241f34a6671e9d2a0a532b82bea785e35ce313de3152996299ee3b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b4e52422af241f34a6671e9d2a0a532b82bea785e35ce313de3152996299ee3b" "/opt/rustwide/cargo-home/bin/cargo" "+a7c37f9f0ee5e93396106e9de20f4a86b4154e63" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b4e52422af241f34a6671e9d2a0a532b82bea785e35ce313de3152996299ee3b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b4e52422af241f34a6671e9d2a0a532b82bea785e35ce313de3152996299ee3b" "/opt/rustwide/cargo-home/bin/cargo" "+a7c37f9f0ee5e93396106e9de20f4a86b4154e63" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.164
[INFO] [stderr]    Compiling zstd-safe v5.0.2+zstd.1.5.2
[INFO] [stderr]     Checking base64ct v1.6.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking inout v0.1.3
[INFO] [stderr]     Checking flate2 v1.0.35
[INFO] [stderr]     Checking time v0.3.36
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking sha2 v0.10.8
[INFO] [stderr]     Checking constant_time_eq v0.1.5
[INFO] [stderr]     Checking quick-xml v0.37.1
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking password-hash v0.4.2
[INFO] [stderr]     Checking pbkdf2 v0.11.0
[INFO] [stderr]    Compiling jobserver v0.1.32
[INFO] [stderr]    Compiling cc v1.2.1
[INFO] [stderr]    Compiling zstd-sys v2.0.13+zstd.1.5.6
[INFO] [stderr]    Compiling bzip2-sys v0.1.11+1.0.8
[INFO] [stderr]     Checking bzip2 v0.4.4
[INFO] [stderr]     Checking zstd v0.11.2+zstd.1.5.2
[INFO] [stderr]     Checking zip v0.6.6
[INFO] [stderr]     Checking rust-word-analyzer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/readfile.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `word_tracker_double_linkedlist::*`
[INFO] [stdout]   --> src/main.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use word_tracker_double_linkedlist::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/readfile.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `word_tracker_double_linkedlist::*`
[INFO] [stdout]   --> src/main.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use word_tracker_double_linkedlist::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_events` is assigned to, but never used
[INFO] [stdout]   --> src/readfile.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut total_events: i32 = 0;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_total_events` instead
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `numeric_text_events` is assigned to, but never used
[INFO] [stdout]   --> src/readfile.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let mut numeric_text_events: i32 = 0;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_numeric_text_events` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paragraph_id` is assigned to, but never used
[INFO] [stdout]   --> src/readfile.rs:52:17
[INFO] [stdout]    |
[INFO] [stdout] 52 |             let mut paragraph_id = 0;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_paragraph_id` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_events` is assigned to, but never used
[INFO] [stdout]   --> src/readfile.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut total_events: i32 = 0;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_total_events` instead
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_events` is never read
[INFO] [stdout]   --> src/readfile.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 |                 total_events+=1;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `numeric_text_events` is assigned to, but never used
[INFO] [stdout]   --> src/readfile.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let mut numeric_text_events: i32 = 0;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_numeric_text_events` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `numeric_text_events` is never read
[INFO] [stdout]    --> src/readfile.rs:136:29
[INFO] [stdout]     |
[INFO] [stdout] 136 | ...                   numeric_text_events+=1;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `paragraph_id` is never read
[INFO] [stdout]   --> src/readfile.rs:67:29
[INFO] [stdout]    |
[INFO] [stdout] 67 | ...                   paragraph_id += 1;
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paragraph_id` is assigned to, but never used
[INFO] [stdout]   --> src/readfile.rs:52:17
[INFO] [stdout]    |
[INFO] [stdout] 52 |             let mut paragraph_id = 0;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_paragraph_id` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_events` is never read
[INFO] [stdout]   --> src/readfile.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 |                 total_events+=1;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `numeric_text_events` is never read
[INFO] [stdout]    --> src/readfile.rs:136:29
[INFO] [stdout]     |
[INFO] [stdout] 136 | ...                   numeric_text_events+=1;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `paragraph_id` is never read
[INFO] [stdout]   --> src/readfile.rs:67:29
[INFO] [stdout]    |
[INFO] [stdout] 67 | ...                   paragraph_id += 1;
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cleaned_word` is never read
[INFO] [stdout]    --> src/readfile.rs:80:52
[INFO] [stdout]     |
[INFO] [stdout]  80 | ...                   let mut cleaned_word = String::new();
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 101 | ...                       cleaned_word = word.chars().filter(|c| c.is_alphabetic() || *c=='-' || *c=='+').collect();
[INFO] [stdout]     |                           ------------ `cleaned_word` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cleaned_word` is never read
[INFO] [stdout]    --> src/readfile.rs:80:52
[INFO] [stdout]     |
[INFO] [stdout]  80 | ...                   let mut cleaned_word = String::new();
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 101 | ...                       cleaned_word = word.chars().filter(|c| c.is_alphabetic() || *c=='-' || *c=='+').collect();
[INFO] [stdout]     |                           ------------ `cleaned_word` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cleaned_word` is never read
[INFO] [stdout]    --> src/readfile.rs:182:28
[INFO] [stdout]     |
[INFO] [stdout] 182 |     let mut cleaned_word = String::new();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 203 |         cleaned_word = word.chars().filter(|c| c.is_alphabetic() || *c=='-' || *c=='+').collect();
[INFO] [stdout]     |         ------------ `cleaned_word` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cleaned_word` is never read
[INFO] [stdout]    --> src/readfile.rs:182:28
[INFO] [stdout]     |
[INFO] [stdout] 182 |     let mut cleaned_word = String::new();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 203 |         cleaned_word = word.chars().filter(|c| c.is_alphabetic() || *c=='-' || *c=='+').collect();
[INFO] [stdout]     |         ------------ `cleaned_word` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/word_tracker_single_linkedlist.rs:43:21
[INFO] [stdout]    |
[INFO] [stdout] 43 |         if let Some(mut old_head) = self.head.take() {         
[INFO] [stdout]    |                     ----^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/word_tracker_single_linkedlist.rs:43:21
[INFO] [stdout]    |
[INFO] [stdout] 43 |         if let Some(mut old_head) = self.head.take() {         
[INFO] [stdout]    |                     ----^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/word_tracker_single_linkedlist.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let mut mid = self.find_middle(head.as_mut().unwrap());
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/word_tracker_single_linkedlist.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let mut mid = self.find_middle(head.as_mut().unwrap());
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/word_tracker_single_linkedlist.rs:234:13
[INFO] [stdout]     |
[INFO] [stdout] 234 |         let mut mid = self.find_middle(&mut head);
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/word_tracker_single_linkedlist.rs:255:21
[INFO] [stdout]     |
[INFO] [stdout] 255 |                 let mut next = left.as_mut().unwrap().next.take();
[INFO] [stdout]     |                     ----^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/word_tracker_single_linkedlist.rs:259:21
[INFO] [stdout]     |
[INFO] [stdout] 259 |                 let mut next = right.as_mut().unwrap().next.take();
[INFO] [stdout]     |                     ----^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `while let` pattern
[INFO] [stdout]    --> src/word_tracker_double_linkedlist.rs:141:23
[INFO] [stdout]     |
[INFO] [stdout] 141 |                 while let node = &*current {                                
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the loop will never exit
[INFO] [stdout]     = help: consider instead using a `loop { ... }` with a `let` inside it
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `INVALID` is never constructed
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | enum FileTypeEnum {
[INFO] [stdout]    |      ------------ variant in this enum
[INFO] [stdout] 17 |     INVALID,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StringPosition` is never used
[INFO] [stdout]  --> src/word_tracker_double_linkedlist.rs:6:6
[INFO] [stdout]   |
[INFO] [stdout] 6 | enum StringPosition {
[INFO] [stdout]   |      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WordNode` is never constructed
[INFO] [stdout]   --> src/word_tracker_double_linkedlist.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct WordNode {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/word_tracker_single_linkedlist.rs:234:13
[INFO] [stdout]     |
[INFO] [stdout] 234 |         let mut mid = self.find_middle(&mut head);
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WordList` is never constructed
[INFO] [stdout]   --> src/word_tracker_double_linkedlist.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | struct WordList {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/word_tracker_double_linkedlist.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl WordList {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  31 |     // Creates a new list
[INFO] [stdout]  32 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     fn push_word_front (&mut self, new_word: String) {    
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     fn push_word_tail (&mut self, new_word: String) {    
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     fn increment_word_count (&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn display_head (&self) {        
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn display_tail (&self) {        
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     fn display_list_forwards (&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     fn display_list_reverse (&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_string_x_vs_y_position` is never used
[INFO] [stdout]    --> src/word_tracker_double_linkedlist.rs:160:4
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn check_string_x_vs_y_position (word_x: Option<&str>, word_y: Option<&str>) -> StringPosition {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_word_list_double_ll` is never used
[INFO] [stdout]    --> src/word_tracker_double_linkedlist.rs:176:8
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub fn create_word_list_double_ll(mainbuf: &mut Vec<String>) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/word_tracker_single_linkedlist.rs:255:21
[INFO] [stdout]     |
[INFO] [stdout] 255 |                 let mut next = left.as_mut().unwrap().next.take();
[INFO] [stdout]     |                     ----^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/word_tracker_single_linkedlist.rs:259:21
[INFO] [stdout]     |
[INFO] [stdout] 259 |                 let mut next = right.as_mut().unwrap().next.take();
[INFO] [stdout]     |                     ----^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `while let` pattern
[INFO] [stdout]    --> src/word_tracker_double_linkedlist.rs:141:23
[INFO] [stdout]     |
[INFO] [stdout] 141 |                 while let node = &*current {                                
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the loop will never exit
[INFO] [stdout]     = help: consider instead using a `loop { ... }` with a `let` inside it
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `INVALID` is never constructed
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | enum FileTypeEnum {
[INFO] [stdout]    |      ------------ variant in this enum
[INFO] [stdout] 17 |     INVALID,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StringPosition` is never used
[INFO] [stdout]  --> src/word_tracker_double_linkedlist.rs:6:6
[INFO] [stdout]   |
[INFO] [stdout] 6 | enum StringPosition {
[INFO] [stdout]   |      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WordNode` is never constructed
[INFO] [stdout]   --> src/word_tracker_double_linkedlist.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct WordNode {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WordList` is never constructed
[INFO] [stdout]   --> src/word_tracker_double_linkedlist.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | struct WordList {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/word_tracker_double_linkedlist.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl WordList {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  31 |     // Creates a new list
[INFO] [stdout]  32 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     fn push_word_front (&mut self, new_word: String) {    
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     fn push_word_tail (&mut self, new_word: String) {    
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     fn increment_word_count (&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn display_head (&self) {        
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn display_tail (&self) {        
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     fn display_list_forwards (&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     fn display_list_reverse (&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_string_x_vs_y_position` is never used
[INFO] [stdout]    --> src/word_tracker_double_linkedlist.rs:160:4
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn check_string_x_vs_y_position (word_x: Option<&str>, word_y: Option<&str>) -> StringPosition {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_word_list_double_ll` is never used
[INFO] [stdout]    --> src/word_tracker_double_linkedlist.rs:176:8
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub fn create_word_list_double_ll(mainbuf: &mut Vec<String>) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.55s
[INFO] running `Command { std: "docker" "inspect" "b4e52422af241f34a6671e9d2a0a532b82bea785e35ce313de3152996299ee3b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b4e52422af241f34a6671e9d2a0a532b82bea785e35ce313de3152996299ee3b", kill_on_drop: false }`
[INFO] [stdout] b4e52422af241f34a6671e9d2a0a532b82bea785e35ce313de3152996299ee3b
