[INFO] cloning repository https://github.com/ordepdev/simpledb-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ordepdev/simpledb-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fordepdev%2Fsimpledb-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fordepdev%2Fsimpledb-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 38b91d3ebcb9314737ac382257bbc56b162565a7
[INFO] checking ordepdev/simpledb-rs against 895980e0290783bb09b1ccf1b11f14eb09b10430 for pr-160186
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fordepdev%2Fsimpledb-rs" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ordepdev/simpledb-rs
[INFO] finished tweaking git repo https://github.com/ordepdev/simpledb-rs
[INFO] tweaked toml for git repo https://github.com/ordepdev/simpledb-rs written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ordepdev/simpledb-rs on toolchain 895980e0290783bb09b1ccf1b11f14eb09b10430
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+895980e0290783bb09b1ccf1b11f14eb09b10430" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ordepdev/simpledb-rs 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" "+895980e0290783bb09b1ccf1b11f14eb09b10430" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] debd185b174f8d22a128ee13e2fbd30b26bca6004acc54afbd4e2460eb944c3e
[INFO] running `Command { std: "docker" "start" "debd185b174f8d22a128ee13e2fbd30b26bca6004acc54afbd4e2460eb944c3e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "debd185b174f8d22a128ee13e2fbd30b26bca6004acc54afbd4e2460eb944c3e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "debd185b174f8d22a128ee13e2fbd30b26bca6004acc54afbd4e2460eb944c3e" "/opt/rustwide/cargo-home/bin/cargo" "+895980e0290783bb09b1ccf1b11f14eb09b10430" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "debd185b174f8d22a128ee13e2fbd30b26bca6004acc54afbd4e2460eb944c3e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "debd185b174f8d22a128ee13e2fbd30b26bca6004acc54afbd4e2460eb944c3e" "/opt/rustwide/cargo-home/bin/cargo" "+895980e0290783bb09b1ccf1b11f14eb09b10430" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.171
[INFO] [stderr]    Compiling zerocopy v0.8.23
[INFO] [stderr]    Compiling getrandom v0.3.2
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.0
[INFO] [stderr]     Checking simpledb v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::file::filemgr::FileMgr`
[INFO] [stdout]    --> src/log/logmgr.rs:108:9
[INFO] [stdout]     |
[INFO] [stdout] 108 |     use crate::file::filemgr::FileMgr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]    --> src/log/logmgr.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 |     use std::path::PathBuf;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]    --> src/buffer/buffer.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout] 104 |     use std::path::PathBuf;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/buffer/buffer.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]    --> src/buffer/buffer.rs:106:9
[INFO] [stdout]     |
[INFO] [stdout] 106 |     use std::sync::Arc;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::file::filemgr::FileMgr`
[INFO] [stdout]    --> src/buffer/buffer.rs:107:9
[INFO] [stdout]     |
[INFO] [stdout] 107 |     use crate::file::filemgr::FileMgr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::log::logmgr::LogMgr`
[INFO] [stdout]    --> src/buffer/buffer.rs:108:9
[INFO] [stdout]     |
[INFO] [stdout] 108 |     use crate::log::logmgr::LogMgr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/buffer/buffermgr.rs:144:9
[INFO] [stdout]     |
[INFO] [stdout] 144 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::file::filemgr::FileMgr`
[INFO] [stdout]    --> src/buffer/buffermgr.rs:145:9
[INFO] [stdout]     |
[INFO] [stdout] 145 |     use crate::file::filemgr::FileMgr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::log::logmgr::LogMgr`
[INFO] [stdout]    --> src/buffer/buffermgr.rs:146:9
[INFO] [stdout]     |
[INFO] [stdout] 146 |     use crate::log::logmgr::LogMgr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]    --> src/buffer/buffermgr.rs:147:9
[INFO] [stdout]     |
[INFO] [stdout] 147 |     use std::path::PathBuf;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]    --> src/buffer/buffermgr.rs:148:9
[INFO] [stdout]     |
[INFO] [stdout] 148 |     use std::sync::Arc;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Deref`
[INFO] [stdout]  --> src/file/filemgr.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::Deref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/file/filemgr.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 127 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/file/blockid.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/file/page.rs:80:9
[INFO] [stdout]    |
[INFO] [stdout] 80 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::buffer::buffer::Buffer`
[INFO] [stdout]  --> src/tx/bufferlist.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::buffer::buffer::Buffer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::buffer::buffermgr::BufferMgr`
[INFO] [stdout]    --> src/tx/transaction.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     use crate::buffer::buffermgr::BufferMgr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]    --> src/tx/transaction.rs:192:9
[INFO] [stdout]     |
[INFO] [stdout] 192 |     use std::path::PathBuf;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]    --> src/tx/transaction.rs:194:9
[INFO] [stdout]     |
[INFO] [stdout] 194 |     use std::thread;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `current` and `sleep`
[INFO] [stdout]    --> src/tx/transaction.rs:195:23
[INFO] [stdout]     |
[INFO] [stdout] 195 |     use std::thread::{current, sleep};
[INFO] [stdout]     |                       ^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> src/tx/recovery/logrecord.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Formatter`
[INFO] [stdout]  --> src/tx/recovery/logrecord.rs:2:25
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{Display, Formatter};
[INFO] [stdout]   |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/record/layout.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]    --> src/record/recordpage.rs:123:9
[INFO] [stdout]     |
[INFO] [stdout] 123 |     use std::path::PathBuf;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/record/recordpage.rs:124:9
[INFO] [stdout]     |
[INFO] [stdout] 124 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::file::filemgr::FileMgr`
[INFO] [stdout]    --> src/record/recordpage.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 125 |     use crate::file::filemgr::FileMgr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::record::schema::Schema`
[INFO] [stdout]    --> src/record/recordpage.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |     use crate::record::schema::Schema;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]    --> src/record/recordpage.rs:127:21
[INFO] [stdout]     |
[INFO] [stdout] 127 |     use std::sync::{Arc, Mutex};
[INFO] [stdout]     |                     ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]    --> src/record/recordpage.rs:128:9
[INFO] [stdout]     |
[INFO] [stdout] 128 |     use rand::Rng;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::buffer::buffermgr::BufferMgr`
[INFO] [stdout]    --> src/record/recordpage.rs:129:9
[INFO] [stdout]     |
[INFO] [stdout] 129 |     use crate::buffer::buffermgr::BufferMgr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::log::logmgr::LogMgr`
[INFO] [stdout]    --> src/record/recordpage.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |     use crate::log::logmgr::LogMgr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]    --> src/record/tablescan.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 188 |     use std::path::PathBuf;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]    --> src/record/tablescan.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     use rand::Rng;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::buffer::buffermgr::BufferMgr`
[INFO] [stdout]    --> src/record/tablescan.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     use crate::buffer::buffermgr::BufferMgr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::file::filemgr::FileMgr`
[INFO] [stdout]    --> src/record/tablescan.rs:191:9
[INFO] [stdout]     |
[INFO] [stdout] 191 |     use crate::file::filemgr::FileMgr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::log::logmgr::LogMgr`
[INFO] [stdout]    --> src/record/tablescan.rs:192:9
[INFO] [stdout]     |
[INFO] [stdout] 192 |     use crate::log::logmgr::LogMgr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/record/tablescan.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 193 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::record::schema::Schema`
[INFO] [stdout]    --> src/record/tablescan.rs:194:9
[INFO] [stdout]     |
[INFO] [stdout] 194 |     use crate::record::schema::Schema;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]   --> src/metadata/tablemgr.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |     use std::path::PathBuf;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::buffer::buffermgr::BufferMgr`
[INFO] [stdout]   --> src/metadata/tablemgr.rs:92:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |     use crate::buffer::buffermgr::BufferMgr;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::file::filemgr::FileMgr`
[INFO] [stdout]   --> src/metadata/tablemgr.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 93 |     use crate::file::filemgr::FileMgr;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::log::logmgr::LogMgr`
[INFO] [stdout]   --> src/metadata/tablemgr.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     use crate::log::logmgr::LogMgr;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/metadata/tablemgr.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Deref`
[INFO] [stdout]  --> src/file/filemgr.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::Deref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::buffer::buffer::Buffer`
[INFO] [stdout]  --> src/tx/bufferlist.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::buffer::buffer::Buffer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `current`
[INFO] [stdout]    --> src/tx/transaction.rs:195:23
[INFO] [stdout]     |
[INFO] [stdout] 195 |     use std::thread::{current, sleep};
[INFO] [stdout]     |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> src/tx/recovery/logrecord.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Formatter`
[INFO] [stdout]  --> src/tx/recovery/logrecord.rs:2:25
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{Display, Formatter};
[INFO] [stdout]   |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tx/concurrency/locktable.rs:24:13
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let mut elapsed = start.elapsed().unwrap().as_millis();
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tx/concurrency/locktable.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |         let mut elapsed = start.elapsed().unwrap().as_millis();
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RecordId` is more private than the item `UpdateScan::rid`
[INFO] [stdout]   --> src/record/tablescan.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn rid(&self) -> Option<RecordId>;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `UpdateScan::rid` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `RecordId` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/record/tablescan.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | struct RecordId {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RecordId` is more private than the item `UpdateScan::move_to_rid`
[INFO] [stdout]   --> src/record/tablescan.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn move_to_rid(&mut self, rid: &RecordId);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `UpdateScan::move_to_rid` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `RecordId` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/record/tablescan.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | struct RecordId {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RecordId` is more private than the item `<TableScan as UpdateScan>::rid`
[INFO] [stdout]    --> src/record/tablescan.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     fn rid(&self) -> Option<RecordId>{
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<TableScan as UpdateScan>::rid` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RecordId` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/record/tablescan.rs:8:1
[INFO] [stdout]     |
[INFO] [stdout]   8 | struct RecordId {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RecordId` is more private than the item `<TableScan as UpdateScan>::move_to_rid`
[INFO] [stdout]    --> src/record/tablescan.rs:179:5
[INFO] [stdout]     |
[INFO] [stdout] 179 |     fn move_to_rid(&mut self, rid: &RecordId) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<TableScan as UpdateScan>::move_to_rid` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RecordId` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/record/tablescan.rs:8:1
[INFO] [stdout]     |
[INFO] [stdout]   8 | struct RecordId {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LogIterator` is never constructed
[INFO] [stdout]  --> src/log/logiterator.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct LogIterator {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `move_to_block` are never used
[INFO] [stdout]   --> src/log/logiterator.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl LogIterator {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new(fm: Arc<FileMgr>, block: &BlockId) -> LogIterator {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     fn move_to_block(&mut self, block: &BlockId) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LogMgr` is never constructed
[INFO] [stdout]   --> src/log/logmgr.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct LogMgr {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `flush_record`, `append`, `iterator`, `append_new_block`, and `flush` are never used
[INFO] [stdout]    --> src/log/logmgr.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl LogMgr {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  25 |     pub fn new(fm: Arc<FileMgr>, file: &str) -> LogMgr {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub(crate) fn flush_record(&mut self, lsn: i32) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub(crate) fn append(&mut self, record: &Vec<u8>) -> i32 {
[INFO] [stdout]     |                   ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub(crate) fn iterator(&mut self) -> LogIterator {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     fn append_new_block(&mut self) -> BlockId {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     fn flush(&mut self) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_log_records` is never used
[INFO] [stdout]    --> src/log/logmgr.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 |     fn print_log_records(lm: &mut LogMgr, message: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_log_records` is never used
[INFO] [stdout]    --> src/log/logmgr.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 135 |     fn create_log_records(lm: &mut LogMgr, start: u32, end: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_log_record` is never used
[INFO] [stdout]    --> src/log/logmgr.rs:145:8
[INFO] [stdout]     |
[INFO] [stdout] 145 |     fn create_log_record(string: &str, number: u32) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Buffer` is never constructed
[INFO] [stdout]   --> src/buffer/buffer.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Buffer {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/buffer/buffer.rs:28:19
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Buffer {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub(crate) fn new(fm: Arc<FileMgr>, lm: Arc<Mutex<LogMgr>>) -> Buffer {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub(crate) fn contents(&mut self) -> &mut Page {
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub(crate) fn block(&self) -> &Option<BlockId> {
[INFO] [stdout]    |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub(crate) fn set_modified(&mut self, txnum: i32, lsn: i32) {
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub(crate) fn is_pinned(&self) -> bool {
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub(crate) fn transaction(&self) -> Option<i32> {
[INFO] [stdout]    |                   ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub(crate) fn flush(&mut self) {
[INFO] [stdout]    |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub(crate) fn assign_to_block(&mut self, block: BlockId) {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub(crate) fn pin(&mut self) {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub(crate) fn unpin(&mut self) {
[INFO] [stdout]    |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BufferMgr` is never constructed
[INFO] [stdout]  --> src/buffer/buffermgr.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) struct BufferMgr {
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/buffer/buffermgr.rs:16:10
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl BufferMgr {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  16 |    const MAX_TIME : u128 = 10000;
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub(crate) fn new(fm: Arc<FileMgr>, lm: Arc<Mutex<LogMgr>>, buffsize:  usize) -> BufferMgr {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn buffer(&mut self, idx: usize) -> &mut Buffer {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub(crate) fn available(&self) -> usize {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn flush_all(&mut self, txnum: i32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub(crate) fn unpin(&mut self, idx: usize) {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub(crate) fn pin(&mut self, block: &BlockId) -> Result<usize, &str> {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     fn try_pin(&mut self, block: &BlockId) -> Option<usize> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn find_existing_buffer(&self, block: &BlockId) -> Option<usize> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     fn choose_unpinned_buffer(&mut self) -> Option<usize> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileMgr` is never constructed
[INFO] [stdout]   --> src/file/filemgr.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct FileMgr {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/file/filemgr.rs:20:19
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl FileMgr {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 20 |     pub(crate) fn new(db_dir: PathBuf, block_size: usize) -> FileMgr {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub(crate) fn read(&self, block: &BlockId, page: &mut Page) {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub(crate) fn write(&self, block: &BlockId, page: &Page) {
[INFO] [stdout]    |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub(crate) fn append(&self, filename: &str) -> BlockId {
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     fn open_file(&self, path: PathBuf) -> File {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub(crate) fn length(&self, file: &str) -> u32 {
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub(crate) fn block_size(&self) -> usize {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub(crate) fn stats(&self) -> Stats {
[INFO] [stdout]    |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Stats` is never constructed
[INFO] [stdout]   --> src/file/filemgr.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct Stats {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `read_blocks`, `written_blocks`, `increment_read_blocks`, and `increment_written_blocks` are never used
[INFO] [stdout]    --> src/file/filemgr.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 103 | impl Stats {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 104 |     fn new() -> Stats {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     fn read_blocks(&self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     fn written_blocks(&self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     fn increment_read_blocks(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     fn increment_written_blocks(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BlockId` is never constructed
[INFO] [stdout]  --> src/file/blockid.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct BlockId {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `filename`, and `number` are never used
[INFO] [stdout]   --> src/file/blockid.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl BlockId {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 10 |     pub fn new(filename: &str, number: usize) -> BlockId {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub fn filename(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn number(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Page` is never constructed
[INFO] [stdout]  --> src/file/page.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct Page {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/file/page.rs:6:12
[INFO] [stdout]    |
[INFO] [stdout]  5 | impl Page {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout]  6 |     pub fn new(blocksize: usize) -> Page {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub fn wrap(bytes: Vec<u8>) -> Page {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub fn get_byte(&self, offset: usize) -> Option<u8> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn set_byte(&mut self, offset: usize, value: u8) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn get_bytes(&self, offset: usize) -> &[u8] {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn set_bytes(&mut self, offset: usize, value: &[u8]) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn get_int(&self, offset: usize) -> i32 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn set_int(&mut self, offset: usize, value: i32) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn get_long(&self, offset: usize) -> i64 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn set_long(&mut self, offset: usize, value: i64) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn get_string(&self, offset: usize) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn set_string(&mut self, offset: usize, value: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn set_bool(&mut self, offset: usize, value: bool) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn get_bool(&self, offset: usize) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn max_length(strlen: usize) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub(crate) fn contents(&mut self) -> &mut Vec<u8> {
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BufferList` is never constructed
[INFO] [stdout]  --> src/tx/bufferlist.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct BufferList {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `buffer`, `pin`, `unpin`, and `unpin_all` are never used
[INFO] [stdout]   --> src/tx/bufferlist.rs:15:19
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl BufferList {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 14 |
[INFO] [stdout] 15 |     pub(crate) fn new(bm: Arc<Mutex<BufferMgr>>) -> BufferList {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub(crate) fn buffer(&mut self, blk: &BlockId) -> Option<usize> {
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub(crate) fn pin(&mut self, blk: &BlockId) {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub(crate) fn unpin(&mut self, blk: &BlockId) {
[INFO] [stdout]    |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub(crate) fn unpin_all(&mut self) {
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Transaction` is never constructed
[INFO] [stdout]   --> src/tx/transaction.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Transaction {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NEXT_TXNUM` is never used
[INFO] [stdout]   --> src/tx/transaction.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | static NEXT_TXNUM: AtomicI32 = AtomicI32::new(0);
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/tx/transaction.rs:27:11
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl Transaction {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  27 |     const END_OF_FILE: i32 = -1;
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout]  28 |
[INFO] [stdout]  29 |     pub(crate) fn new(fm: Arc<FileMgr>, bm: Arc<Mutex<BufferMgr>>, lm: Arc<Mutex<LogMgr>>) -> Transaction {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub(crate) fn commit(&mut self) {
[INFO] [stdout]     |                   ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     fn rollback(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     fn do_rollback(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     fn recover(&mut self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     fn do_recover(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub(crate) fn pin(&mut self, blk: &BlockId) {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub(crate) fn unpin(&mut self, blk: &BlockId) {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn get_int(&mut self, blk: &BlockId, offset: usize) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub(crate) fn set_int(&mut self, blk: &BlockId, offset: usize, val: i32, log: bool) {
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub(crate) fn get_string(&mut self, blk: &BlockId, offset: usize) -> Option<String> {
[INFO] [stdout]     |                   ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub(crate) fn set_string(&mut self, blk: &BlockId, offset: usize, val: &str, log: bool) {
[INFO] [stdout]     |                   ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn size(&mut self, filename: &str) -> usize {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn append(&mut self, filename: &str) -> BlockId {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn block_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     fn available_buffers(&self) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `next_txnum` is never used
[INFO] [stdout]    --> src/tx/transaction.rs:182:4
[INFO] [stdout]     |
[INFO] [stdout] 182 | fn next_txnum() -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_values` is never used
[INFO] [stdout]    --> src/tx/transaction.rs:363:8
[INFO] [stdout]     |
[INFO] [stdout] 363 |     fn print_values(msg: &str, fm: &Arc<FileMgr>, blk0: &BlockId, blk1: &BlockId) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_log_file` is never used
[INFO] [stdout]    --> src/tx/transaction.rs:377:8
[INFO] [stdout]     |
[INFO] [stdout] 377 |     fn print_log_file(fm: &Arc<FileMgr>, lm: &Arc<Mutex<LogMgr>>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RecoveryMgr` is never constructed
[INFO] [stdout]   --> src/tx/recovery/recoverymgr.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct RecoveryMgr {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `commit`, `rollback`, `recover`, `set_int`, and `set_string` are never used
[INFO] [stdout]   --> src/tx/recovery/recoverymgr.rs:19:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl RecoveryMgr {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 19 |     pub(crate) fn new(txnum: i32, lm: Arc<Mutex<LogMgr>>, bm: Arc<Mutex<BufferMgr>>) -> RecoveryMgr {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub(crate) fn commit(&self) {
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub(crate) fn rollback(&self) {
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub(crate) fn recover(&self) {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub(crate) fn set_int(&self, buffer: &mut Buffer, offset: usize, _newval: i32) -> i32 {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub(crate) fn set_string(&self, buffer: &mut Buffer, offset: usize, _newval: &str) -> i32 {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Op` is never used
[INFO] [stdout]   --> src/tx/recovery/logrecord.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum Op {
[INFO] [stdout]    |          ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `LogRecord` is never used
[INFO] [stdout]   --> src/tx/recovery/logrecord.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub trait LogRecord: Display {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_log_record` is never used
[INFO] [stdout]   --> src/tx/recovery/logrecord.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn create_log_record(bytes: Vec<u8>) -> Option<Box<dyn LogRecord>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CheckpointRecord` is never constructed
[INFO] [stdout]  --> src/tx/recovery/checkpointrecord.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct CheckpointRecord {}
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `write_to_log` are never used
[INFO] [stdout]   --> src/tx/recovery/checkpointrecord.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl CheckpointRecord {
[INFO] [stdout]    | --------------------- associated functions in this implementation
[INFO] [stdout] 25 |     pub fn new() -> CheckpointRecord {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn write_to_log(lm: &Arc<Mutex<LogMgr>>) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StartRecord` is never constructed
[INFO] [stdout]  --> src/tx/recovery/startrecord.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct StartRecord {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `write_to_log` are never used
[INFO] [stdout]   --> src/tx/recovery/startrecord.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl StartRecord {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout] 27 |     pub fn new(page: Page) -> StartRecord {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn write_to_log(lm: &Arc<Mutex<LogMgr>>, txnum: i32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommitRecord` is never constructed
[INFO] [stdout]  --> src/tx/recovery/commitrecord.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct CommitRecord {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `write_to_log` are never used
[INFO] [stdout]   --> src/tx/recovery/commitrecord.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl CommitRecord {
[INFO] [stdout]    | ----------------- associated functions in this implementation
[INFO] [stdout] 27 |     pub fn new(page: Page) -> CommitRecord {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn write_to_log(lm: &Arc<Mutex<LogMgr>>, txnum: i32) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RollbackRecord` is never constructed
[INFO] [stdout]  --> src/tx/recovery/rollbackrecord.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct RollbackRecord {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `write_to_log` are never used
[INFO] [stdout]   --> src/tx/recovery/rollbackrecord.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RollbackRecord {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] 27 |     pub fn new(page: Page) -> RollbackRecord {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn write_to_log(lm: &Arc<Mutex<LogMgr>>, txnum: i32) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetIntRecord` is never constructed
[INFO] [stdout]  --> src/tx/recovery/setintrecord.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct SetIntRecord {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `write_to_log` are never used
[INFO] [stdout]   --> src/tx/recovery/setintrecord.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl SetIntRecord {
[INFO] [stdout]    | ----------------- associated functions in this implementation
[INFO] [stdout] 34 |     pub fn new(page: Page) -> SetIntRecord {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn write_to_log(lm: &Arc<Mutex<LogMgr>>, txnum: i32, blk: BlockId, offset: usize, val: i32) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetStringRecord` is never constructed
[INFO] [stdout]  --> src/tx/recovery/setstringrecord.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct SetStringRecord {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `write_to_log` are never used
[INFO] [stdout]   --> src/tx/recovery/setstringrecord.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl SetStringRecord {
[INFO] [stdout]    | -------------------- associated functions in this implementation
[INFO] [stdout] 34 |     pub fn new(page: Page) -> SetStringRecord {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn write_to_log(lm: &Arc<Mutex<LogMgr>>, txnum: i32, blk: BlockId, offset: usize, val: &str) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LockType` is never used
[INFO] [stdout]  --> src/tx/concurrency/concurrencymgr.rs:8:6
[INFO] [stdout]   |
[INFO] [stdout] 8 | enum LockType {
[INFO] [stdout]   |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConcurrencyMgr` is never constructed
[INFO] [stdout]   --> src/tx/concurrency/concurrencymgr.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ConcurrencyMgr {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `LOCK_TABLE` is never used
[INFO] [stdout]   --> src/tx/concurrency/concurrencymgr.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | static LOCK_TABLE: LazyLock<Mutex<LockTable>> = LazyLock::new(|| Mutex::new(LockTable::new()));
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `slock`, `xlock`, `release`, and `has_xlock` are never used
[INFO] [stdout]   --> src/tx/concurrency/concurrencymgr.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl ConcurrencyMgr {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 20 |     pub fn new() -> ConcurrencyMgr {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn slock(&mut self, blk: &BlockId) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn xlock(&mut self, blk: &BlockId) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn release(&mut self) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     fn has_xlock(&self, blk: &BlockId) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LockTable` is never constructed
[INFO] [stdout]  --> src/tx/concurrency/locktable.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct LockTable {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/tx/concurrency/locktable.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl LockTable {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 12 |
[INFO] [stdout] 13 |     const MAX_TIME : u128 = 10000;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 14 |
[INFO] [stdout] 15 |     pub fn new() -> LockTable {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn slock(&mut self, blk: &BlockId) -> Result<(), &str> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn xlock(&mut self, blk: &BlockId) -> Result<(), &str> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn unlock(&mut self, blk: &BlockId) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     fn has_xlock(&self, blk: &BlockId) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     fn has_other_slocks(&self, blk: &BlockId) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FieldType` is never used
[INFO] [stdout]  --> src/record/schema.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub enum FieldType {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FieldInfo` is never constructed
[INFO] [stdout]  --> src/record/schema.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | struct FieldInfo {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Schema` is never constructed
[INFO] [stdout]   --> src/record/schema.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Schema {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/record/schema.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Schema {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 24 |     pub fn new() -> Schema {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn add_field(&mut self, field: &str, ftype: i32, length: i32) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn add_int_field(&mut self, field: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn add_string_field(&mut self, field: &str, length: i32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn add(&mut self, field: &str, schema: &Schema) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn add_all(&mut self, schema: &Schema) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn fields(&self) -> Vec<String> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn has_field(&self, field: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn ftype(&self, field: &str) -> i32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn length(&self, field: &str) -> i32 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Layout` is never constructed
[INFO] [stdout]  --> src/record/layout.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Layout {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `from`, `offset`, `slot_size`, and `schema` are never used
[INFO] [stdout]   --> src/record/layout.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Layout {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(schema: Schema) -> Layout {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn from(schema: Schema, offsets: HashMap<String, i32>, slot_size: i32) -> Layout {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn offset(&self, field: &str) -> i32 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn slot_size(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn schema(&self) -> &Schema {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Slot` is never used
[INFO] [stdout]  --> src/record/recordpage.rs:7:6
[INFO] [stdout]   |
[INFO] [stdout] 7 | enum Slot {
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RecordPage` is never constructed
[INFO] [stdout]   --> src/record/recordpage.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub(crate) struct RecordPage {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/record/recordpage.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl RecordPage {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  23 |     pub fn new(tx: Arc<Mutex<Transaction>>, block_id: BlockId, layout: Layout) -> RecordPage {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  28 |     pub(crate) fn get_int(&mut self, slot: i32, field: &str) -> i32 {
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub(crate) fn set_int(&mut self, slot: i32, field: &str, val: i32) {
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub(crate) fn get_string(&mut self, slot: i32, field: &str) -> String {
[INFO] [stdout]     |                   ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub(crate) fn set_string(&mut self, slot: i32, field: &str, val: &str) {
[INFO] [stdout]     |                   ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub fn next_after(&mut self, slot: Option<i32>) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn insert_after(&mut self, slot: Option<i32>) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn delete(&mut self, slot: i32) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn format(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn block_id(&self) -> &BlockId {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     fn set_flag(&mut self, slot: i32, flag: Slot) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     fn search_after(&mut self, slot: Option<i32>, flag: Slot) -> Option<i32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn is_valid_slot(&self, slot: i32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     fn offset(&self, slot: i32) -> i32 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RecordId` is never constructed
[INFO] [stdout]  --> src/record/tablescan.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct RecordId {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `UpdateScan` is never used
[INFO] [stdout]   --> src/record/tablescan.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait UpdateScan {
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TableScan` is never constructed
[INFO] [stdout]   --> src/record/tablescan.rs:22:19
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub(crate) struct TableScan {
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/record/tablescan.rs:34:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl TableScan {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  34 |     pub fn new(tx: Arc<Mutex<Transaction>>, layout: Layout, table: &str) -> TableScan {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     fn before_first(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub(crate) fn next(&mut self) -> bool {
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub(crate) fn get_int(&mut self, field: &str) -> i32 {
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub(crate) fn get_string(&mut self, field: &str) -> String {
[INFO] [stdout]     |                   ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     fn has_field(&self, field: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn close(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     fn move_to_block(&mut self, block_num: i32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn move_to_new_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     fn at_last_block(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TableMgr` is never constructed
[INFO] [stdout]  --> src/metadata/tablemgr.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | struct TableMgr {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `MAX_NAME`, `new`, `create_table`, and `layout` are never used
[INFO] [stdout]   --> src/metadata/tablemgr.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl TableMgr {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 13 |
[INFO] [stdout] 14 |     const MAX_NAME: i32 = 16;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 15 |
[INFO] [stdout] 16 |     fn new (is_new: bool, tx: Arc<Mutex<Transaction>>) -> TableMgr {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     fn create_table(&self, name: &str, schema: &Schema, tx: Arc<Mutex<Transaction>>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     fn layout(&self, table: &str, tx: Arc<Mutex<Transaction>>) -> Layout {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tx/concurrency/locktable.rs:24:13
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let mut elapsed = start.elapsed().unwrap().as_millis();
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tx/concurrency/locktable.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |         let mut elapsed = start.elapsed().unwrap().as_millis();
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/record/recordpage.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut tx = Arc::new(Mutex::new(Transaction::new(fm.clone(), bm.clone(), lm.clone())));
[INFO] [stdout]     |             ----^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/record/tablescan.rs:201:13
[INFO] [stdout]     |
[INFO] [stdout] 201 |         let mut tx = Arc::new(Mutex::new(Transaction::new(fm.clone(), bm.clone(), lm.clone())));
[INFO] [stdout]     |             ----^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/record/tablescan.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         for i in 0..50 {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/metadata/tablemgr.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let mut tx = Arc::new(Mutex::new(Transaction::new(fm.clone(), bm.clone(), lm.clone())));
[INFO] [stdout]     |             ----^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RecordId` is more private than the item `tablescan::UpdateScan::rid`
[INFO] [stdout]   --> src/record/tablescan.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn rid(&self) -> Option<RecordId>;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `tablescan::UpdateScan::rid` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `RecordId` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/record/tablescan.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | struct RecordId {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RecordId` is more private than the item `tablescan::UpdateScan::move_to_rid`
[INFO] [stdout]   --> src/record/tablescan.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn move_to_rid(&mut self, rid: &RecordId);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `tablescan::UpdateScan::move_to_rid` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `RecordId` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/record/tablescan.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | struct RecordId {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RecordId` is more private than the item `<tablescan::TableScan as tablescan::UpdateScan>::rid`
[INFO] [stdout]    --> src/record/tablescan.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     fn rid(&self) -> Option<RecordId>{
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<tablescan::TableScan as tablescan::UpdateScan>::rid` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RecordId` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/record/tablescan.rs:8:1
[INFO] [stdout]     |
[INFO] [stdout]   8 | struct RecordId {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RecordId` is more private than the item `<tablescan::TableScan as tablescan::UpdateScan>::move_to_rid`
[INFO] [stdout]    --> src/record/tablescan.rs:179:5
[INFO] [stdout]     |
[INFO] [stdout] 179 |     fn move_to_rid(&mut self, rid: &RecordId) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<tablescan::TableScan as tablescan::UpdateScan>::move_to_rid` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RecordId` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/record/tablescan.rs:8:1
[INFO] [stdout]     |
[INFO] [stdout]   8 | struct RecordId {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `available_buffers` is never used
[INFO] [stdout]    --> src/tx/transaction.rs:177:8
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl Transaction {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 177 |     fn available_buffers(&self) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `rollback` and `recover` are never used
[INFO] [stdout]   --> src/tx/recovery/recoverymgr.rs:30:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl RecoveryMgr {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub(crate) fn rollback(&self) {
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub(crate) fn recover(&self) {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `xlock` and `has_other_slocks` are never used
[INFO] [stdout]   --> src/tx/concurrency/locktable.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl LockTable {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn xlock(&mut self, blk: &BlockId) -> Result<(), &str> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     fn has_other_slocks(&self, blk: &BlockId) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add`, `add_all`, and `has_field` are never used
[INFO] [stdout]   --> src/record/schema.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Schema {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn add(&mut self, field: &str, schema: &Schema) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn add_all(&mut self, schema: &Schema) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn has_field(&self, field: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `blocknum` and `slot` are never read
[INFO] [stdout]   --> src/record/tablescan.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | struct RecordId {
[INFO] [stdout]    |        -------- fields in this struct
[INFO] [stdout]  9 |     blocknum: i32,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 10 |     slot: i32,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RecordId` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `move_to_rid` is never used
[INFO] [stdout]   --> src/record/tablescan.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait UpdateScan {
[INFO] [stdout]    |           ---------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 19 |     fn move_to_rid(&mut self, rid: &RecordId);
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_field` is never used
[INFO] [stdout]   --> src/record/tablescan.rs:89:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl TableScan {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 89 |     fn has_field(&self, field: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `txA` should have a snake case name
[INFO] [stdout]    --> src/tx/transaction.rs:297:17
[INFO] [stdout]     |
[INFO] [stdout] 297 |         let mut txA = Transaction::new(fm.clone(), bm.clone(), lm.clone());
[INFO] [stdout]     |                 ^^^ help: convert the identifier to snake case: `tx_a`
[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 `txB` should have a snake case name
[INFO] [stdout]    --> src/tx/transaction.rs:298:17
[INFO] [stdout]     |
[INFO] [stdout] 298 |         let mut txB = Transaction::new(fm.clone(), bm.clone(), lm.clone());
[INFO] [stdout]     |                 ^^^ help: convert the identifier to snake case: `tx_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `txC` should have a snake case name
[INFO] [stdout]    --> src/tx/transaction.rs:299:17
[INFO] [stdout]     |
[INFO] [stdout] 299 |         let mut txC = Transaction::new(fm.clone(), bm.clone(), lm.clone());
[INFO] [stdout]     |                 ^^^ help: convert the identifier to snake case: `tx_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]    --> src/tx/transaction.rs:301:13
[INFO] [stdout]     |
[INFO] [stdout] 301 |         let A = thread::spawn(move || {
[INFO] [stdout]     |             ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `B` should have a snake case name
[INFO] [stdout]    --> src/tx/transaction.rs:317:13
[INFO] [stdout]     |
[INFO] [stdout] 317 |         let B = thread::spawn(move || {
[INFO] [stdout]     |             ^ help: convert the identifier to snake case: `b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `C` should have a snake case name
[INFO] [stdout]    --> src/tx/transaction.rs:333:13
[INFO] [stdout]     |
[INFO] [stdout] 333 |         let C = thread::spawn(move || {
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.00s
[INFO] running `Command { std: "docker" "inspect" "debd185b174f8d22a128ee13e2fbd30b26bca6004acc54afbd4e2460eb944c3e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "debd185b174f8d22a128ee13e2fbd30b26bca6004acc54afbd4e2460eb944c3e", kill_on_drop: false }`
[INFO] [stdout] debd185b174f8d22a128ee13e2fbd30b26bca6004acc54afbd4e2460eb944c3e
