[INFO] cloning repository https://github.com/nouwaarom/beaver_build
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/nouwaarom/beaver_build" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnouwaarom%2Fbeaver_build", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnouwaarom%2Fbeaver_build'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d43471d0cdb5b1849c06fcbdb4e11c411fbf0979
[INFO] checking nouwaarom/beaver_build against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnouwaarom%2Fbeaver_build" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/nouwaarom/beaver_build
[INFO] finished tweaking git repo https://github.com/nouwaarom/beaver_build
[INFO] tweaked toml for git repo https://github.com/nouwaarom/beaver_build written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/nouwaarom/beaver_build on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/nouwaarom/beaver_build 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" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: binary `beaver_build` should have a kebab-case name
[INFO] [stderr]    |
[INFO] [stderr]  1 | /workspace/builds/worker-2-tc1/source/target/.../beaver_build
[INFO] [stderr]    |                                                  ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::non_kebab_case_bins` is set to `warn` by default
[INFO] [stderr] help: to change the binary name to `beaver-build`, convert `package.name`
[INFO] [stderr]   --> Cargo.toml:13:8
[INFO] [stderr]    |
[INFO] [stderr] 13 - name = "beaver_build"
[INFO] [stderr] 13 + name = "beaver-build"
[INFO] [stderr]    |
[INFO] [stderr] help: to change the binary name to `beaver-build`, specify `bin.name`
[INFO] [stderr]   --> Cargo.toml:14:19
[INFO] [stderr]    |
[INFO] [stderr] 14 ~ version = "0.1.0"
[INFO] [stderr] 15 + [[bin]]
[INFO] [stderr] 16 + name = "beaver-build"
[INFO] [stderr] 17 + path = "src/main.rs"
[INFO] [stderr]    |
[INFO] [stderr] warning: `beaver_build` (manifest) generated 1 warning
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serde_derive v1.0.189
[INFO] [stderr]   Downloaded serde v1.0.189
[INFO] [stderr]   Downloaded nix v0.27.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] efcb4094f390c825f86bcd314f8c0ae367089f8d4e167c3cb81542ef4fe5f489
[INFO] running `Command { std: "docker" "start" "efcb4094f390c825f86bcd314f8c0ae367089f8d4e167c3cb81542ef4fe5f489", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "efcb4094f390c825f86bcd314f8c0ae367089f8d4e167c3cb81542ef4fe5f489", 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" "efcb4094f390c825f86bcd314f8c0ae367089f8d4e167c3cb81542ef4fe5f489" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "efcb4094f390c825f86bcd314f8c0ae367089f8d4e167c3cb81542ef4fe5f489", 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" "efcb4094f390c825f86bcd314f8c0ae367089f8d4e167c3cb81542ef4fe5f489" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: binary `beaver_build` should have a kebab-case name
[INFO] [stderr]    |
[INFO] [stderr]  1 | /opt/rustwide/target/.../beaver_build
[INFO] [stderr]    |                          ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::non_kebab_case_bins` is set to `warn` by default
[INFO] [stderr] help: to change the binary name to `beaver-build`, convert `package.name`
[INFO] [stderr]   --> Cargo.toml:13:8
[INFO] [stderr]    |
[INFO] [stderr] 13 - name = "beaver_build"
[INFO] [stderr] 13 + name = "beaver-build"
[INFO] [stderr]    |
[INFO] [stderr] help: to change the binary name to `beaver-build`, specify `bin.name`
[INFO] [stderr]   --> Cargo.toml:14:19
[INFO] [stderr]    |
[INFO] [stderr] 14 ~ version = "0.1.0"
[INFO] [stderr] 15 + [[bin]]
[INFO] [stderr] 16 + name = "beaver-build"
[INFO] [stderr] 17 + path = "src/main.rs"
[INFO] [stderr]    |
[INFO] [stderr] warning: `beaver_build` (manifest) generated 1 warning
[INFO] [stderr]    Compiling libc v0.2.148
[INFO] [stderr]    Compiling serde v1.0.189
[INFO] [stderr]    Compiling serde_json v1.0.107
[INFO] [stderr]     Checking bitflags v2.4.0
[INFO] [stderr]     Checking itoa v1.0.9
[INFO] [stderr]     Checking either v1.9.0
[INFO] [stderr]     Checking ryu v1.0.15
[INFO] [stderr]     Checking itertools v0.11.0
[INFO] [stderr]     Checking num_cpus v1.16.0
[INFO] [stderr]     Checking nix v0.27.1
[INFO] [stderr]     Checking threadpool v1.8.1
[INFO] [stderr]     Checking beaver_build v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Result`
[INFO] [stdout]  --> src/configurator.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use serde_json::{Result, Value};
[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: `std::collections::HashMap`
[INFO] [stdout]  --> src/dependency_graph.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::marker::PhantomData`
[INFO] [stdout]  --> src/dependency_graph.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::marker::PhantomData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GraphVisitor`
[INFO] [stdout]  --> src/scheduler.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::graph_walker::{GraphVisitor};
[INFO] [stdout]   |                           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ExitStatus`
[INFO] [stdout]  --> src/work_pool.rs:2:29
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::process::{Command, ExitStatus};
[INFO] [stdout]   |                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Builder`
[INFO] [stdout]   --> src/main.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | use builder::{Builder}; 
[INFO] [stdout]    |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GraphVisitor` and `GraphWalker`
[INFO] [stdout]   --> src/main.rs:15:20
[INFO] [stdout]    |
[INFO] [stdout] 15 | use graph_walker::{GraphWalker, GraphVisitor};
[INFO] [stdout]    |                    ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Result`
[INFO] [stdout]  --> src/configurator.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use serde_json::{Result, Value};
[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: `std::collections::HashMap`
[INFO] [stdout]  --> src/dependency_graph.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::marker::PhantomData`
[INFO] [stdout]  --> src/dependency_graph.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::marker::PhantomData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GraphVisitor`
[INFO] [stdout]  --> src/scheduler.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::graph_walker::{GraphVisitor};
[INFO] [stdout]   |                           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ExitStatus`
[INFO] [stdout]  --> src/work_pool.rs:2:29
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::process::{Command, ExitStatus};
[INFO] [stdout]   |                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Builder`
[INFO] [stdout]   --> src/main.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | use builder::{Builder}; 
[INFO] [stdout]    |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GraphVisitor` and `GraphWalker`
[INFO] [stdout]   --> src/main.rs:15:20
[INFO] [stdout]    |
[INFO] [stdout] 15 | use graph_walker::{GraphWalker, GraphVisitor};
[INFO] [stdout]    |                    ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> src/dependency_graph.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 |         if let DependencyOptions::ExecutableOptions {..} = options {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `graph`
[INFO] [stdout]   --> src/scheduler.rs:52:30
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn visit_node(&mut self, graph: &DependencyGraph, node: Ref<DependencyNode>) {
[INFO] [stdout]    |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_graph`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]   --> src/scheduler.rs:52:55
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn visit_node(&mut self, graph: &DependencyGraph, node: Ref<DependencyNode>) {
[INFO] [stdout]    |                                                       ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]   --> src/builder.rs:41:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let name = graph.get_name(node);
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> src/builder.rs:171:41
[INFO] [stdout]     |
[INFO] [stdout] 171 |                 let link_libraries = if let DependencyOptions::ExecutableOptions { link_flags, link_libraries } = executable_options {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `link_flags`
[INFO] [stdout]    --> src/builder.rs:171:84
[INFO] [stdout]     |
[INFO] [stdout] 171 |                 let link_libraries = if let DependencyOptions::ExecutableOptions { link_flags, link_libraries } = executable_options {
[INFO] [stdout]     |                                                                                    ^^^^^^^^^^ help: try ignoring the field: `link_flags: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |     let mut dependency_graph = configure_clib_project("./data/clib");
[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/main.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let mut work_pool = WorkPool::new(4);
[INFO] [stdout]    |         ----^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `work_pool`
[INFO] [stdout]   --> src/main.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let mut work_pool = WorkPool::new(4);
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_work_pool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `link_flags` and `link_libraries` are never read
[INFO] [stdout]   --> src/dependency_graph.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     ExecutableOptions {
[INFO] [stdout]    |     ----------------- fields in this variant
[INFO] [stdout] 18 |         link_flags: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 19 |         link_libraries: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DependencyOptions` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `files` is never read
[INFO] [stdout]   --> src/dependency_graph.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct DependencyNode {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     files: Vec<String>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DependencyNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_options`, `get_dependencies`, `get_type`, and `get_files` are never used
[INFO] [stdout]    --> src/dependency_graph.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl DependencyGraph {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_options(&self, node_ref: Ref<DependencyNode>) -> Option<DependencyOptions> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn get_dependencies(&self, node: Ref<DependencyNode>) -> Vec<Ref<DependencyNode>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn get_type(&self, node: Ref<DependencyNode>) -> DependencyType {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn get_files(&self, node: Ref<DependencyNode>) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_recursive_for` and `read_files_in_dir_recursive` are never used
[INFO] [stdout]   --> src/filesystem.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl DirReader {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn new_recursive_for(dir: &str) -> DirReader {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn read_files_in_dir_recursive(&mut self, dir: &Path) -> io::Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `number_of_unbuilt_dependencies` and `is_built` are never read
[INFO] [stdout]  --> src/scheduler.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | struct TargetStatus {
[INFO] [stdout]   |        ------------ fields in this struct
[INFO] [stdout] 6 |     // Target can only be built when all dependencies have been built.
[INFO] [stdout] 7 |     number_of_unbuilt_dependencies: usize,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 8 |     is_built: bool,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `target_status_map` and `target_data_map` are never read
[INFO] [stdout]   --> src/scheduler.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Scheduler {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 20 |     // TODO, replace hashmap by something smarter because we know how many nodes there are.
[INFO] [stdout] 21 |     target_status_map: HashMap<Ref<DependencyNode>, TargetStatus>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     target_data_map: HashMap<Ref<DependencyNode>, TargetData>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WorkInstruction` is never used
[INFO] [stdout]  --> src/work_pool.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum WorkInstruction {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `job_id` and `result` are never read
[INFO] [stdout]   --> src/work_pool.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct WorkResult {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 23 |     job_id: usize,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 24 |     result: Result<String, String>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pool`, `channel_receiver`, `worker`, `results`, `next_job_id`, and `number_of_jobs_waiting` are never read
[INFO] [stdout]   --> src/work_pool.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct WorkPool {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 28 |     pool: ThreadPool,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 29 |     channel_receiver: Receiver<WorkResult>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     worker: Worker,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 31 |     results: Vec<WorkResult>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 32 |     next_job_id: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 33 |     number_of_jobs_waiting: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `schedule_work`, `get_result_blocking`, `get_next_result_blocking`, `fetch_results_from_queue`, and `wait_for_result_from_channel` are never used
[INFO] [stdout]    --> src/work_pool.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl WorkPool {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn schedule_work(&mut self, instruction: WorkInstruction) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn get_result_blocking(&mut self, job_id: usize) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn get_next_result_blocking(&mut self) -> Option<WorkResult> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     fn fetch_results_from_queue(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     fn wait_for_result_from_channel(&mut self) -> WorkResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `channel_sender` and `job_id` are never read
[INFO] [stdout]    --> src/work_pool.rs:117:5
[INFO] [stdout]     |
[INFO] [stdout] 116 | struct Worker {
[INFO] [stdout]     |        ------ fields in this struct
[INFO] [stdout] 117 |     channel_sender: Sender<WorkResult>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 118 |     job_id: usize,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Worker` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `execute_work`, `execute_compiler`, and `execute_linker` are never used
[INFO] [stdout]    --> src/work_pool.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 121 | impl Worker {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] 122 |     fn execute_work(self, instruction: WorkInstruction) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     fn execute_compiler(&self, source_file: String, include_dirs: Vec<String>, output_file: String) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     fn execute_linker(&self, object_files: Vec<String>, link_libraries: Vec<String>, output_file: String) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `GraphVisitor` is never used
[INFO] [stdout]  --> src/graph_walker.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub trait GraphVisitor {
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GraphWalker` is never constructed
[INFO] [stdout]   --> src/graph_walker.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphWalker<'a> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `walk`, and `visit` are never used
[INFO] [stdout]   --> src/graph_walker.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl GraphWalker<'_> {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new<'b>(graph: &'b mut DependencyGraph) -> GraphWalker<'b> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn walk(&mut self, root: Ref<DependencyNode>, visitor: &mut dyn GraphVisitor) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     fn visit(&self, node: Ref<DependencyNode>, visitor: &mut dyn GraphVisitor) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LibraryNodeCache` is never constructed
[INFO] [stdout]  --> src/builder.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct LibraryNodeCache {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Builder` is never constructed
[INFO] [stdout]   --> src/builder.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Builder<'a> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `reset` are never used
[INFO] [stdout]   --> src/builder.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Builder<'_> {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 22 |     pub fn new(build_dir: String, work_pool: &mut WorkPool) -> Builder {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn reset(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/builder.rs:22:46
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn new(build_dir: String, work_pool: &mut WorkPool) -> Builder {
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^     ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                              |
[INFO] [stdout]    |                                              the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn new(build_dir: String, work_pool: &mut WorkPool) -> Builder<'_> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> src/dependency_graph.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 |         if let DependencyOptions::ExecutableOptions {..} = options {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `graph`
[INFO] [stdout]   --> src/scheduler.rs:52:30
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn visit_node(&mut self, graph: &DependencyGraph, node: Ref<DependencyNode>) {
[INFO] [stdout]    |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_graph`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]   --> src/scheduler.rs:52:55
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn visit_node(&mut self, graph: &DependencyGraph, node: Ref<DependencyNode>) {
[INFO] [stdout]    |                                                       ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]   --> src/builder.rs:41:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let name = graph.get_name(node);
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> src/builder.rs:171:41
[INFO] [stdout]     |
[INFO] [stdout] 171 |                 let link_libraries = if let DependencyOptions::ExecutableOptions { link_flags, link_libraries } = executable_options {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `link_flags`
[INFO] [stdout]    --> src/builder.rs:171:84
[INFO] [stdout]     |
[INFO] [stdout] 171 |                 let link_libraries = if let DependencyOptions::ExecutableOptions { link_flags, link_libraries } = executable_options {
[INFO] [stdout]     |                                                                                    ^^^^^^^^^^ help: try ignoring the field: `link_flags: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |     let mut dependency_graph = configure_clib_project("./data/clib");
[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/main.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let mut work_pool = WorkPool::new(4);
[INFO] [stdout]    |         ----^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `work_pool`
[INFO] [stdout]   --> src/main.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let mut work_pool = WorkPool::new(4);
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_work_pool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `link_flags` and `link_libraries` are never read
[INFO] [stdout]   --> src/dependency_graph.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     ExecutableOptions {
[INFO] [stdout]    |     ----------------- fields in this variant
[INFO] [stdout] 18 |         link_flags: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 19 |         link_libraries: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DependencyOptions` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `files` is never read
[INFO] [stdout]   --> src/dependency_graph.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct DependencyNode {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     files: Vec<String>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DependencyNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_options`, `get_dependencies`, `get_type`, and `get_files` are never used
[INFO] [stdout]    --> src/dependency_graph.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl DependencyGraph {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_options(&self, node_ref: Ref<DependencyNode>) -> Option<DependencyOptions> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn get_dependencies(&self, node: Ref<DependencyNode>) -> Vec<Ref<DependencyNode>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn get_type(&self, node: Ref<DependencyNode>) -> DependencyType {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn get_files(&self, node: Ref<DependencyNode>) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_recursive_for` and `read_files_in_dir_recursive` are never used
[INFO] [stdout]   --> src/filesystem.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl DirReader {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn new_recursive_for(dir: &str) -> DirReader {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn read_files_in_dir_recursive(&mut self, dir: &Path) -> io::Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `number_of_unbuilt_dependencies` and `is_built` are never read
[INFO] [stdout]  --> src/scheduler.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | struct TargetStatus {
[INFO] [stdout]   |        ------------ fields in this struct
[INFO] [stdout] 6 |     // Target can only be built when all dependencies have been built.
[INFO] [stdout] 7 |     number_of_unbuilt_dependencies: usize,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 8 |     is_built: bool,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `target_status_map` and `target_data_map` are never read
[INFO] [stdout]   --> src/scheduler.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Scheduler {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 20 |     // TODO, replace hashmap by something smarter because we know how many nodes there are.
[INFO] [stdout] 21 |     target_status_map: HashMap<Ref<DependencyNode>, TargetStatus>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     target_data_map: HashMap<Ref<DependencyNode>, TargetData>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WorkInstruction` is never used
[INFO] [stdout]  --> src/work_pool.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum WorkInstruction {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `job_id` and `result` are never read
[INFO] [stdout]   --> src/work_pool.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct WorkResult {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 23 |     job_id: usize,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 24 |     result: Result<String, String>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pool`, `channel_receiver`, `worker`, `results`, `next_job_id`, and `number_of_jobs_waiting` are never read
[INFO] [stdout]   --> src/work_pool.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct WorkPool {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 28 |     pool: ThreadPool,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 29 |     channel_receiver: Receiver<WorkResult>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     worker: Worker,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 31 |     results: Vec<WorkResult>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 32 |     next_job_id: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 33 |     number_of_jobs_waiting: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `schedule_work`, `get_result_blocking`, `get_next_result_blocking`, `fetch_results_from_queue`, and `wait_for_result_from_channel` are never used
[INFO] [stdout]    --> src/work_pool.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl WorkPool {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn schedule_work(&mut self, instruction: WorkInstruction) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn get_result_blocking(&mut self, job_id: usize) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn get_next_result_blocking(&mut self) -> Option<WorkResult> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     fn fetch_results_from_queue(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     fn wait_for_result_from_channel(&mut self) -> WorkResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `channel_sender` and `job_id` are never read
[INFO] [stdout]    --> src/work_pool.rs:117:5
[INFO] [stdout]     |
[INFO] [stdout] 116 | struct Worker {
[INFO] [stdout]     |        ------ fields in this struct
[INFO] [stdout] 117 |     channel_sender: Sender<WorkResult>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 118 |     job_id: usize,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Worker` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `execute_work`, `execute_compiler`, and `execute_linker` are never used
[INFO] [stdout]    --> src/work_pool.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 121 | impl Worker {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] 122 |     fn execute_work(self, instruction: WorkInstruction) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     fn execute_compiler(&self, source_file: String, include_dirs: Vec<String>, output_file: String) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     fn execute_linker(&self, object_files: Vec<String>, link_libraries: Vec<String>, output_file: String) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `GraphVisitor` is never used
[INFO] [stdout]  --> src/graph_walker.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub trait GraphVisitor {
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GraphWalker` is never constructed
[INFO] [stdout]   --> src/graph_walker.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GraphWalker<'a> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `walk`, and `visit` are never used
[INFO] [stdout]   --> src/graph_walker.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl GraphWalker<'_> {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new<'b>(graph: &'b mut DependencyGraph) -> GraphWalker<'b> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn walk(&mut self, root: Ref<DependencyNode>, visitor: &mut dyn GraphVisitor) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     fn visit(&self, node: Ref<DependencyNode>, visitor: &mut dyn GraphVisitor) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LibraryNodeCache` is never constructed
[INFO] [stdout]  --> src/builder.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct LibraryNodeCache {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Builder` is never constructed
[INFO] [stdout]   --> src/builder.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Builder<'a> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `reset` are never used
[INFO] [stdout]   --> src/builder.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Builder<'_> {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 22 |     pub fn new(build_dir: String, work_pool: &mut WorkPool) -> Builder {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn reset(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/builder.rs:22:46
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn new(build_dir: String, work_pool: &mut WorkPool) -> Builder {
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^     ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                              |
[INFO] [stdout]    |                                              the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn new(build_dir: String, work_pool: &mut WorkPool) -> Builder<'_> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `nix`
[INFO] [stderr]  --> Cargo.toml:7:15
[INFO] [stderr]   |
[INFO] [stderr] 7 | [dependencies.nix]
[INFO] [stderr]   |               ^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `nix`
[INFO] [stderr] warning: `beaver_build` (manifest) generated 1 warning
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.22s
[INFO] running `Command { std: "docker" "inspect" "efcb4094f390c825f86bcd314f8c0ae367089f8d4e167c3cb81542ef4fe5f489", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "efcb4094f390c825f86bcd314f8c0ae367089f8d4e167c3cb81542ef4fe5f489", kill_on_drop: false }`
[INFO] [stdout] efcb4094f390c825f86bcd314f8c0ae367089f8d4e167c3cb81542ef4fe5f489
