[INFO] cloning repository https://github.com/SMC242/http-server
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/SMC242/http-server" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSMC242%2Fhttp-server", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSMC242%2Fhttp-server'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e5f398a396ca73b4776f0627b1cf61f320f6c6c7
[INFO] checking SMC242/http-server against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSMC242%2Fhttp-server" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/SMC242/http-server
[INFO] finished tweaking git repo https://github.com/SMC242/http-server
[INFO] tweaked toml for git repo https://github.com/SMC242/http-server written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/SMC242/http-server 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/SMC242/http-server 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 `http_server` should have a kebab-case name
[INFO] [stderr]   |
[INFO] [stderr] 1 | /workspace/builds/worker-0-tc1/source/target/.../http_server
[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 `http-server`, convert `bin.name`
[INFO] [stderr]  --> Cargo.toml:3:8
[INFO] [stderr]   |
[INFO] [stderr] 3 - name = "http_server"
[INFO] [stderr] 3 + name = "http-server"
[INFO] [stderr]   |
[INFO] [stderr] warning: `http-server` (manifest) generated 1 warning
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rustls-webpki v0.103.6
[INFO] [stderr]   Downloaded env_logger v0.11.6
[INFO] [stderr]   Downloaded ctrlc v3.5.0
[INFO] [stderr]   Downloaded windows-sys v0.61.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 1c13a28c66a4a01e4be046023ebfae80a738a68fd767e2e986bf61d86b70d3d1
[INFO] running `Command { std: "docker" "start" "1c13a28c66a4a01e4be046023ebfae80a738a68fd767e2e986bf61d86b70d3d1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1c13a28c66a4a01e4be046023ebfae80a738a68fd767e2e986bf61d86b70d3d1", 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" "1c13a28c66a4a01e4be046023ebfae80a738a68fd767e2e986bf61d86b70d3d1" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1c13a28c66a4a01e4be046023ebfae80a738a68fd767e2e986bf61d86b70d3d1", 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" "1c13a28c66a4a01e4be046023ebfae80a738a68fd767e2e986bf61d86b70d3d1" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: binary `http_server` should have a kebab-case name
[INFO] [stderr]   |
[INFO] [stderr] 1 | /opt/rustwide/target/.../http_server
[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 `http-server`, convert `bin.name`
[INFO] [stderr]  --> Cargo.toml:3:8
[INFO] [stderr]   |
[INFO] [stderr] 3 - name = "http_server"
[INFO] [stderr] 3 + name = "http-server"
[INFO] [stderr]   |
[INFO] [stderr] warning: `http-server` (manifest) generated 1 warning
[INFO] [stderr]     Checking cfg-if v1.0.3
[INFO] [stderr]    Compiling libc v0.2.176
[INFO] [stderr]    Compiling proc-macro2 v1.0.94
[INFO] [stderr]    Compiling find-msvc-tools v0.1.2
[INFO] [stderr]     Checking log v0.4.26
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]     Checking rustls-pki-types v1.12.0
[INFO] [stderr]     Checking bitflags v2.9.4
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling rustls v0.23.32
[INFO] [stderr]     Checking anstream v0.6.18
[INFO] [stderr]     Checking humantime v2.1.0
[INFO] [stderr]     Checking once_cell v1.20.3
[INFO] [stderr]     Checking crc32fast v1.5.0
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]    Compiling cc v1.2.39
[INFO] [stderr]     Checking webpki-roots v1.0.2
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking ureq-proto v0.5.2
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling syn v2.0.100
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking ctrlc v3.5.0
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking env_filter v0.1.3
[INFO] [stderr]     Checking env_logger v0.11.6
[INFO] [stderr]     Checking rustls-webpki v0.103.6
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking ureq v3.1.2
[INFO] [stderr]     Checking http-server v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Response` and `self`
[INFO] [stdout]   --> src/_crud_example.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |         self,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 11 |         handlers::{Handler, HandlerPath, HandlerResult},
[INFO] [stdout] 12 |         response::{Response, ResponseBuilder, ResponseStatus},
[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 imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/request/http1_1/body.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 |     sync::{Arc, Mutex},
[INFO] [stdout]   |            ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `server::response::Response`
[INFO] [stdout]  --> src/request/types.rs:2:51
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::{request::content_type::MimeParseInfo, server::response::Response};
[INFO] [stdout]   |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sync::Arc`
[INFO] [stdout]  --> src/request/types.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     sync::Arc,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]  --> src/server/handlers.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/server/handlers.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::char::ToUppercase`
[INFO] [stdout]  --> src/server/response.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::char::ToUppercase;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `encoding`
[INFO] [stdout]   --> src/request/http1_1/body.rs:13:20
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn decode_body(encoding: &[ContentEncoding], body: Vec<u8>) -> Result<String, &'static str> {
[INFO] [stdout]    |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_encoding`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/request/mod.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn from_str(s: &str) -> Result<Self, Self::Err> {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `HandlerRegistryKey` is more private than the item `HandlerRegistryAddError::DuplicateKey::0`
[INFO] [stdout]    --> src/server/handlers.rs:115:18
[INFO] [stdout]     |
[INFO] [stdout] 115 |     DuplicateKey(HandlerRegistryKey),
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ field `HandlerRegistryAddError::DuplicateKey::0` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `HandlerRegistryKey` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/server/handlers.rs:79:1
[INFO] [stdout]     |
[INFO] [stdout]  79 | struct HandlerRegistryKey(String);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SynchronisedQueue<ThreadPoolMessage<I>>` is more private than the item `ThreadPool::spawn_all`
[INFO] [stdout]    --> src/server/request_queue.rs:45:5
[INFO] [stdout]     |
[INFO] [stdout]  45 | /     fn spawn_all<F>(
[INFO] [stdout]  46 | |         &mut self,
[INFO] [stdout]  47 | |         callback: F,
[INFO] [stdout]  48 | |         work: Arc<SynchronisedQueue<ThreadPoolMessage<I>>>,
[INFO] [stdout] ...   |
[INFO] [stdout]  51 | |     where
[INFO] [stdout]  52 | |         F: Fn(I) + Send + Sync + Clone + 'static,
[INFO] [stdout]     | |_________________________________________________^ method `ThreadPool::spawn_all` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `SynchronisedQueue<ThreadPoolMessage<I>>` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/server/request_queue.rs:164:1
[INFO] [stdout]     |
[INFO] [stdout] 164 | struct SynchronisedQueue<T: Send> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ThreadPoolMessage<I>` is more private than the item `ThreadPool::spawn_all`
[INFO] [stdout]   --> src/server/request_queue.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | /     fn spawn_all<F>(
[INFO] [stdout] 46 | |         &mut self,
[INFO] [stdout] 47 | |         callback: F,
[INFO] [stdout] 48 | |         work: Arc<SynchronisedQueue<ThreadPoolMessage<I>>>,
[INFO] [stdout] ...  |
[INFO] [stdout] 51 | |     where
[INFO] [stdout] 52 | |         F: Fn(I) + Send + Sync + Clone + 'static,
[INFO] [stdout]    | |_________________________________________________^ method `ThreadPool::spawn_all` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ThreadPoolMessage<I>` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/server/request_queue.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | enum ThreadPoolMessage<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mock_stream` is never used
[INFO] [stdout]   --> src/request/http1_1/body.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn mock_stream(content: &'static str) -> Box<BufReader<Cursor<Vec<u8>>>> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timeout` is never read
[INFO] [stdout]   --> src/server/request_queue.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RequestQueueOptions {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 16 |     n_threads: usize,
[INFO] [stdout] 17 |     timeout: Duration,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `len`, and `is_empty` are never used
[INFO] [stdout]    --> src/server/request_queue.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | impl<T: Send> SynchronisedQueue<T> {
[INFO] [stdout]     | ---------------------------------- associated items in this implementation
[INFO] [stdout] 170 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Response` and `self`
[INFO] [stdout]   --> src/_crud_example.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |         self,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 11 |         handlers::{Handler, HandlerPath, HandlerResult},
[INFO] [stdout] 12 |         response::{Response, ResponseBuilder, ResponseStatus},
[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 imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/request/http1_1/body.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 |     sync::{Arc, Mutex},
[INFO] [stdout]   |            ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `server::response::Response`
[INFO] [stdout]  --> src/request/types.rs:2:51
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::{request::content_type::MimeParseInfo, server::response::Response};
[INFO] [stdout]   |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sync::Arc`
[INFO] [stdout]  --> src/request/types.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     sync::Arc,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]  --> src/server/handlers.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/server/handlers.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::char::ToUppercase`
[INFO] [stdout]  --> src/server/response.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::char::ToUppercase;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `encoding`
[INFO] [stdout]   --> src/request/http1_1/body.rs:13:20
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn decode_body(encoding: &[ContentEncoding], body: Vec<u8>) -> Result<String, &'static str> {
[INFO] [stdout]    |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_encoding`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/request/mod.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn from_str(s: &str) -> Result<Self, Self::Err> {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `HandlerRegistryKey` is more private than the item `HandlerRegistryAddError::DuplicateKey::0`
[INFO] [stdout]    --> src/server/handlers.rs:115:18
[INFO] [stdout]     |
[INFO] [stdout] 115 |     DuplicateKey(HandlerRegistryKey),
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ field `HandlerRegistryAddError::DuplicateKey::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `HandlerRegistryKey` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/server/handlers.rs:79:1
[INFO] [stdout]     |
[INFO] [stdout]  79 | struct HandlerRegistryKey(String);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SynchronisedQueue<ThreadPoolMessage<I>>` is more private than the item `ThreadPool::spawn_all`
[INFO] [stdout]    --> src/server/request_queue.rs:45:5
[INFO] [stdout]     |
[INFO] [stdout]  45 | /     fn spawn_all<F>(
[INFO] [stdout]  46 | |         &mut self,
[INFO] [stdout]  47 | |         callback: F,
[INFO] [stdout]  48 | |         work: Arc<SynchronisedQueue<ThreadPoolMessage<I>>>,
[INFO] [stdout] ...   |
[INFO] [stdout]  51 | |     where
[INFO] [stdout]  52 | |         F: Fn(I) + Send + Sync + Clone + 'static,
[INFO] [stdout]     | |_________________________________________________^ method `ThreadPool::spawn_all` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `SynchronisedQueue<ThreadPoolMessage<I>>` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/server/request_queue.rs:164:1
[INFO] [stdout]     |
[INFO] [stdout] 164 | struct SynchronisedQueue<T: Send> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ThreadPoolMessage<I>` is more private than the item `ThreadPool::spawn_all`
[INFO] [stdout]   --> src/server/request_queue.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | /     fn spawn_all<F>(
[INFO] [stdout] 46 | |         &mut self,
[INFO] [stdout] 47 | |         callback: F,
[INFO] [stdout] 48 | |         work: Arc<SynchronisedQueue<ThreadPoolMessage<I>>>,
[INFO] [stdout] ...  |
[INFO] [stdout] 51 | |     where
[INFO] [stdout] 52 | |         F: Fn(I) + Send + Sync + Clone + 'static,
[INFO] [stdout]    | |_________________________________________________^ method `ThreadPool::spawn_all` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ThreadPoolMessage<I>` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/server/request_queue.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | enum ThreadPoolMessage<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Message` is never constructed
[INFO] [stdout]   --> src/mime.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum MainMimeType {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 18 |     Message,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MainMimeType` has a derived impl for the trait `Debug`, but this is 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: variant `MJS` is never constructed
[INFO] [stdout]   --> src/mime.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum SubMimeType {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 54 |     MJS,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SubMimeType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `should_read_body` is never used
[INFO] [stdout]   --> src/request/mod.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl RequestHead {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 19 |     pub fn should_read_body(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `boundary` and `charset` are never read
[INFO] [stdout]   --> src/request/headers/content_type.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct MimeParseInfo {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 16 |     pub length: u64,
[INFO] [stdout] 17 |     pub boundary: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 18 |     pub content_type: MimeType,
[INFO] [stdout] 19 |     pub charset: Option<String>, // TODO: Handle decoding downstream with encoding_rs
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MimeParseInfo` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mock_stream` is never used
[INFO] [stdout]   --> src/request/http1_1/body.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn mock_stream(content: &'static str) -> Box<BufReader<Cursor<Vec<u8>>>> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `RequestBody` is never used
[INFO] [stdout]   --> src/request/types.rs:46:10
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub type RequestBody = Option<String>;
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `V2` and `V3` are never constructed
[INFO] [stdout]   --> src/request/types.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub enum HTTPVersion {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 72 |     V2,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 73 |     V3,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HTTPVersion` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Quic` is never constructed
[INFO] [stdout]   --> src/request/types.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub enum SyncableStreamType {
[INFO] [stdout]    |          ------------------ variant in this enum
[INFO] [stdout] 78 |     Tcp,
[INFO] [stdout] 79 |     Quic,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncableStreamType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `text` is never used
[INFO] [stdout]   --> src/request/types.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub trait BodyReader {
[INFO] [stdout]    |           ---------- method in this trait
[INFO] [stdout] 87 |     fn text(&mut self, mime_info: &MimeParseInfo) -> Result<String, String>;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_body_text` is never used
[INFO] [stdout]    --> src/request/types.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 204 | impl Request {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn read_body_text(&mut self) -> Result<String, RequestParseError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `HandlerCallback` is never used
[INFO] [stdout]   --> src/server/handlers.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub type HandlerCallback = Box<dyn FnMut(Request) -> Response>;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Continue` is never constructed
[INFO] [stdout]   --> src/server/handlers.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub enum HandlerResult {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] 62 |     Done(Response),
[INFO] [stdout] 63 |     Continue(Request),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `HandlerRegistryAddError` is never used
[INFO] [stdout]    --> src/server/handlers.rs:114:10
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub enum HandlerRegistryAddError {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_status_code` is never used
[INFO] [stdout]    --> src/server/handlers.rs:146:8
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub trait DispatcherError {
[INFO] [stdout]     |           --------------- method in this trait
[INFO] [stdout] 146 |     fn as_status_code(&self) -> ResponseStatus;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add` is never used
[INFO] [stdout]    --> src/server/handlers.rs:153:8
[INFO] [stdout]     |
[INFO] [stdout] 150 | pub trait RequestDispatcher {
[INFO] [stdout]     |           ----------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 153 |     fn add(&mut self, handler: Arc<SyncableHandler>) -> Result<(), HandlerRegistryAddError>;
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/server/listener.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl ListenerConfig {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 62 |     pub fn new(timeout: Option<std::time::Duration>, is_test: bool) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `shutdown` is never used
[INFO] [stdout]    --> src/server/listener.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl HTTPListener {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn shutdown(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timeout` is never read
[INFO] [stdout]   --> src/server/request_queue.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RequestQueueOptions {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 16 |     n_threads: usize,
[INFO] [stdout] 17 |     timeout: Duration,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `len`, and `is_empty` are never used
[INFO] [stdout]    --> src/server/request_queue.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | impl<T: Send> SynchronisedQueue<T> {
[INFO] [stdout]     | ---------------------------------- associated items in this implementation
[INFO] [stdout] 170 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/server/response.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum ResponseStatus {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 13 |     Continue,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 14 |     SwitchingProtocols,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |     Processing,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 16 |     EarlyHints,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     Accepted,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 20 |     NonAuthoritativeInformation,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     NoContent,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 22 |     ResetContent,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 23 |     PartialContent,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     MultiStatus,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 25 |     AlreadyReported,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     IMUsed,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 27 |     MultipleChoices,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 28 |     MovedPermanently,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 29 |     Found,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 30 |     SeeOther,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 31 |     NotModified,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 32 |     UseProxy,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 33 |     Unused,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 34 |     TemporaryRedirect,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 35 |     PermanentRedirect,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     BadRequest,
[INFO] [stdout] 37 |     Unauthorized,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 38 |     PaymentRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 39 |     Forbidden,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 40 |     NotFound,
[INFO] [stdout] 41 |     MethodNotAllowed,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 42 |     NotAcceptable,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 43 |     ProxyAuthenticationRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 44 |     RequestTimeout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 45 |     Conflict,
[INFO] [stdout] 46 |     Gone,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 47 |     LengthRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     PreconditionFailed,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 49 |     ContentTooLarge,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     URITooLong,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 51 |     UnsupportedMediaType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 52 |     RangeNotSatisfiable,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     ExpectationFailed,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 54 |     Imateapot,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 55 |     MisdirectedRequest,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 56 |     UnprocessableContent,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 57 |     Locked,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 58 |     FailedDependency,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 59 |     TooEarly,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 60 |     UpgradeRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     PreconditionRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 62 |     TooManyRequests,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 63 |     RequestHeaderFieldsTooLarge,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     UnavailableForLegalReasons,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 65 |     InternalServerError,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     NotImplemented,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     BadGateway,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 68 |     ServiceUnavailable,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 69 |     GatewayTimeout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     HTTPVersionNotSupported,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 71 |     VariantAlsoNegotiates,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     InsufficientStorage,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     LoopDetected,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 74 |     NotExtended,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 75 |     NetworkAuthenticationRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     NonStandard(u16, String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ResponseStatus` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_ok` is never used
[INFO] [stdout]    --> src/server/response.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl ResponseStatus {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] 116 |     // Use https://stackoverflow.com/a/28029279
[INFO] [stdout] 117 |     pub fn is_ok(&self) -> bool {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `header`, `unauthorised`, and `internal_error` are never used
[INFO] [stdout]    --> src/server/response.rs:259:12
[INFO] [stdout]     |
[INFO] [stdout] 213 | impl ResponseBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn header(mut self, key: &str, value: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn unauthorised(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn internal_error(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `status`, `headers`, `body`, and `extend_headers` are never used
[INFO] [stdout]    --> src/server/response.rs:350:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl Response {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub fn status(&self) -> &ResponseStatus {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn headers(&self) -> &HTTPHeaders {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 358 |     pub fn body(&self) -> &str {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     pub fn extend_headers(&mut self, headers: impl Iterator<Item = (String, String)>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::panic`
[INFO] [stdout]  --> tests/rest.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::panic;
[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: `JoinHandle`
[INFO] [stdout]  --> tests/rest.rs:5:25
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::thread::{self, JoinHandle};
[INFO] [stdout]   |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Response` and `self`
[INFO] [stdout]   --> src/_crud_example.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |         self,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 11 |         handlers::{Handler, HandlerPath, HandlerResult},
[INFO] [stdout] 12 |         response::{Response, ResponseBuilder, ResponseStatus},
[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 imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/request/http1_1/body.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 |     sync::{Arc, Mutex},
[INFO] [stdout]   |            ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `server::response::Response`
[INFO] [stdout]  --> src/request/types.rs:2:51
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::{request::content_type::MimeParseInfo, server::response::Response};
[INFO] [stdout]   |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sync::Arc`
[INFO] [stdout]  --> src/request/types.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     sync::Arc,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]  --> src/server/handlers.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/server/handlers.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::char::ToUppercase`
[INFO] [stdout]  --> src/server/response.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::char::ToUppercase;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Response` and `self`
[INFO] [stdout]   --> src/_crud_example.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |         self,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 11 |         handlers::{Handler, HandlerPath, HandlerResult},
[INFO] [stdout] 12 |         response::{Response, ResponseBuilder, ResponseStatus},
[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 imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/request/http1_1/body.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 |     sync::{Arc, Mutex},
[INFO] [stdout]   |            ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `server::response::Response`
[INFO] [stdout]  --> src/request/types.rs:2:51
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::{request::content_type::MimeParseInfo, server::response::Response};
[INFO] [stdout]   |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sync::Arc`
[INFO] [stdout]  --> src/request/types.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     sync::Arc,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]  --> src/server/handlers.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/server/handlers.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::char::ToUppercase`
[INFO] [stdout]  --> src/server/response.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::char::ToUppercase;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `encoding`
[INFO] [stdout]   --> src/request/http1_1/body.rs:13:20
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn decode_body(encoding: &[ContentEncoding], body: Vec<u8>) -> Result<String, &'static str> {
[INFO] [stdout]    |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_encoding`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `encoding`
[INFO] [stdout]   --> src/request/http1_1/body.rs:13:20
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn decode_body(encoding: &[ContentEncoding], body: Vec<u8>) -> Result<String, &'static str> {
[INFO] [stdout]    |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_encoding`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/request/mod.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn from_str(s: &str) -> Result<Self, Self::Err> {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/request/mod.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn from_str(s: &str) -> Result<Self, Self::Err> {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `HandlerRegistryKey` is more private than the item `HandlerRegistryAddError::DuplicateKey::0`
[INFO] [stdout]    --> src/server/handlers.rs:115:18
[INFO] [stdout]     |
[INFO] [stdout] 115 |     DuplicateKey(HandlerRegistryKey),
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ field `HandlerRegistryAddError::DuplicateKey::0` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `HandlerRegistryKey` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/server/handlers.rs:79:1
[INFO] [stdout]     |
[INFO] [stdout]  79 | struct HandlerRegistryKey(String);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SynchronisedQueue<ThreadPoolMessage<I>>` is more private than the item `ThreadPool::spawn_all`
[INFO] [stdout]    --> src/server/request_queue.rs:45:5
[INFO] [stdout]     |
[INFO] [stdout]  45 | /     fn spawn_all<F>(
[INFO] [stdout]  46 | |         &mut self,
[INFO] [stdout]  47 | |         callback: F,
[INFO] [stdout]  48 | |         work: Arc<SynchronisedQueue<ThreadPoolMessage<I>>>,
[INFO] [stdout] ...   |
[INFO] [stdout]  51 | |     where
[INFO] [stdout]  52 | |         F: Fn(I) + Send + Sync + Clone + 'static,
[INFO] [stdout]     | |_________________________________________________^ method `ThreadPool::spawn_all` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `SynchronisedQueue<ThreadPoolMessage<I>>` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/server/request_queue.rs:164:1
[INFO] [stdout]     |
[INFO] [stdout] 164 | struct SynchronisedQueue<T: Send> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ThreadPoolMessage<I>` is more private than the item `ThreadPool::spawn_all`
[INFO] [stdout]   --> src/server/request_queue.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | /     fn spawn_all<F>(
[INFO] [stdout] 46 | |         &mut self,
[INFO] [stdout] 47 | |         callback: F,
[INFO] [stdout] 48 | |         work: Arc<SynchronisedQueue<ThreadPoolMessage<I>>>,
[INFO] [stdout] ...  |
[INFO] [stdout] 51 | |     where
[INFO] [stdout] 52 | |         F: Fn(I) + Send + Sync + Clone + 'static,
[INFO] [stdout]    | |_________________________________________________^ method `ThreadPool::spawn_all` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ThreadPoolMessage<I>` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/server/request_queue.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | enum ThreadPoolMessage<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timeout` is never read
[INFO] [stdout]   --> src/server/request_queue.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RequestQueueOptions {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 16 |     n_threads: usize,
[INFO] [stdout] 17 |     timeout: Duration,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `len`, and `is_empty` are never used
[INFO] [stdout]    --> src/server/request_queue.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | impl<T: Send> SynchronisedQueue<T> {
[INFO] [stdout]     | ---------------------------------- associated items in this implementation
[INFO] [stdout] 170 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `HandlerRegistryKey` is more private than the item `HandlerRegistryAddError::DuplicateKey::0`
[INFO] [stdout]    --> src/server/handlers.rs:115:18
[INFO] [stdout]     |
[INFO] [stdout] 115 |     DuplicateKey(HandlerRegistryKey),
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ field `HandlerRegistryAddError::DuplicateKey::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `HandlerRegistryKey` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/server/handlers.rs:79:1
[INFO] [stdout]     |
[INFO] [stdout]  79 | struct HandlerRegistryKey(String);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SynchronisedQueue<ThreadPoolMessage<I>>` is more private than the item `ThreadPool::spawn_all`
[INFO] [stdout]    --> src/server/request_queue.rs:45:5
[INFO] [stdout]     |
[INFO] [stdout]  45 | /     fn spawn_all<F>(
[INFO] [stdout]  46 | |         &mut self,
[INFO] [stdout]  47 | |         callback: F,
[INFO] [stdout]  48 | |         work: Arc<SynchronisedQueue<ThreadPoolMessage<I>>>,
[INFO] [stdout] ...   |
[INFO] [stdout]  51 | |     where
[INFO] [stdout]  52 | |         F: Fn(I) + Send + Sync + Clone + 'static,
[INFO] [stdout]     | |_________________________________________________^ method `ThreadPool::spawn_all` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `SynchronisedQueue<ThreadPoolMessage<I>>` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/server/request_queue.rs:164:1
[INFO] [stdout]     |
[INFO] [stdout] 164 | struct SynchronisedQueue<T: Send> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ThreadPoolMessage<I>` is more private than the item `ThreadPool::spawn_all`
[INFO] [stdout]   --> src/server/request_queue.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | /     fn spawn_all<F>(
[INFO] [stdout] 46 | |         &mut self,
[INFO] [stdout] 47 | |         callback: F,
[INFO] [stdout] 48 | |         work: Arc<SynchronisedQueue<ThreadPoolMessage<I>>>,
[INFO] [stdout] ...  |
[INFO] [stdout] 51 | |     where
[INFO] [stdout] 52 | |         F: Fn(I) + Send + Sync + Clone + 'static,
[INFO] [stdout]    | |_________________________________________________^ method `ThreadPool::spawn_all` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ThreadPoolMessage<I>` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/server/request_queue.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | enum ThreadPoolMessage<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Message` is never constructed
[INFO] [stdout]   --> src/mime.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum MainMimeType {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 18 |     Message,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MainMimeType` has a derived impl for the trait `Debug`, but this is 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: variant `MJS` is never constructed
[INFO] [stdout]   --> src/mime.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum SubMimeType {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 54 |     MJS,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SubMimeType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `should_read_body` is never used
[INFO] [stdout]   --> src/request/mod.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl RequestHead {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 19 |     pub fn should_read_body(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `RequestBody` is never used
[INFO] [stdout]   --> src/request/types.rs:46:10
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub type RequestBody = Option<String>;
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `V2` and `V3` are never constructed
[INFO] [stdout]   --> src/request/types.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub enum HTTPVersion {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 72 |     V2,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 73 |     V3,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HTTPVersion` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Quic` is never constructed
[INFO] [stdout]   --> src/request/types.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub enum SyncableStreamType {
[INFO] [stdout]    |          ------------------ variant in this enum
[INFO] [stdout] 78 |     Tcp,
[INFO] [stdout] 79 |     Quic,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncableStreamType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_body_text` is never used
[INFO] [stdout]    --> src/request/types.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 204 | impl Request {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn read_body_text(&mut self) -> Result<String, RequestParseError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `HandlerCallback` is never used
[INFO] [stdout]   --> src/server/handlers.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub type HandlerCallback = Box<dyn FnMut(Request) -> Response>;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Continue` is never constructed
[INFO] [stdout]   --> src/server/handlers.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub enum HandlerResult {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] 62 |     Done(Response),
[INFO] [stdout] 63 |     Continue(Request),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/server/handlers.rs:115:18
[INFO] [stdout]     |
[INFO] [stdout] 115 |     DuplicateKey(HandlerRegistryKey),
[INFO] [stdout]     |     ------------ ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `HandlerRegistryAddError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 115 -     DuplicateKey(HandlerRegistryKey),
[INFO] [stdout] 115 +     DuplicateKey(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/server/handlers.rs:116:23
[INFO] [stdout]     |
[INFO] [stdout] 116 |     UnhandlableMethod(HTTPMethod),
[INFO] [stdout]     |     ----------------- ^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `HandlerRegistryAddError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 116 -     UnhandlableMethod(HTTPMethod),
[INFO] [stdout] 116 +     UnhandlableMethod(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_status_code` is never used
[INFO] [stdout]    --> src/server/handlers.rs:146:8
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub trait DispatcherError {
[INFO] [stdout]     |           --------------- method in this trait
[INFO] [stdout] 146 |     fn as_status_code(&self) -> ResponseStatus;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/server/listener.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl ListenerConfig {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 62 |     pub fn new(timeout: Option<std::time::Duration>, is_test: bool) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `shutdown` is never used
[INFO] [stdout]    --> src/server/listener.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl HTTPListener {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn shutdown(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timeout` is never read
[INFO] [stdout]   --> src/server/request_queue.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RequestQueueOptions {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 16 |     n_threads: usize,
[INFO] [stdout] 17 |     timeout: Duration,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `len`, and `is_empty` are never used
[INFO] [stdout]    --> src/server/request_queue.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | impl<T: Send> SynchronisedQueue<T> {
[INFO] [stdout]     | ---------------------------------- associated items in this implementation
[INFO] [stdout] 170 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/server/response.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum ResponseStatus {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 13 |     Continue,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 14 |     SwitchingProtocols,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |     Processing,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 16 |     EarlyHints,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     Accepted,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 20 |     NonAuthoritativeInformation,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     NoContent,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 22 |     ResetContent,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 23 |     PartialContent,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     MultiStatus,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 25 |     AlreadyReported,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     IMUsed,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 27 |     MultipleChoices,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 28 |     MovedPermanently,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 29 |     Found,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 30 |     SeeOther,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 31 |     NotModified,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 32 |     UseProxy,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 33 |     Unused,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 34 |     TemporaryRedirect,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 35 |     PermanentRedirect,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     BadRequest,
[INFO] [stdout] 37 |     Unauthorized,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 38 |     PaymentRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 39 |     Forbidden,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 40 |     NotFound,
[INFO] [stdout] 41 |     MethodNotAllowed,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 42 |     NotAcceptable,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 43 |     ProxyAuthenticationRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 44 |     RequestTimeout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 45 |     Conflict,
[INFO] [stdout] 46 |     Gone,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 47 |     LengthRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     PreconditionFailed,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 49 |     ContentTooLarge,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     URITooLong,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 51 |     UnsupportedMediaType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 52 |     RangeNotSatisfiable,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     ExpectationFailed,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 54 |     Imateapot,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 55 |     MisdirectedRequest,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 56 |     UnprocessableContent,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 57 |     Locked,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 58 |     FailedDependency,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 59 |     TooEarly,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 60 |     UpgradeRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     PreconditionRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 62 |     TooManyRequests,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 63 |     RequestHeaderFieldsTooLarge,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     UnavailableForLegalReasons,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 65 |     InternalServerError,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     NotImplemented,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     BadGateway,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 68 |     ServiceUnavailable,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 69 |     GatewayTimeout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     HTTPVersionNotSupported,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 71 |     VariantAlsoNegotiates,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     InsufficientStorage,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     LoopDetected,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 74 |     NotExtended,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 75 |     NetworkAuthenticationRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     NonStandard(u16, String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ResponseStatus` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_ok` is never used
[INFO] [stdout]    --> src/server/response.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl ResponseStatus {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] 116 |     // Use https://stackoverflow.com/a/28029279
[INFO] [stdout] 117 |     pub fn is_ok(&self) -> bool {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `unauthorised` and `internal_error` are never used
[INFO] [stdout]    --> src/server/response.rs:278:12
[INFO] [stdout]     |
[INFO] [stdout] 213 | impl ResponseBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn unauthorised(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn internal_error(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `status`, `headers`, `body`, and `extend_headers` are never used
[INFO] [stdout]    --> src/server/response.rs:350:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | impl Response {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub fn status(&self) -> &ResponseStatus {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn headers(&self) -> &HTTPHeaders {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 358 |     pub fn body(&self) -> &str {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     pub fn extend_headers(&mut self, headers: impl Iterator<Item = (String, String)>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.50s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.30.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3`
[INFO] running `Command { std: "docker" "inspect" "1c13a28c66a4a01e4be046023ebfae80a738a68fd767e2e986bf61d86b70d3d1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1c13a28c66a4a01e4be046023ebfae80a738a68fd767e2e986bf61d86b70d3d1", kill_on_drop: false }`
[INFO] [stdout] 1c13a28c66a4a01e4be046023ebfae80a738a68fd767e2e986bf61d86b70d3d1
