[INFO] cloning repository https://github.com/LEDMann/dissertation-product
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/LEDMann/dissertation-product" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLEDMann%2Fdissertation-product", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLEDMann%2Fdissertation-product'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] bd5194fb6b82332e2d7677c3f2c8ecbf4d26078f
[INFO] checking LEDMann/dissertation-product against try#e983148bd5f0f0db270bfb72149f5e892e68b67f for pr-150322
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLEDMann%2Fdissertation-product" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/LEDMann/dissertation-product
[INFO] finished tweaking git repo https://github.com/LEDMann/dissertation-product
[INFO] tweaked toml for git repo https://github.com/LEDMann/dissertation-product written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/LEDMann/dissertation-product on toolchain e983148bd5f0f0db270bfb72149f5e892e68b67f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e983148bd5f0f0db270bfb72149f5e892e68b67f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/LEDMann/dissertation-product 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" "+e983148bd5f0f0db270bfb72149f5e892e68b67f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[INFO] checking LEDMann/dissertation-product against try#e983148bd5f0f0db270bfb72149f5e892e68b67f for pr-150322
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLEDMann%2Fdissertation-product" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/LEDMann/dissertation-product
[INFO] finished tweaking git repo https://github.com/LEDMann/dissertation-product
[INFO] tweaked toml for git repo https://github.com/LEDMann/dissertation-product written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/LEDMann/dissertation-product on toolchain e983148bd5f0f0db270bfb72149f5e892e68b67f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e983148bd5f0f0db270bfb72149f5e892e68b67f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/LEDMann/dissertation-product 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" "+e983148bd5f0f0db270bfb72149f5e892e68b67f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[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 attribute-derive-macro v0.6.1
[INFO] [stderr]   Downloaded serde_derive v1.0.198
[INFO] [stderr]   Downloaded quote-use v0.7.2
[INFO] [stderr]   Downloaded get-size v0.1.4
[INFO] [stderr]   Downloaded attribute-derive v0.6.1
[INFO] [stderr]   Downloaded get-size-derive v0.1.3
[INFO] [stderr]   Downloaded quote-use-macros v0.7.2
[INFO] [stderr]   Downloaded proc-macro-utils v0.8.0
[INFO] [stderr]   Downloaded serde_json v1.0.116
[INFO] [stderr]   Downloaded serde v1.0.198
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+e983148bd5f0f0db270bfb72149f5e892e68b67f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1bcdaa48a646fbc6039dfb625db01e48d637d00981941d83719af8dd24d8a9fe
[INFO] running `Command { std: "docker" "start" "-a" "1bcdaa48a646fbc6039dfb625db01e48d637d00981941d83719af8dd24d8a9fe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1bcdaa48a646fbc6039dfb625db01e48d637d00981941d83719af8dd24d8a9fe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1bcdaa48a646fbc6039dfb625db01e48d637d00981941d83719af8dd24d8a9fe", kill_on_drop: false }`
[INFO] [stdout] 1bcdaa48a646fbc6039dfb625db01e48d637d00981941d83719af8dd24d8a9fe
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+e983148bd5f0f0db270bfb72149f5e892e68b67f" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6b28ee0f7df72599b2e33ff2c74662d0250a72a5944cc582e249e4f51f2499e7
[INFO] running `Command { std: "docker" "start" "-a" "6b28ee0f7df72599b2e33ff2c74662d0250a72a5944cc582e249e4f51f2499e7", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]    Compiling proc-macro2 v1.0.81
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling smallvec v1.13.2
[INFO] [stderr]    Compiling serde v1.0.198
[INFO] [stderr]    Compiling collection_literals v1.0.1
[INFO] [stderr]    Compiling interpolator v0.5.0
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking memchr v2.7.2
[INFO] [stderr]     Checking regex-syntax v0.8.3
[INFO] [stderr]    Compiling serde_json v1.0.116
[INFO] [stderr]     Checking unicode-ident v1.0.12
[INFO] [stderr]     Checking either v1.11.0
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]    Compiling syn v2.0.60
[INFO] [stderr]    Compiling proc-macro-utils v0.8.0
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]     Checking regex-automata v0.4.6
[INFO] [stderr]     Checking regex v1.10.4
[INFO] [stderr]    Compiling derive-where v1.2.7
[INFO] [stderr]    Compiling serde_derive v1.0.198
[INFO] [stderr]    Compiling quote-use-macros v0.7.2
[INFO] [stderr]    Compiling quote-use v0.7.2
[INFO] [stderr]    Compiling attribute-derive-macro v0.6.1
[INFO] [stderr]    Compiling attribute-derive v0.6.1
[INFO] [stderr]    Compiling get-size-derive v0.1.3
[INFO] [stderr]     Checking get-size v0.1.4
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking obj_db v0.1.0 (/opt/rustwide/workdir/obj_db)
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]  --> obj_db/src/lib.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use regex::Regex;
[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: `BufRead`, `BufReader`, `BufWriter`, `File`, `Read`, `Write`, `borrow::BorrowMut`, `create_dir`, `env`, `fs`, `ops::Deref`, `path::Path`, `self`, and `vec`
[INFO] [stdout]   --> obj_db/src/lib.rs:3:5
[INFO] [stdout]    |
[INFO] [stdout]  3 |     borrow::BorrowMut, 
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]  4 |     vec, 
[INFO] [stdout]    |     ^^^
[INFO] [stdout]  5 |     env, 
[INFO] [stdout]    |     ^^^
[INFO] [stdout]  6 |     fs, 
[INFO] [stdout]    |     ^^
[INFO] [stdout]  7 |     ops::Deref, 
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]  8 |     path::Path, 
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]  9 |     fs::{
[INFO] [stdout] 10 |         create_dir, 
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 11 |         File
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 12 |     }, 
[INFO] [stdout] 13 |     io::{self, 
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 14 |         BufRead, 
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 15 |         BufReader, 
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 16 |         BufWriter, 
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 17 |         Read, 
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 18 |         Write
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MutexGuard`, `borrow::Borrow`, `collections::HashMap`, `ops::Deref`, and `path::Path`
[INFO] [stdout]  --> obj_db/src/database.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | ...::{borrow::Borrow, collections::HashMap, env, fs::{self, File}, io::{Read, Write}, ops::Deref, path::Path, sync::{Arc, Mutex, MutexGuard}};
[INFO] [stdout]   |       ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^                                            ^^^^^^^^^^  ^^^^^^^^^^                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufRead`
[INFO] [stdout]  --> obj_db/src/database/part.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::BufRead;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufReader`
[INFO] [stdout]  --> obj_db/src/database/part.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::BufReader;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Seek`
[INFO] [stdout]  --> obj_db/src/database/part.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::Seek;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `default`
[INFO] [stdout]  --> obj_db/src/database/cell.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{default, fmt::Display};
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::cell::CellValue`
[INFO] [stdout]  --> obj_db/src/database/record.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use super::cell::CellValue;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `collections::HashMap`, `iter::Map`, `ops::Deref`, `path::Path`, and `ptr::null`
[INFO] [stdout]  --> obj_db/src/database/table.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, env, fs::{self, File}, io::{Read, Write}, iter::Map, ops::Deref, path::Path, ptr::null};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^                                            ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CellValue`
[INFO] [stdout]  --> obj_db/src/database/table.rs:4:32
[INFO] [stdout]   |
[INFO] [stdout] 4 | use super::{cell::{self, Cell, CellValue}, conditional, part, record};
[INFO] [stdout]   |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_size::GetSize`
[INFO] [stdout]  --> obj_db/src/database/table.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use get_size::GetSize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Value` and `json`
[INFO] [stdout]  --> obj_db/src/database/table.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde_json::{Value, json};
[INFO] [stdout]   |                  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> obj_db/src/database.rs:126:36
[INFO] [stdout]     |
[INFO] [stdout] 126 |                 None => return Err(("unable to parse path as str".to_string()))
[INFO] [stdout]     |                                    ^                                         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 126 -                 None => return Err(("unable to parse path as str".to_string()))
[INFO] [stdout] 126 +                 None => return Err("unable to parse path as str".to_string() )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> obj_db/src/database.rs:128:34
[INFO] [stdout]     |
[INFO] [stdout] 128 |             Err(e) => return Err((["unable to find current directory\n".to_string(), e.to_string()].concat())),
[INFO] [stdout]     |                                  ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 128 -             Err(e) => return Err((["unable to find current directory\n".to_string(), e.to_string()].concat())),
[INFO] [stdout] 128 +             Err(e) => return Err(["unable to find current directory\n".to_string(), e.to_string()].concat() ),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> obj_db/src/database.rs:137:34
[INFO] [stdout]     |
[INFO] [stdout] 137 |             Err(e) => return Err((["unable to create specified directories\n".to_string(), e.to_string()].concat())),
[INFO] [stdout]     |                                  ^                                                                                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 137 -             Err(e) => return Err((["unable to create specified directories\n".to_string(), e.to_string()].concat())),
[INFO] [stdout] 137 +             Err(e) => return Err(["unable to create specified directories\n".to_string(), e.to_string()].concat() ),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> obj_db/src/database.rs:141:34
[INFO] [stdout]     |
[INFO] [stdout] 141 |             Err(e) => return Err((["unable to create database definition file\n".to_string(), e.to_string()].concat()))
[INFO] [stdout]     |                                  ^                                                                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 141 -             Err(e) => return Err((["unable to create database definition file\n".to_string(), e.to_string()].concat()))
[INFO] [stdout] 141 +             Err(e) => return Err(["unable to create database definition file\n".to_string(), e.to_string()].concat() )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> obj_db/src/database.rs:145:34
[INFO] [stdout]     |
[INFO] [stdout] 145 |             Err(e) => return Err((["unable to create database log file\n".to_string(), e.to_string()].concat()))
[INFO] [stdout]     |                                  ^                                                                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 145 -             Err(e) => return Err((["unable to create database log file\n".to_string(), e.to_string()].concat()))
[INFO] [stdout] 145 +             Err(e) => return Err(["unable to create database log file\n".to_string(), e.to_string()].concat() )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `endpoint::query::QueryDatabaseCreateTable`
[INFO] [stdout]  --> obj_db/src/endpoint.rs:5:48
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{database::{self, table, Database}, endpoint::query::QueryDatabaseCreateTable};
[INFO] [stdout]   |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `cell::Cell`, `default`, and `fs::DirEntry`
[INFO] [stdout]  --> obj_db/src/endpoint/query.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{cell::Cell, default, fs::DirEntry, sync::{Arc, Mutex, MutexGuard}};
[INFO] [stdout]   |           ^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> obj_db/src/endpoint/query.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::database::{self, cell::{self, CellValue}, conditional::{self, Condition, Conditional, Relation}, record::{self, Record}, t...
[INFO] [stdout]   |                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]  --> obj_db/src/lib.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use regex::Regex;
[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: `BufRead`, `BufReader`, `BufWriter`, `File`, `Read`, `Write`, `borrow::BorrowMut`, `create_dir`, `env`, `fs`, `ops::Deref`, `path::Path`, `self`, and `vec`
[INFO] [stdout]   --> obj_db/src/lib.rs:3:5
[INFO] [stdout]    |
[INFO] [stdout]  3 |     borrow::BorrowMut, 
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]  4 |     vec, 
[INFO] [stdout]    |     ^^^
[INFO] [stdout]  5 |     env, 
[INFO] [stdout]    |     ^^^
[INFO] [stdout]  6 |     fs, 
[INFO] [stdout]    |     ^^
[INFO] [stdout]  7 |     ops::Deref, 
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]  8 |     path::Path, 
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]  9 |     fs::{
[INFO] [stdout] 10 |         create_dir, 
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 11 |         File
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 12 |     }, 
[INFO] [stdout] 13 |     io::{self, 
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 14 |         BufRead, 
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 15 |         BufReader, 
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 16 |         BufWriter, 
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 17 |         Read, 
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 18 |         Write
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MutexGuard`, `borrow::Borrow`, `collections::HashMap`, `ops::Deref`, and `path::Path`
[INFO] [stdout]  --> obj_db/src/database.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | ...::{borrow::Borrow, collections::HashMap, env, fs::{self, File}, io::{Read, Write}, ops::Deref, path::Path, sync::{Arc, Mutex, MutexGuard}};
[INFO] [stdout]   |       ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^                                            ^^^^^^^^^^  ^^^^^^^^^^                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufRead`
[INFO] [stdout]  --> obj_db/src/database/part.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::BufRead;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufReader`
[INFO] [stdout]  --> obj_db/src/database/part.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::BufReader;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Seek`
[INFO] [stdout]  --> obj_db/src/database/part.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::Seek;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `default`
[INFO] [stdout]  --> obj_db/src/database/cell.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{default, fmt::Display};
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::cell::CellValue`
[INFO] [stdout]  --> obj_db/src/database/record.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use super::cell::CellValue;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `collections::HashMap`, `iter::Map`, `ops::Deref`, `path::Path`, and `ptr::null`
[INFO] [stdout]  --> obj_db/src/database/table.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, env, fs::{self, File}, io::{Read, Write}, iter::Map, ops::Deref, path::Path, ptr::null};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^                                            ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CellValue`
[INFO] [stdout]  --> obj_db/src/database/table.rs:4:32
[INFO] [stdout]   |
[INFO] [stdout] 4 | use super::{cell::{self, Cell, CellValue}, conditional, part, record};
[INFO] [stdout]   |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_size::GetSize`
[INFO] [stdout]  --> obj_db/src/database/table.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use get_size::GetSize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Value` and `json`
[INFO] [stdout]  --> obj_db/src/database/table.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde_json::{Value, json};
[INFO] [stdout]   |                  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> obj_db/src/database.rs:126:36
[INFO] [stdout]     |
[INFO] [stdout] 126 |                 None => return Err(("unable to parse path as str".to_string()))
[INFO] [stdout]     |                                    ^                                         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 126 -                 None => return Err(("unable to parse path as str".to_string()))
[INFO] [stdout] 126 +                 None => return Err("unable to parse path as str".to_string() )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> obj_db/src/database.rs:128:34
[INFO] [stdout]     |
[INFO] [stdout] 128 |             Err(e) => return Err((["unable to find current directory\n".to_string(), e.to_string()].concat())),
[INFO] [stdout]     |                                  ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 128 -             Err(e) => return Err((["unable to find current directory\n".to_string(), e.to_string()].concat())),
[INFO] [stdout] 128 +             Err(e) => return Err(["unable to find current directory\n".to_string(), e.to_string()].concat() ),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> obj_db/src/database.rs:137:34
[INFO] [stdout]     |
[INFO] [stdout] 137 |             Err(e) => return Err((["unable to create specified directories\n".to_string(), e.to_string()].concat())),
[INFO] [stdout]     |                                  ^                                                                                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 137 -             Err(e) => return Err((["unable to create specified directories\n".to_string(), e.to_string()].concat())),
[INFO] [stdout] 137 +             Err(e) => return Err(["unable to create specified directories\n".to_string(), e.to_string()].concat() ),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> obj_db/src/database.rs:141:34
[INFO] [stdout]     |
[INFO] [stdout] 141 |             Err(e) => return Err((["unable to create database definition file\n".to_string(), e.to_string()].concat()))
[INFO] [stdout]     |                                  ^                                                                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 141 -             Err(e) => return Err((["unable to create database definition file\n".to_string(), e.to_string()].concat()))
[INFO] [stdout] 141 +             Err(e) => return Err(["unable to create database definition file\n".to_string(), e.to_string()].concat() )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> obj_db/src/database.rs:145:34
[INFO] [stdout]     |
[INFO] [stdout] 145 |             Err(e) => return Err((["unable to create database log file\n".to_string(), e.to_string()].concat()))
[INFO] [stdout]     |                                  ^                                                                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 145 -             Err(e) => return Err((["unable to create database log file\n".to_string(), e.to_string()].concat()))
[INFO] [stdout] 145 +             Err(e) => return Err(["unable to create database log file\n".to_string(), e.to_string()].concat() )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `endpoint::query::QueryDatabaseCreateTable`
[INFO] [stdout]  --> obj_db/src/endpoint.rs:5:48
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{database::{self, table, Database}, endpoint::query::QueryDatabaseCreateTable};
[INFO] [stdout]   |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `cell::Cell`, `default`, and `fs::DirEntry`
[INFO] [stdout]  --> obj_db/src/endpoint/query.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{cell::Cell, default, fs::DirEntry, sync::{Arc, Mutex, MutexGuard}};
[INFO] [stdout]   |           ^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> obj_db/src/endpoint/query.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::database::{self, cell::{self, CellValue}, conditional::{self, Condition, Conditional, Relation}, record::{self, Record}, t...
[INFO] [stdout]   |                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> obj_db/src/database/part.rs:131:30
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn delete(&mut self, index: u32) -> Result<String, String> {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> obj_db/src/database/part.rs:131:30
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn delete(&mut self, index: u32) -> Result<String, String> {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> obj_db/src/database/table.rs:80:41
[INFO] [stdout]    |
[INFO] [stdout] 80 | ...                   Err(e) => "".to_string(),
[INFO] [stdout]    |                           ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> obj_db/src/database/table.rs:101:17
[INFO] [stdout]     |
[INFO] [stdout] 101 |             Err(e) => (false, vec![])
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]    --> obj_db/src/database/table.rs:140:16
[INFO] [stdout]     |
[INFO] [stdout] 140 |             Ok(d) => self.directory = table_dir.clone(),
[INFO] [stdout]     |                ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> obj_db/src/database.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 | ...   let mut new_db: Arc<Mutex<Database<'a>>> = Arc::new(Mutex::new(Database { name: name.clone(), indev: true, directory: "".to_st...
[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: unused variable: `e`
[INFO] [stdout]   --> obj_db/src/database.rs:69:25
[INFO] [stdout]    |
[INFO] [stdout] 69 |                     Err(e) => "".to_string(),
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> obj_db/src/database.rs:73:17
[INFO] [stdout]    |
[INFO] [stdout] 73 |             Err(e) => return Err("unable to find database directory".to_string()),
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> obj_db/src/database.rs:81:17
[INFO] [stdout]    |
[INFO] [stdout] 81 |             Err(e) => Err("unable to open database defintion file".to_string()),
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> obj_db/src/database.rs:162:17
[INFO] [stdout]     |
[INFO] [stdout] 162 |             Err(e) => Err("unable to open database defintion file".to_string()),
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> obj_db/src/database.rs:173:75
[INFO] [stdout]     |
[INFO] [stdout] 173 | ....iter_mut().enumerate().find(|(i, table)| match table.try_lock() { Ok(table) => table.name == table_name, Err(e) => panic!("{}",...
[INFO] [stdout]     |                                   ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> obj_db/src/endpoint/runnable.rs:14:71
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn run(&mut self, admin_db: Option<Arc<Mutex<Database<'a>>>>, mut database: Option<&mut MutexGuard<Database<'a>>>, body: Val...
[INFO] [stdout]    |                                                                       ----^^^^^^^^
[INFO] [stdout]    |                                                                       |
[INFO] [stdout]    |                                                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]   --> obj_db/src/endpoint/runnable.rs:17:30
[INFO] [stdout]    |
[INFO] [stdout] 17 |             Runnable::Script(q) => {}
[INFO] [stdout]    |                              ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]   --> obj_db/src/endpoint/runnable.rs:24:30
[INFO] [stdout]    |
[INFO] [stdout] 24 |             Runnable::Script(q) => Err("scripts not implemented".to_owned())
[INFO] [stdout]    |                              ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]   --> obj_db/src/endpoint/runnable.rs:31:30
[INFO] [stdout]    |
[INFO] [stdout] 31 |             Runnable::Script(q) => Err("not a query".to_owned()),
[INFO] [stdout]    |                              ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:21:71
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn run(&mut self, admin_db: Option<Arc<Mutex<Database<'a>>>>, mut database: Option<&mut MutexGuard<Database<'a>>>, body: Val...
[INFO] [stdout]    |                                                                       ----^^^^^^^^
[INFO] [stdout]    |                                                                       |
[INFO] [stdout]    |                                                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:57:71
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn run(&mut self, admin_db: Option<Arc<Mutex<Database<'a>>>>, mut body: Value, dir_override: Option<String>) {
[INFO] [stdout]    |                                                                       ----^^^^
[INFO] [stdout]    |                                                                       |
[INFO] [stdout]    |                                                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:155:41
[INFO] [stdout]     |
[INFO] [stdout] 155 | ...                   _ => CellValue::String { name: "".to_owned(), data: Some("".to_owned()) }
[INFO] [stdout]     |                       ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:155:41
[INFO] [stdout]     |
[INFO] [stdout] 147 | ...   cell::CellValue::String {..} => cell::CellValue::String { name: record_name.to_owned(), data: match record_value.as_str() { S...
[INFO] [stdout]     |       ---------------------------- matches some of the same values
[INFO] [stdout] 148 | ...   cell::CellValue::Bool   {..} => cell::CellValue::Bool   { name: record_name.to_owned(), data: record_value.as_bool() },
[INFO] [stdout]     |       ---------------------------- matches some of the same values
[INFO] [stdout] 149 | ...   cell::CellValue::UInt   {..} => cell::CellValue::UInt   { name: record_name.to_owned(), data: match record_value.as_str() { S...
[INFO] [stdout]     |       ---------------------------- matches some of the same values
[INFO] [stdout] 150 | ...   cell::CellValue::ULong  {..} => cell::CellValue::ULong  { name: record_name.to_owned(), data: match record_value.as_str() { S...
[INFO] [stdout]     |       ---------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 155 | ...   _ => CellValue::String { name: "".to_owned(), data: Some("".to_owned()) }
[INFO] [stdout]     |       ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:184:27
[INFO] [stdout]     |
[INFO] [stdout] 184 |     pub fn run(&mut self, mut records: Vec<record::Record> ) {
[INFO] [stdout]     |                           ----^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:278:45
[INFO] [stdout]     |
[INFO] [stdout] 278 | ...                   _ => None,
[INFO] [stdout]     |                       ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:278:45
[INFO] [stdout]     |
[INFO] [stdout] 270 | ...   cell::CellValue::String { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 271 | ...   cell::CellValue::Bool   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 272 | ...   cell::CellValue::UInt   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 273 | ...   cell::CellValue::ULong  { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 278 | ...   _ => None,
[INFO] [stdout]     |       ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:292:45
[INFO] [stdout]     |
[INFO] [stdout] 292 | ...                   _ => None,
[INFO] [stdout]     |                       ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:292:45
[INFO] [stdout]     |
[INFO] [stdout] 284 | ...   cell::CellValue::String { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 285 | ...   cell::CellValue::Bool   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 286 | ...   cell::CellValue::UInt   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 287 | ...   cell::CellValue::ULong  { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 292 | ...   _ => None,
[INFO] [stdout]     |       ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:355:29
[INFO] [stdout]     |
[INFO] [stdout] 355 |     pub fn parse(&mut self, body: Value) {
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:359:68
[INFO] [stdout]     |
[INFO] [stdout] 359 |     pub fn run(&mut self, conditions: Vec<conditional::Condition>, mut records: Vec<record::Record>) {
[INFO] [stdout]     |                                                                    ----^^^^^^^
[INFO] [stdout]     |                                                                    |
[INFO] [stdout]     |                                                                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `conditions`
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:359:27
[INFO] [stdout]     |
[INFO] [stdout] 359 |     pub fn run(&mut self, conditions: Vec<conditional::Condition>, mut records: Vec<record::Record>) {
[INFO] [stdout]     |                           ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_conditions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `records`
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:359:68
[INFO] [stdout]     |
[INFO] [stdout] 359 |     pub fn run(&mut self, conditions: Vec<conditional::Condition>, mut records: Vec<record::Record>) {
[INFO] [stdout]     |                                                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_records`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:419:45
[INFO] [stdout]     |
[INFO] [stdout] 419 | ...                   _ => None,
[INFO] [stdout]     |                       ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:419:45
[INFO] [stdout]     |
[INFO] [stdout] 411 | ...   cell::CellValue::String { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 412 | ...   cell::CellValue::Bool   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 413 | ...   cell::CellValue::UInt   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 414 | ...   cell::CellValue::ULong  { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 419 | ...   _ => None,
[INFO] [stdout]     |       ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:433:45
[INFO] [stdout]     |
[INFO] [stdout] 433 | ...                   _ => None,
[INFO] [stdout]     |                       ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:433:45
[INFO] [stdout]     |
[INFO] [stdout] 425 | ...   cell::CellValue::String { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 426 | ...   cell::CellValue::Bool   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 427 | ...   cell::CellValue::UInt   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 428 | ...   cell::CellValue::ULong  { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 433 | ...   _ => None,
[INFO] [stdout]     |       ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:512:67
[INFO] [stdout]     |
[INFO] [stdout] 512 |     pub fn run<'a>(&mut self, admin_db: Arc<Mutex<Database<'a>>>, mut database: Option<&mut MutexGuard<Database<'a>>>, body: Value) {
[INFO] [stdout]     |                                                                   ----^^^^^^^^
[INFO] [stdout]     |                                                                   |
[INFO] [stdout]     |                                                                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `admin_db`
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:615:29
[INFO] [stdout]     |
[INFO] [stdout] 615 |     pub fn parse(&mut self, admin_db: Arc<Mutex<Database>>, database: &mut MutexGuard<Database>, body: Value) {
[INFO] [stdout]     |                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_admin_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:615:98
[INFO] [stdout]     |
[INFO] [stdout] 615 |     pub fn parse(&mut self, admin_db: Arc<Mutex<Database>>, database: &mut MutexGuard<Database>, body: Value) {
[INFO] [stdout]     |                                                                                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:620:27
[INFO] [stdout]     |
[INFO] [stdout] 620 |     pub fn run(&mut self, database: &mut MutexGuard<Database>) {
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> obj_db/src/endpoint.rs:19:27
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn run(&mut self, mut database: Option<&mut MutexGuard<Database<'a>>>, body: Value, dir_override: Option<String>) {
[INFO] [stdout]    |                           ----^^^^^^^^
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> obj_db/src/endpoint.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 |             Err(e) => panic!("shits fucked")
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]   --> obj_db/src/endpoint.rs:58:19
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn new_db(database: Arc<Mutex<database::Database<'a>>>, admin_db: Arc<Mutex<Database<'a>>>, role: String) -> Vec<Arc<Mutex<S...
[INFO] [stdout]    |                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]   --> obj_db/src/endpoint.rs:72:20
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub fn prod_db(database: Arc<Mutex<database::Database<'a>>>, admin_db: Arc<Mutex<Database<'a>>>, role: String) -> Vec<Arc<Mutex<...
[INFO] [stdout]    |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from` is never used
[INFO] [stdout]   --> obj_db/src/database/record.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl RecordCollection {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn from(records: Vec<Record>) -> RecordCollection {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `check_role` is never used
[INFO] [stdout]   --> obj_db/src/endpoint.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl<'a> Endpoint<'a> {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     fn check_role(&self) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:49:35
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct QueryNewDatabase<'a> { name: String, pub result: Result<Arc<Mutex<Database<'a>>>, String> }
[INFO] [stdout]    |            ----------------       ^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:116:64
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct TableQueryCreate { table: Arc<Mutex<table::Table>>, name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ---------------- field in this struct               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:226:64
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub struct TableQueryRead   { table: Arc<Mutex<table::Table>>, name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            -------------- field in this struct                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:348:64
[INFO] [stdout]     |
[INFO] [stdout] 348 | pub struct TableQueryUpdate { table: Arc<Mutex<table::Table>>, name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ---------------- field in this struct               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:367:64
[INFO] [stdout]     |
[INFO] [stdout] 367 | pub struct TableQueryDelete { table: Arc<Mutex<table::Table>>, name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ---------------- field in this struct               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:543:39
[INFO] [stdout]     |
[INFO] [stdout] 543 | pub struct QueryDatabaseCreateTable { name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ------------------------   ^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:608:39
[INFO] [stdout]     |
[INFO] [stdout] 608 | pub struct QueryDatabaseUpdateTable { name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ------------------------   ^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:630:39
[INFO] [stdout]     |
[INFO] [stdout] 630 | pub struct QueryDatabaseDeleteTable { name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ------------------------   ^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:652:39
[INFO] [stdout]     |
[INFO] [stdout] 652 | pub struct QueryDatabaseInDevToggle { name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ------------------------   ^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]  --> obj_db/src/endpoint/script.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Script {
[INFO] [stdout]   |            ------ field in this struct
[INFO] [stdout] 4 |     name: String
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> obj_db/src/database.rs:78:17
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 e.read_to_string(&mut buf);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 let _ = e.read_to_string(&mut buf);
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> obj_db/src/database.rs:159:17
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 e.read_to_string(&mut buf);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 let _ = e.read_to_string(&mut buf);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> obj_db/src/database/record.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |         fmt.write_str("{{");
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 72 |         let _ = fmt.write_str("{{");
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> obj_db/src/database/record.rs:73:38
[INFO] [stdout]    |
[INFO] [stdout] 73 |         self.0.iter().for_each(|a| { fmt.write_str(&a.to_string()); });
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 73 |         self.0.iter().for_each(|a| { let _ = fmt.write_str(&a.to_string()); });
[INFO] [stdout]    |                                      +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> obj_db/src/database/record.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fmt.write_str("}},");
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let _ = fmt.write_str("}},");
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `Result`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> obj_db/src/database/table.rs:162:40
[INFO] [stdout]     |
[INFO] [stdout] 162 |                 Ok(_) => for record in part.query_search_columns(conditions) {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 162 -                 Ok(_) => for record in part.query_search_columns(conditions) {
[INFO] [stdout] 162 +                 Ok(_) => while let Ok(record) = part.query_search_columns(conditions) {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 162 -                 Ok(_) => for record in part.query_search_columns(conditions) {
[INFO] [stdout] 162 +                 Ok(_) => if let Ok(record) = part.query_search_columns(conditions) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> obj_db/src/database/table.rs:181:13
[INFO] [stdout]     |
[INFO] [stdout] 181 |             part.save();
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 181 |             let _ = part.save();
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQC` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:87:42
[INFO] [stdout]    |
[INFO] [stdout] 87 |             QueryTable::TableQueryCreate(TQC) => TQC.parse(body),
[INFO] [stdout]    |                                          ^^^ help: convert the identifier to snake case: `tqc`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQR` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:88:40
[INFO] [stdout]    |
[INFO] [stdout] 88 |             QueryTable::TableQueryRead(TQR)     => TQR.parse(body),
[INFO] [stdout]    |                                        ^^^ help: convert the identifier to snake case: `tqr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQU` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:89:42
[INFO] [stdout]    |
[INFO] [stdout] 89 |             QueryTable::TableQueryUpdate(TQU) => TQU.parse(body),
[INFO] [stdout]    |                                          ^^^ help: convert the identifier to snake case: `tqu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQD` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:90:42
[INFO] [stdout]    |
[INFO] [stdout] 90 |             QueryTable::TableQueryDelete(TQD) => TQD.parse(body),
[INFO] [stdout]    |                                          ^^^ help: convert the identifier to snake case: `tqd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQC` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:96:42
[INFO] [stdout]    |
[INFO] [stdout] 96 |             QueryTable::TableQueryCreate(TQC) => TQC.result.clone(),
[INFO] [stdout]    |                                          ^^^ help: convert the identifier to snake case: `tqc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQR` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:97:40
[INFO] [stdout]    |
[INFO] [stdout] 97 |             QueryTable::TableQueryRead(TQR)     => TQR.result.clone(),
[INFO] [stdout]    |                                        ^^^ help: convert the identifier to snake case: `tqr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQU` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:98:42
[INFO] [stdout]    |
[INFO] [stdout] 98 |             QueryTable::TableQueryUpdate(TQU) => TQU.result.clone(),
[INFO] [stdout]    |                                          ^^^ help: convert the identifier to snake case: `tqu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQD` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:99:42
[INFO] [stdout]    |
[INFO] [stdout] 99 |             QueryTable::TableQueryDelete(TQD) => TQD.result.clone(),
[INFO] [stdout]    |                                          ^^^ help: convert the identifier to snake case: `tqd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQC` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:105:42
[INFO] [stdout]     |
[INFO] [stdout] 105 |             QueryTable::TableQueryCreate(TQC) => Ok(TQC.table.clone()),
[INFO] [stdout]     |                                          ^^^ help: convert the identifier to snake case: `tqc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQR` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:106:40
[INFO] [stdout]     |
[INFO] [stdout] 106 |             QueryTable::TableQueryRead(TQR)     => Ok(TQR.table.clone()),
[INFO] [stdout]     |                                        ^^^ help: convert the identifier to snake case: `tqr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQU` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:107:42
[INFO] [stdout]     |
[INFO] [stdout] 107 |             QueryTable::TableQueryUpdate(TQU) => Ok(TQU.table.clone()),
[INFO] [stdout]     |                                          ^^^ help: convert the identifier to snake case: `tqu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQD` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:108:42
[INFO] [stdout]     |
[INFO] [stdout] 108 |             QueryTable::TableQueryDelete(TQD) => Ok(TQD.table.clone()),
[INFO] [stdout]     |                                          ^^^ help: convert the identifier to snake case: `tqd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDCT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:514:53
[INFO] [stdout]     |
[INFO] [stdout] 514 | ...   QueryDatabase::QueryDatabaseCreateTable(QDCT) => match database { Some(db) => QDCT.parse(admin_db, db, body), None => QDCT.re...
[INFO] [stdout]     |                                               ^^^^ help: convert the identifier to snake case: `qdct`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDUT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:515:53
[INFO] [stdout]     |
[INFO] [stdout] 515 | ...   QueryDatabase::QueryDatabaseUpdateTable(QDUT) => match database { Some(db) => QDUT.parse(admin_db, db, body), None => QDUT.re...
[INFO] [stdout]     |                                               ^^^^ help: convert the identifier to snake case: `qdut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDDT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:516:53
[INFO] [stdout]     |
[INFO] [stdout] 516 | ...   QueryDatabase::QueryDatabaseDeleteTable(QDDT) => match database { Some(db) => QDDT.parse(db, body), None => QDDT.result = Err...
[INFO] [stdout]     |                                               ^^^^ help: convert the identifier to snake case: `qddt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDIDT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:517:53
[INFO] [stdout]     |
[INFO] [stdout] 517 | ...   QueryDatabase::QueryDatabaseInDevToggle(QDIDT) => match database { Some(db) => QDIDT.run(db), None => QDIDT.result = Err("no ...
[INFO] [stdout]     |                                               ^^^^^ help: convert the identifier to snake case: `qdidt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDCT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:523:53
[INFO] [stdout]     |
[INFO] [stdout] 523 |             QueryDatabase::QueryDatabaseCreateTable(QDCT) => QDCT.result.clone(), 
[INFO] [stdout]     |                                                     ^^^^ help: convert the identifier to snake case: `qdct`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDUT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:524:53
[INFO] [stdout]     |
[INFO] [stdout] 524 |             QueryDatabase::QueryDatabaseUpdateTable(QDUT) => QDUT.result.clone(), 
[INFO] [stdout]     |                                                     ^^^^ help: convert the identifier to snake case: `qdut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDDT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:525:53
[INFO] [stdout]     |
[INFO] [stdout] 525 |             QueryDatabase::QueryDatabaseDeleteTable(QDDT) => QDDT.result.clone(), 
[INFO] [stdout]     |                                                     ^^^^ help: convert the identifier to snake case: `qddt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDIDT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:526:53
[INFO] [stdout]     |
[INFO] [stdout] 526 |             QueryDatabase::QueryDatabaseInDevToggle(QDIDT) => QDIDT.result.clone(), 
[INFO] [stdout]     |                                                     ^^^^^ help: convert the identifier to snake case: `qdidt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDCT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:532:53
[INFO] [stdout]     |
[INFO] [stdout] 532 |             QueryDatabase::QueryDatabaseCreateTable(QDCT) => QDCT.result = result, 
[INFO] [stdout]     |                                                     ^^^^ help: convert the identifier to snake case: `qdct`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDUT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:533:53
[INFO] [stdout]     |
[INFO] [stdout] 533 |             QueryDatabase::QueryDatabaseUpdateTable(QDUT) => QDUT.result = result, 
[INFO] [stdout]     |                                                     ^^^^ help: convert the identifier to snake case: `qdut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDDT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:534:53
[INFO] [stdout]     |
[INFO] [stdout] 534 |             QueryDatabase::QueryDatabaseDeleteTable(QDDT) => QDDT.result = result, 
[INFO] [stdout]     |                                                     ^^^^ help: convert the identifier to snake case: `qddt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDIDT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:535:53
[INFO] [stdout]     |
[INFO] [stdout] 535 |             QueryDatabase::QueryDatabaseInDevToggle(QDIDT) => QDIDT.result = result, 
[INFO] [stdout]     |                                                     ^^^^^ help: convert the identifier to snake case: `qdidt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> obj_db/src/database/table.rs:80:41
[INFO] [stdout]    |
[INFO] [stdout] 80 | ...                   Err(e) => "".to_string(),
[INFO] [stdout]    |                           ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> obj_db/src/database/table.rs:101:17
[INFO] [stdout]     |
[INFO] [stdout] 101 |             Err(e) => (false, vec![])
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]    --> obj_db/src/database/table.rs:140:16
[INFO] [stdout]     |
[INFO] [stdout] 140 |             Ok(d) => self.directory = table_dir.clone(),
[INFO] [stdout]     |                ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> obj_db/src/database.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 | ...   let mut new_db: Arc<Mutex<Database<'a>>> = Arc::new(Mutex::new(Database { name: name.clone(), indev: true, directory: "".to_st...
[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: unused variable: `e`
[INFO] [stdout]   --> obj_db/src/database.rs:69:25
[INFO] [stdout]    |
[INFO] [stdout] 69 |                     Err(e) => "".to_string(),
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> obj_db/src/database.rs:73:17
[INFO] [stdout]    |
[INFO] [stdout] 73 |             Err(e) => return Err("unable to find database directory".to_string()),
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> obj_db/src/database.rs:81:17
[INFO] [stdout]    |
[INFO] [stdout] 81 |             Err(e) => Err("unable to open database defintion file".to_string()),
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> obj_db/src/database.rs:162:17
[INFO] [stdout]     |
[INFO] [stdout] 162 |             Err(e) => Err("unable to open database defintion file".to_string()),
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> obj_db/src/database.rs:173:75
[INFO] [stdout]     |
[INFO] [stdout] 173 | ....iter_mut().enumerate().find(|(i, table)| match table.try_lock() { Ok(table) => table.name == table_name, Err(e) => panic!("{}",...
[INFO] [stdout]     |                                   ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> obj_db/src/endpoint/runnable.rs:14:71
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn run(&mut self, admin_db: Option<Arc<Mutex<Database<'a>>>>, mut database: Option<&mut MutexGuard<Database<'a>>>, body: Val...
[INFO] [stdout]    |                                                                       ----^^^^^^^^
[INFO] [stdout]    |                                                                       |
[INFO] [stdout]    |                                                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]   --> obj_db/src/endpoint/runnable.rs:17:30
[INFO] [stdout]    |
[INFO] [stdout] 17 |             Runnable::Script(q) => {}
[INFO] [stdout]    |                              ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]   --> obj_db/src/endpoint/runnable.rs:24:30
[INFO] [stdout]    |
[INFO] [stdout] 24 |             Runnable::Script(q) => Err("scripts not implemented".to_owned())
[INFO] [stdout]    |                              ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `q`
[INFO] [stdout]   --> obj_db/src/endpoint/runnable.rs:31:30
[INFO] [stdout]    |
[INFO] [stdout] 31 |             Runnable::Script(q) => Err("not a query".to_owned()),
[INFO] [stdout]    |                              ^ help: if this is intentional, prefix it with an underscore: `_q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:21:71
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn run(&mut self, admin_db: Option<Arc<Mutex<Database<'a>>>>, mut database: Option<&mut MutexGuard<Database<'a>>>, body: Val...
[INFO] [stdout]    |                                                                       ----^^^^^^^^
[INFO] [stdout]    |                                                                       |
[INFO] [stdout]    |                                                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:57:71
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn run(&mut self, admin_db: Option<Arc<Mutex<Database<'a>>>>, mut body: Value, dir_override: Option<String>) {
[INFO] [stdout]    |                                                                       ----^^^^
[INFO] [stdout]    |                                                                       |
[INFO] [stdout]    |                                                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:155:41
[INFO] [stdout]     |
[INFO] [stdout] 155 | ...                   _ => CellValue::String { name: "".to_owned(), data: Some("".to_owned()) }
[INFO] [stdout]     |                       ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:155:41
[INFO] [stdout]     |
[INFO] [stdout] 147 | ...   cell::CellValue::String {..} => cell::CellValue::String { name: record_name.to_owned(), data: match record_value.as_str() { S...
[INFO] [stdout]     |       ---------------------------- matches some of the same values
[INFO] [stdout] 148 | ...   cell::CellValue::Bool   {..} => cell::CellValue::Bool   { name: record_name.to_owned(), data: record_value.as_bool() },
[INFO] [stdout]     |       ---------------------------- matches some of the same values
[INFO] [stdout] 149 | ...   cell::CellValue::UInt   {..} => cell::CellValue::UInt   { name: record_name.to_owned(), data: match record_value.as_str() { S...
[INFO] [stdout]     |       ---------------------------- matches some of the same values
[INFO] [stdout] 150 | ...   cell::CellValue::ULong  {..} => cell::CellValue::ULong  { name: record_name.to_owned(), data: match record_value.as_str() { S...
[INFO] [stdout]     |       ---------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 155 | ...   _ => CellValue::String { name: "".to_owned(), data: Some("".to_owned()) }
[INFO] [stdout]     |       ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:184:27
[INFO] [stdout]     |
[INFO] [stdout] 184 |     pub fn run(&mut self, mut records: Vec<record::Record> ) {
[INFO] [stdout]     |                           ----^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:278:45
[INFO] [stdout]     |
[INFO] [stdout] 278 | ...                   _ => None,
[INFO] [stdout]     |                       ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:278:45
[INFO] [stdout]     |
[INFO] [stdout] 270 | ...   cell::CellValue::String { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 271 | ...   cell::CellValue::Bool   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 272 | ...   cell::CellValue::UInt   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 273 | ...   cell::CellValue::ULong  { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 278 | ...   _ => None,
[INFO] [stdout]     |       ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:292:45
[INFO] [stdout]     |
[INFO] [stdout] 292 | ...                   _ => None,
[INFO] [stdout]     |                       ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:292:45
[INFO] [stdout]     |
[INFO] [stdout] 284 | ...   cell::CellValue::String { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 285 | ...   cell::CellValue::Bool   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 286 | ...   cell::CellValue::UInt   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 287 | ...   cell::CellValue::ULong  { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 292 | ...   _ => None,
[INFO] [stdout]     |       ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:355:29
[INFO] [stdout]     |
[INFO] [stdout] 355 |     pub fn parse(&mut self, body: Value) {
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:359:68
[INFO] [stdout]     |
[INFO] [stdout] 359 |     pub fn run(&mut self, conditions: Vec<conditional::Condition>, mut records: Vec<record::Record>) {
[INFO] [stdout]     |                                                                    ----^^^^^^^
[INFO] [stdout]     |                                                                    |
[INFO] [stdout]     |                                                                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `conditions`
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:359:27
[INFO] [stdout]     |
[INFO] [stdout] 359 |     pub fn run(&mut self, conditions: Vec<conditional::Condition>, mut records: Vec<record::Record>) {
[INFO] [stdout]     |                           ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_conditions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `records`
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:359:68
[INFO] [stdout]     |
[INFO] [stdout] 359 |     pub fn run(&mut self, conditions: Vec<conditional::Condition>, mut records: Vec<record::Record>) {
[INFO] [stdout]     |                                                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_records`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:419:45
[INFO] [stdout]     |
[INFO] [stdout] 419 | ...                   _ => None,
[INFO] [stdout]     |                       ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:419:45
[INFO] [stdout]     |
[INFO] [stdout] 411 | ...   cell::CellValue::String { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 412 | ...   cell::CellValue::Bool   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 413 | ...   cell::CellValue::UInt   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 414 | ...   cell::CellValue::ULong  { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 419 | ...   _ => None,
[INFO] [stdout]     |       ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:433:45
[INFO] [stdout]     |
[INFO] [stdout] 433 | ...                   _ => None,
[INFO] [stdout]     |                       ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:433:45
[INFO] [stdout]     |
[INFO] [stdout] 425 | ...   cell::CellValue::String { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 426 | ...   cell::CellValue::Bool   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 427 | ...   cell::CellValue::UInt   { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] 428 | ...   cell::CellValue::ULong  { name, ..} => Some(conditional::Condition { target_column: conditionsarr[0].as_str().unwrap().to_own...
[INFO] [stdout]     |       ----------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 433 | ...   _ => None,
[INFO] [stdout]     |       ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:512:67
[INFO] [stdout]     |
[INFO] [stdout] 512 |     pub fn run<'a>(&mut self, admin_db: Arc<Mutex<Database<'a>>>, mut database: Option<&mut MutexGuard<Database<'a>>>, body: Value) {
[INFO] [stdout]     |                                                                   ----^^^^^^^^
[INFO] [stdout]     |                                                                   |
[INFO] [stdout]     |                                                                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `admin_db`
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:615:29
[INFO] [stdout]     |
[INFO] [stdout] 615 |     pub fn parse(&mut self, admin_db: Arc<Mutex<Database>>, database: &mut MutexGuard<Database>, body: Value) {
[INFO] [stdout]     |                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_admin_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body`
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:615:98
[INFO] [stdout]     |
[INFO] [stdout] 615 |     pub fn parse(&mut self, admin_db: Arc<Mutex<Database>>, database: &mut MutexGuard<Database>, body: Value) {
[INFO] [stdout]     |                                                                                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_body`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:620:27
[INFO] [stdout]     |
[INFO] [stdout] 620 |     pub fn run(&mut self, database: &mut MutexGuard<Database>) {
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> obj_db/src/endpoint.rs:19:27
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn run(&mut self, mut database: Option<&mut MutexGuard<Database<'a>>>, body: Value, dir_override: Option<String>) {
[INFO] [stdout]    |                           ----^^^^^^^^
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> obj_db/src/endpoint.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 |             Err(e) => panic!("shits fucked")
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]   --> obj_db/src/endpoint.rs:58:19
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn new_db(database: Arc<Mutex<database::Database<'a>>>, admin_db: Arc<Mutex<Database<'a>>>, role: String) -> Vec<Arc<Mutex<S...
[INFO] [stdout]    |                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]   --> obj_db/src/endpoint.rs:72:20
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub fn prod_db(database: Arc<Mutex<database::Database<'a>>>, admin_db: Arc<Mutex<Database<'a>>>, role: String) -> Vec<Arc<Mutex<...
[INFO] [stdout]    |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> obj_db/src/lib.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn main() {
[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 function `from` is never used
[INFO] [stdout]   --> obj_db/src/database/record.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl RecordCollection {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn from(records: Vec<Record>) -> RecordCollection {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `check_role` is never used
[INFO] [stdout]   --> obj_db/src/endpoint.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl<'a> Endpoint<'a> {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     fn check_role(&self) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:49:35
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct QueryNewDatabase<'a> { name: String, pub result: Result<Arc<Mutex<Database<'a>>>, String> }
[INFO] [stdout]    |            ----------------       ^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:116:64
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct TableQueryCreate { table: Arc<Mutex<table::Table>>, name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ---------------- field in this struct               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:226:64
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub struct TableQueryRead   { table: Arc<Mutex<table::Table>>, name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            -------------- field in this struct                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:348:64
[INFO] [stdout]     |
[INFO] [stdout] 348 | pub struct TableQueryUpdate { table: Arc<Mutex<table::Table>>, name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ---------------- field in this struct               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:367:64
[INFO] [stdout]     |
[INFO] [stdout] 367 | pub struct TableQueryDelete { table: Arc<Mutex<table::Table>>, name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ---------------- field in this struct               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:543:39
[INFO] [stdout]     |
[INFO] [stdout] 543 | pub struct QueryDatabaseCreateTable { name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ------------------------   ^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:608:39
[INFO] [stdout]     |
[INFO] [stdout] 608 | pub struct QueryDatabaseUpdateTable { name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ------------------------   ^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:630:39
[INFO] [stdout]     |
[INFO] [stdout] 630 | pub struct QueryDatabaseDeleteTable { name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ------------------------   ^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:652:39
[INFO] [stdout]     |
[INFO] [stdout] 652 | pub struct QueryDatabaseInDevToggle { name: String, pub result: Result<String, String> }
[INFO] [stdout]     |            ------------------------   ^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]  --> obj_db/src/endpoint/script.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Script {
[INFO] [stdout]   |            ------ field in this struct
[INFO] [stdout] 4 |     name: String
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> obj_db/src/database.rs:78:17
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 e.read_to_string(&mut buf);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 let _ = e.read_to_string(&mut buf);
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> obj_db/src/database.rs:159:17
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 e.read_to_string(&mut buf);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 let _ = e.read_to_string(&mut buf);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> obj_db/src/database/record.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |         fmt.write_str("{{");
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 72 |         let _ = fmt.write_str("{{");
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> obj_db/src/database/record.rs:73:38
[INFO] [stdout]    |
[INFO] [stdout] 73 |         self.0.iter().for_each(|a| { fmt.write_str(&a.to_string()); });
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 73 |         self.0.iter().for_each(|a| { let _ = fmt.write_str(&a.to_string()); });
[INFO] [stdout]    |                                      +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> obj_db/src/database/record.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fmt.write_str("}},");
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let _ = fmt.write_str("}},");
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `Result`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> obj_db/src/database/table.rs:162:40
[INFO] [stdout]     |
[INFO] [stdout] 162 |                 Ok(_) => for record in part.query_search_columns(conditions) {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 162 -                 Ok(_) => for record in part.query_search_columns(conditions) {
[INFO] [stdout] 162 +                 Ok(_) => while let Ok(record) = part.query_search_columns(conditions) {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 162 -                 Ok(_) => for record in part.query_search_columns(conditions) {
[INFO] [stdout] 162 +                 Ok(_) => if let Ok(record) = part.query_search_columns(conditions) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> obj_db/src/database/table.rs:181:13
[INFO] [stdout]     |
[INFO] [stdout] 181 |             part.save();
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 181 |             let _ = part.save();
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQC` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:87:42
[INFO] [stdout]    |
[INFO] [stdout] 87 |             QueryTable::TableQueryCreate(TQC) => TQC.parse(body),
[INFO] [stdout]    |                                          ^^^ help: convert the identifier to snake case: `tqc`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQR` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:88:40
[INFO] [stdout]    |
[INFO] [stdout] 88 |             QueryTable::TableQueryRead(TQR)     => TQR.parse(body),
[INFO] [stdout]    |                                        ^^^ help: convert the identifier to snake case: `tqr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQU` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:89:42
[INFO] [stdout]    |
[INFO] [stdout] 89 |             QueryTable::TableQueryUpdate(TQU) => TQU.parse(body),
[INFO] [stdout]    |                                          ^^^ help: convert the identifier to snake case: `tqu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQD` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:90:42
[INFO] [stdout]    |
[INFO] [stdout] 90 |             QueryTable::TableQueryDelete(TQD) => TQD.parse(body),
[INFO] [stdout]    |                                          ^^^ help: convert the identifier to snake case: `tqd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQC` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:96:42
[INFO] [stdout]    |
[INFO] [stdout] 96 |             QueryTable::TableQueryCreate(TQC) => TQC.result.clone(),
[INFO] [stdout]    |                                          ^^^ help: convert the identifier to snake case: `tqc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQR` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:97:40
[INFO] [stdout]    |
[INFO] [stdout] 97 |             QueryTable::TableQueryRead(TQR)     => TQR.result.clone(),
[INFO] [stdout]    |                                        ^^^ help: convert the identifier to snake case: `tqr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQU` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:98:42
[INFO] [stdout]    |
[INFO] [stdout] 98 |             QueryTable::TableQueryUpdate(TQU) => TQU.result.clone(),
[INFO] [stdout]    |                                          ^^^ help: convert the identifier to snake case: `tqu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQD` should have a snake case name
[INFO] [stdout]   --> obj_db/src/endpoint/query.rs:99:42
[INFO] [stdout]    |
[INFO] [stdout] 99 |             QueryTable::TableQueryDelete(TQD) => TQD.result.clone(),
[INFO] [stdout]    |                                          ^^^ help: convert the identifier to snake case: `tqd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQC` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:105:42
[INFO] [stdout]     |
[INFO] [stdout] 105 |             QueryTable::TableQueryCreate(TQC) => Ok(TQC.table.clone()),
[INFO] [stdout]     |                                          ^^^ help: convert the identifier to snake case: `tqc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQR` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:106:40
[INFO] [stdout]     |
[INFO] [stdout] 106 |             QueryTable::TableQueryRead(TQR)     => Ok(TQR.table.clone()),
[INFO] [stdout]     |                                        ^^^ help: convert the identifier to snake case: `tqr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQU` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:107:42
[INFO] [stdout]     |
[INFO] [stdout] 107 |             QueryTable::TableQueryUpdate(TQU) => Ok(TQU.table.clone()),
[INFO] [stdout]     |                                          ^^^ help: convert the identifier to snake case: `tqu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TQD` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:108:42
[INFO] [stdout]     |
[INFO] [stdout] 108 |             QueryTable::TableQueryDelete(TQD) => Ok(TQD.table.clone()),
[INFO] [stdout]     |                                          ^^^ help: convert the identifier to snake case: `tqd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDCT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:514:53
[INFO] [stdout]     |
[INFO] [stdout] 514 | ...   QueryDatabase::QueryDatabaseCreateTable(QDCT) => match database { Some(db) => QDCT.parse(admin_db, db, body), None => QDCT.re...
[INFO] [stdout]     |                                               ^^^^ help: convert the identifier to snake case: `qdct`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDUT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:515:53
[INFO] [stdout]     |
[INFO] [stdout] 515 | ...   QueryDatabase::QueryDatabaseUpdateTable(QDUT) => match database { Some(db) => QDUT.parse(admin_db, db, body), None => QDUT.re...
[INFO] [stdout]     |                                               ^^^^ help: convert the identifier to snake case: `qdut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDDT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:516:53
[INFO] [stdout]     |
[INFO] [stdout] 516 | ...   QueryDatabase::QueryDatabaseDeleteTable(QDDT) => match database { Some(db) => QDDT.parse(db, body), None => QDDT.result = Err...
[INFO] [stdout]     |                                               ^^^^ help: convert the identifier to snake case: `qddt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDIDT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:517:53
[INFO] [stdout]     |
[INFO] [stdout] 517 | ...   QueryDatabase::QueryDatabaseInDevToggle(QDIDT) => match database { Some(db) => QDIDT.run(db), None => QDIDT.result = Err("no ...
[INFO] [stdout]     |                                               ^^^^^ help: convert the identifier to snake case: `qdidt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDCT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:523:53
[INFO] [stdout]     |
[INFO] [stdout] 523 |             QueryDatabase::QueryDatabaseCreateTable(QDCT) => QDCT.result.clone(), 
[INFO] [stdout]     |                                                     ^^^^ help: convert the identifier to snake case: `qdct`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDUT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:524:53
[INFO] [stdout]     |
[INFO] [stdout] 524 |             QueryDatabase::QueryDatabaseUpdateTable(QDUT) => QDUT.result.clone(), 
[INFO] [stdout]     |                                                     ^^^^ help: convert the identifier to snake case: `qdut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDDT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:525:53
[INFO] [stdout]     |
[INFO] [stdout] 525 |             QueryDatabase::QueryDatabaseDeleteTable(QDDT) => QDDT.result.clone(), 
[INFO] [stdout]     |                                                     ^^^^ help: convert the identifier to snake case: `qddt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDIDT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:526:53
[INFO] [stdout]     |
[INFO] [stdout] 526 |             QueryDatabase::QueryDatabaseInDevToggle(QDIDT) => QDIDT.result.clone(), 
[INFO] [stdout]     |                                                     ^^^^^ help: convert the identifier to snake case: `qdidt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDCT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:532:53
[INFO] [stdout]     |
[INFO] [stdout] 532 |             QueryDatabase::QueryDatabaseCreateTable(QDCT) => QDCT.result = result, 
[INFO] [stdout]     |                                                     ^^^^ help: convert the identifier to snake case: `qdct`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDUT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:533:53
[INFO] [stdout]     |
[INFO] [stdout] 533 |             QueryDatabase::QueryDatabaseUpdateTable(QDUT) => QDUT.result = result, 
[INFO] [stdout]     |                                                     ^^^^ help: convert the identifier to snake case: `qdut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDDT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:534:53
[INFO] [stdout]     |
[INFO] [stdout] 534 |             QueryDatabase::QueryDatabaseDeleteTable(QDDT) => QDDT.result = result, 
[INFO] [stdout]     |                                                     ^^^^ help: convert the identifier to snake case: `qddt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `QDIDT` should have a snake case name
[INFO] [stdout]    --> obj_db/src/endpoint/query.rs:535:53
[INFO] [stdout]     |
[INFO] [stdout] 535 |             QueryDatabase::QueryDatabaseInDevToggle(QDIDT) => QDIDT.result = result, 
[INFO] [stdout]     |                                                     ^^^^^ help: convert the identifier to snake case: `qdidt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking api v0.1.0 (/opt/rustwide/workdir/api)
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> api/src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[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: `DerefMut`, `Deref`, `DirEntry`, and `ReadDir`
[INFO] [stdout]  --> api/src/main.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::{env, fs::{self, DirEntry, ReadDir}, io::Write, net::TcpListener, ops::{Deref, DerefMut}, sync::{Arc, Mutex, MutexGuard}};
[INFO] [stdout]   |                           ^^^^^^^^  ^^^^^^^                                      ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> api/src/main.rs:5:25
[INFO] [stdout]   |
[INFO] [stdout] 5 | use obj_db::{database::{self, Database}, endpoint::{self, Endpoint, runnable}};
[INFO] [stdout]   |                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> api/src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[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: `DerefMut`, `Deref`, `DirEntry`, and `ReadDir`
[INFO] [stdout]  --> api/src/main.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::{env, fs::{self, DirEntry, ReadDir}, io::Write, net::TcpListener, ops::{Deref, DerefMut}, sync::{Arc, Mutex, MutexGuard}};
[INFO] [stdout]   |                           ^^^^^^^^  ^^^^^^^                                      ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> api/src/main.rs:5:25
[INFO] [stdout]   |
[INFO] [stdout] 5 | use obj_db::{database::{self, Database}, endpoint::{self, Endpoint, runnable}};
[INFO] [stdout]   |                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> api/src/main.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let mut databases: Arc<Mutex<Vec<Arc<Mutex<Database<'static>>>>>> = Arc::new(Mutex::new(vec![Arc::clone(&admin_db)]));
[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]   --> api/src/main.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let mut endpoints: Arc<Mutex<Vec<Endpoint<'static>>>> = Arc::new(Mutex::new(Endpoint::new_server(admin_db, "ADMIN".to_owned())));
[INFO] [stdout]    |         ----^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `msg` is never read
[INFO] [stdout]   --> api/src/main.rs:34:27
[INFO] [stdout]    |
[INFO] [stdout] 34 |             let mut msg = "message not replaced".to_string();
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> api/src/main.rs:45:78
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn build_from_dir(databases: Arc<Mutex<Vec<Arc<Mutex<Database<'static>>>>>>, mut endpoints: Arc<Mutex<Vec<Endpoint<'static>>>>) -> R...
[INFO] [stdout]    |                                                                              ----^^^^^^^^^
[INFO] [stdout]    |                                                                              |
[INFO] [stdout]    |                                                                              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> api/src/main.rs:61:53
[INFO] [stdout]    |
[INFO] [stdout] 61 | ...                   Err(e) => panic!("db could not be built from dir")
[INFO] [stdout]    |                           ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> api/src/main.rs:66:41
[INFO] [stdout]    |
[INFO] [stdout] 66 | ...                   Err(e) => panic!("mutex poisoned")
[INFO] [stdout]    |                           ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `endpoints`
[INFO] [stdout]   --> api/src/main.rs:45:78
[INFO] [stdout]    |
[INFO] [stdout] 45 | ...abase<'static>>>>>>, mut endpoints: Arc<Mutex<Vec<Endpoint<'static>>>>) -> Result<String, String>  {
[INFO] [stdout]    |                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_endpoints`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> api/src/main.rs:103:33
[INFO] [stdout]     |
[INFO] [stdout] 102 | ...                       _ => e = [e, "runnable is not a query".to_owned()].concat(),
[INFO] [stdout]     |                           - matches any value
[INFO] [stdout] 103 | ...                   runnable::Runnable::Script(_) => e = "scripts not yet implemented".to_owned()
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> api/src/main.rs:87:18
[INFO] [stdout]    |
[INFO] [stdout] 87 |             Some(mut new_db_endpoint) => {
[INFO] [stdout]    |                  ----^^^^^^^^^^^^^^^
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> api/src/main.rs:191:33
[INFO] [stdout]     |
[INFO] [stdout] 191 | ...                   Err(e) => "matching database could not be accessed do to multithreading blocking".to_owned()
[INFO] [stdout]     |                           ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> api/src/main.rs:268:33
[INFO] [stdout]     |
[INFO] [stdout] 268 | ...                   Err(e) => "matching database could not be accessed do to multithreading blocking".to_owned()
[INFO] [stdout]     |                           ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> api/src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     build_from_dir(Arc::clone(&databases), Arc::clone(&endpoints));
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let _ = build_from_dir(Arc::clone(&databases), Arc::clone(&endpoints));
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> api/src/main.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let mut databases: Arc<Mutex<Vec<Arc<Mutex<Database<'static>>>>>> = Arc::new(Mutex::new(vec![Arc::clone(&admin_db)]));
[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]   --> api/src/main.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let mut endpoints: Arc<Mutex<Vec<Endpoint<'static>>>> = Arc::new(Mutex::new(Endpoint::new_server(admin_db, "ADMIN".to_owned())));
[INFO] [stdout]    |         ----^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `msg` is never read
[INFO] [stdout]   --> api/src/main.rs:34:27
[INFO] [stdout]    |
[INFO] [stdout] 34 |             let mut msg = "message not replaced".to_string();
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> api/src/main.rs:45:78
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn build_from_dir(databases: Arc<Mutex<Vec<Arc<Mutex<Database<'static>>>>>>, mut endpoints: Arc<Mutex<Vec<Endpoint<'static>>>>) -> R...
[INFO] [stdout]    |                                                                              ----^^^^^^^^^
[INFO] [stdout]    |                                                                              |
[INFO] [stdout]    |                                                                              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> api/src/main.rs:61:53
[INFO] [stdout]    |
[INFO] [stdout] 61 | ...                   Err(e) => panic!("db could not be built from dir")
[INFO] [stdout]    |                           ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> api/src/main.rs:66:41
[INFO] [stdout]    |
[INFO] [stdout] 66 | ...                   Err(e) => panic!("mutex poisoned")
[INFO] [stdout]    |                           ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `endpoints`
[INFO] [stdout]   --> api/src/main.rs:45:78
[INFO] [stdout]    |
[INFO] [stdout] 45 | ...abase<'static>>>>>>, mut endpoints: Arc<Mutex<Vec<Endpoint<'static>>>>) -> Result<String, String>  {
[INFO] [stdout]    |                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_endpoints`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> api/src/main.rs:103:33
[INFO] [stdout]     |
[INFO] [stdout] 102 | ...                       _ => e = [e, "runnable is not a query".to_owned()].concat(),
[INFO] [stdout]     |                           - matches any value
[INFO] [stdout] 103 | ...                   runnable::Runnable::Script(_) => e = "scripts not yet implemented".to_owned()
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> api/src/main.rs:87:18
[INFO] [stdout]    |
[INFO] [stdout] 87 |             Some(mut new_db_endpoint) => {
[INFO] [stdout]    |                  ----^^^^^^^^^^^^^^^
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> api/src/main.rs:191:33
[INFO] [stdout]     |
[INFO] [stdout] 191 | ...                   Err(e) => "matching database could not be accessed do to multithreading blocking".to_owned()
[INFO] [stdout]     |                           ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> api/src/main.rs:268:33
[INFO] [stdout]     |
[INFO] [stdout] 268 | ...                   Err(e) => "matching database could not be accessed do to multithreading blocking".to_owned()
[INFO] [stdout]     |                           ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> api/src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     build_from_dir(Arc::clone(&databases), Arc::clone(&endpoints));
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let _ = build_from_dir(Arc::clone(&databases), Arc::clone(&endpoints));
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 26.03s
[INFO] running `Command { std: "docker" "inspect" "6b28ee0f7df72599b2e33ff2c74662d0250a72a5944cc582e249e4f51f2499e7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6b28ee0f7df72599b2e33ff2c74662d0250a72a5944cc582e249e4f51f2499e7", kill_on_drop: false }`
[INFO] [stdout] 6b28ee0f7df72599b2e33ff2c74662d0250a72a5944cc582e249e4f51f2499e7
