[INFO] cloning repository https://github.com/floooptimism/rust-banking [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/floooptimism/rust-banking" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffloooptimism%2Frust-banking", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffloooptimism%2Frust-banking'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 7014e1ad2b86283d8e48b942d7994a0e87da092b [INFO] testing floooptimism/rust-banking against 1.99.0-beta.8 for beta-1.100-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffloooptimism%2Frust-banking" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/floooptimism/rust-banking [INFO] finished tweaking git repo https://github.com/floooptimism/rust-banking [INFO] tweaked toml for git repo https://github.com/floooptimism/rust-banking written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/floooptimism/rust-banking on toolchain 1.99.0-beta.8 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/floooptimism/rust-banking 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" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded sha256 v1.4.0 [INFO] [stderr] Downloaded unicode-width v0.1.11 [INFO] [stderr] Downloaded strum v0.25.0 [INFO] [stderr] Downloaded indoc v2.0.4 [INFO] [stderr] Downloaded signal-hook-mio v0.2.3 [INFO] [stderr] Downloaded strum_macros v0.25.3 [INFO] [stderr] Downloaded lru v0.12.0 [INFO] [stderr] Downloaded signal-hook v0.3.17 [INFO] [stderr] Downloaded zerocopy v0.7.15 [INFO] [stderr] Downloaded syn v2.0.38 [INFO] [stderr] Downloaded ratatui v0.24.0 [INFO] [stderr] Downloaded zerocopy-derive v0.7.15 [INFO] [stderr] Downloaded libc v0.2.149 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 3e502166aadf038c1f48789c3fd4b9d007968fed3979a8fc2cbeb3ac629da5d9 [INFO] running `Command { std: "docker" "start" "3e502166aadf038c1f48789c3fd4b9d007968fed3979a8fc2cbeb3ac629da5d9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3e502166aadf038c1f48789c3fd4b9d007968fed3979a8fc2cbeb3ac629da5d9", 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" "3e502166aadf038c1f48789c3fd4b9d007968fed3979a8fc2cbeb3ac629da5d9" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3e502166aadf038c1f48789c3fd4b9d007968fed3979a8fc2cbeb3ac629da5d9", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3e502166aadf038c1f48789c3fd4b9d007968fed3979a8fc2cbeb3ac629da5d9" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.149 [INFO] [stderr] Compiling proc-macro2 v1.0.69 [INFO] [stderr] Compiling autocfg v1.1.0 [INFO] [stderr] Compiling ahash v0.8.6 [INFO] [stderr] Compiling parking_lot_core v0.9.9 [INFO] [stderr] Compiling rustversion v1.0.14 [INFO] [stderr] Compiling signal-hook v0.3.17 [INFO] [stderr] Compiling smallvec v1.11.1 [INFO] [stderr] Compiling zerocopy v0.7.15 [INFO] [stderr] Compiling once_cell v1.18.0 [INFO] [stderr] Compiling log v0.4.20 [INFO] [stderr] Compiling heck v0.4.1 [INFO] [stderr] Compiling paste v1.0.14 [INFO] [stderr] Compiling allocator-api2 v0.2.16 [INFO] [stderr] Compiling async-trait v0.1.74 [INFO] [stderr] Compiling crypto-common v0.1.6 [INFO] [stderr] Compiling either v1.9.0 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling bitflags v2.4.1 [INFO] [stderr] Compiling pin-project-lite v0.2.13 [INFO] [stderr] Compiling cpufeatures v0.2.11 [INFO] [stderr] Compiling bytes v1.5.0 [INFO] [stderr] Compiling unicode-width v0.1.11 [INFO] [stderr] Compiling unicode-segmentation v1.10.1 [INFO] [stderr] Compiling indoc v2.0.4 [INFO] [stderr] Compiling itertools v0.11.0 [INFO] [stderr] Compiling sha2 v0.10.8 [INFO] [stderr] Compiling cassowary v0.3.0 [INFO] [stderr] Compiling hashbrown v0.14.2 [INFO] [stderr] Compiling lock_api v0.4.11 [INFO] [stderr] Compiling tokio v1.33.0 [INFO] [stderr] Compiling signal-hook-registry v1.4.1 [INFO] [stderr] Compiling mio v0.8.9 [INFO] [stderr] Compiling quote v1.0.33 [INFO] [stderr] Compiling parking_lot v0.12.1 [INFO] [stderr] Compiling lru v0.12.0 [INFO] [stderr] Compiling syn v2.0.38 [INFO] [stderr] Compiling signal-hook-mio v0.2.3 [INFO] [stderr] Compiling crossterm v0.27.0 [INFO] [stderr] Compiling strum_macros v0.25.3 [INFO] [stderr] Compiling sha256 v1.4.0 [INFO] [stderr] Compiling strum v0.25.0 [INFO] [stderr] Compiling ratatui v0.24.0 [INFO] [stderr] Compiling banking v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `cursor::Show` [INFO] [stdout] --> src/main.rs:3:40 [INFO] [stdout] | [INFO] [stdout] 3 | ExecutableCommand, event::KeyCode, cursor::Show, [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: `crossterm::cursor::Hide` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crossterm::cursor::Hide; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CursorMode` [INFO] [stdout] --> src/main.rs:10:38 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::ui::app_state::{AppState, CursorMode, InputMode}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> src/banking/auth.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `min` [INFO] [stdout] --> src/ui/container_helper.rs:3:16 [INFO] [stdout] | [INFO] [stdout] 3 | use std::cmp::{min, max}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Result` [INFO] [stdout] --> src/ui/container_helper.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::any::Any` [INFO] [stdout] --> src/ui/view/welcome.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::any::Any; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::borrow::BorrowMut` [INFO] [stdout] --> src/ui/view/welcome.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::borrow::BorrowMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/ui/view/welcome.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `self` and `stdout` [INFO] [stdout] --> src/ui/view/welcome.rs:5:15 [INFO] [stdout] | [INFO] [stdout] 5 | use std::io::{self, Result, stdout}; [INFO] [stdout] | ^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ops::Deref` [INFO] [stdout] --> src/ui/view/welcome.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::ops::Deref; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Borders` [INFO] [stdout] --> src/ui/view/welcome.rs:11:31 [INFO] [stdout] | [INFO] [stdout] 11 | use ratatui::widgets::{Block, Borders, Paragraph}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `KeyEventKind` and `self` [INFO] [stdout] --> src/ui/view/welcome.rs:15:24 [INFO] [stdout] | [INFO] [stdout] 15 | use crossterm::event::{self, KeyCode, KeyEventKind}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::any::Any` [INFO] [stdout] --> src/ui/traits/component.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::any::Any; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/ui/events.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Result` [INFO] [stdout] --> src/ui/app_state.rs:2:15 [INFO] [stdout] | [INFO] [stdout] 2 | use std::io::{Result, stdout}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `default` [INFO] [stdout] --> src/ui/widgets/input.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{default, io::{stdout, Result}}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::any::Any` [INFO] [stdout] --> src/ui/widgets/input.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::any::Any; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `EnableBlinking` and `Show` [INFO] [stdout] --> src/ui/widgets/input.rs:4:50 [INFO] [stdout] | [INFO] [stdout] 4 | use crossterm::{event::KeyCode, cursor::{MoveTo, Show, EnableBlinking}, ExecutableCommand}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Hide` and `Show` [INFO] [stdout] --> src/ui/widgets/button.rs:1:25 [INFO] [stdout] | [INFO] [stdout] 1 | use crossterm::cursor::{Hide, Show}; [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crossterm::ExecutableCommand` [INFO] [stdout] --> src/ui/widgets/button.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crossterm::ExecutableCommand; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/ui/view/welcome.rs:106:46 [INFO] [stdout] | [INFO] [stdout] 106 | fn draw_banner(&self, frame: &mut Frame, mut rect: &mut Rect) { [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: `rect` [INFO] [stdout] --> src/ui/view/welcome.rs:125:40 [INFO] [stdout] | [INFO] [stdout] 125 | fn draw(&self, frame: &mut Frame, rect: Option) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rect` [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/ui/widgets/input.rs:51:13 [INFO] [stdout] | [INFO] [stdout] 51 | let mut string_to_render: String; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/ui/widgets/input.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | _ => () [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/ui/widgets/input.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 100 | InputMode::Input => { [INFO] [stdout] | ---------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 103 | InputMode::Normal => { [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 106 | _ => () [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Account` is never constructed [INFO] [stdout] --> src/banking/consumer/account.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct Account { [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`, `id`, `get_balance`, `get_name`, `add`, and `subtract` are never used [INFO] [stdout] --> src/banking/consumer/account.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl Account { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 10 | pub fn new(person: Person, id: AccountID) -> Account { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | pub fn id(&self) -> AccountID { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub fn get_balance(&self) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn get_name(&self) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn add(&mut self, amount: u64) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn subtract(&mut self, amount: u64) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Person` is never constructed [INFO] [stdout] --> src/banking/consumer/person.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | pub struct Person { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `first_name`, and `last_name` are never used [INFO] [stdout] --> src/banking/consumer/person.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 6 | impl Person { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 7 | pub fn new(first: String, last: String) -> Person { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn first_name(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | pub fn last_name(&self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ATMCard` is never constructed [INFO] [stdout] --> src/banking/consumer/atm_card.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct ATMCard { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `id`, `bank_id`, and `account_id` are never used [INFO] [stdout] --> src/banking/consumer/atm_card.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl ATMCard { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] 10 | pub fn id(&self) -> ID { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn bank_id(&self) -> BankID { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | pub fn account_id(&self) -> AccountID { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BankAssociation` is never constructed [INFO] [stdout] --> src/banking/bank_association.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct BankAssociation { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `create_bank`, `get_bank`, `get_bank_facade`, and `get_bank_list` are never used [INFO] [stdout] --> src/banking/bank_association.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl BankAssociation { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 14 | [INFO] [stdout] 15 | pub fn new() -> BankAssociation { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub fn create_bank(&mut self, transfer_fee: TransferFee) -> BankID { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn get_bank(&self, bank_id: BankID) -> Option<&Bank> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn get_bank_facade(&mut self, bank_id: BankID) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn get_bank_list(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `AccountID` is never used [INFO] [stdout] --> src/banking/types.rs:2:10 [INFO] [stdout] | [INFO] [stdout] 2 | pub type AccountID = u64; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `BankID` is never used [INFO] [stdout] --> src/banking/types.rs:3:10 [INFO] [stdout] | [INFO] [stdout] 3 | pub type BankID = u64; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `BankTransaction` is never used [INFO] [stdout] --> src/banking/bank.rs:22:10 [INFO] [stdout] | [INFO] [stdout] 22 | pub enum BankTransaction { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TransferFee` is never constructed [INFO] [stdout] --> src/banking/bank.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 44 | pub struct TransferFee { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Bank` is never constructed [INFO] [stdout] --> src/banking/bank.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 50 | pub struct Bank { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/banking/bank.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 60 | impl Bank { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 61 | pub fn new(id: BankID, transfer_fee: TransferFee) -> Bank { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub fn id(&self) -> BankID { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn new_account(&mut self, person: Person, username: String, password: String) -> AccountID { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | fn add_credentials(&mut self, account_id: AccountID, username: String, password: String) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn get_account(&mut self, account_id: AccountID) -> Option<&mut Account> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn is_account_exist(&self, account_id: AccountID) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | pub fn process_transaction(&mut self, transaction: BankTransaction) -> Result<(), BankError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | fn transfer_from_to(&mut self, from: AccountID, to: AccountID, amount: u64) -> Result<(), BankError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TransactionError` is never used [INFO] [stdout] --> src/banking/bank.rs:10:14 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum TransactionError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `BankError` is never used [INFO] [stdout] --> src/banking/bank.rs:14:14 [INFO] [stdout] | [INFO] [stdout] 14 | pub enum BankError { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `account_id`, `username`, and `password` are never read [INFO] [stdout] --> src/banking/auth.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Credential { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 6 | account_id: ID, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 7 | username: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 8 | password: String [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/banking/auth.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl Credential { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] 12 | pub fn new(id: ID, username: String, password: String) -> Credential { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `hash` is never used [INFO] [stdout] --> src/banking/auth.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn hash(input: String, salt: Option) -> String { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BankFacade` is never constructed [INFO] [stdout] --> src/banking/bank_facade.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BankFacade<'a> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `create_account`, `transfer_to`, `get_balance`, `add_to_account`, and `subtract_from_account` are never used [INFO] [stdout] --> src/banking/bank_facade.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl<'a> BankFacade<'a> { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] 12 | pub fn new(bank: &mut Bank) -> BankFacade { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | pub fn create_account(&mut self, person: Person, username: String, password: String) -> AccountID { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub fn transfer_to(&mut self, from: AccountID, to: AccountID, amount: u64) -> Result<(), BankError> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn get_balance(&mut self, account_id: AccountID) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn add_to_account(&mut self, account_id: AccountID, amount: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn subtract_from_account(&mut self, account_id: AccountID, amount:u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `None` is never constructed [INFO] [stdout] --> src/ui/view/welcome.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 23 | enum InputFocus { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 27 | None [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InputFocus` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Event` is never used [INFO] [stdout] --> src/ui/events.rs:6:10 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Event { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `has_event` is never used [INFO] [stdout] --> src/ui/events.rs:12:8 [INFO] [stdout] | [INFO] [stdout] 12 | pub fn has_event() -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `None` is never constructed [INFO] [stdout] --> src/ui/app_state.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum Event { [INFO] [stdout] | ----- variant in this enum [INFO] [stdout] 10 | ButtonClicked(String), [INFO] [stdout] 11 | None [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Event` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `credential` is never read [INFO] [stdout] --> src/ui/app_state.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct AppState { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 35 | credential: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `key_released`, `get_events`, `get_events_mut`, and `set_credentials` are never used [INFO] [stdout] --> src/ui/app_state.rs:101:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl AppState { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn key_released(&self) -> KeyCode { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn get_events(&self) -> &Vec{ [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | pub fn get_events_mut(&mut self) -> &mut Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn set_credentials(&mut self, id: ID, username: String, password: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/banking/bank_association.rs:37:28 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn get_bank_facade(&mut self, bank_id: BankID) -> Option { [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here ^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 37 | pub fn get_bank_facade(&mut self, bank_id: BankID) -> Option> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/banking/bank_facade.rs:12:22 [INFO] [stdout] | [INFO] [stdout] 12 | pub fn new(bank: &mut Bank) -> BankFacade { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 12 | pub fn new(bank: &mut Bank) -> BankFacade<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/widgets/input.rs:42:19 [INFO] [stdout] | [INFO] [stdout] 42 | fn make_block(&self) -> Block { [INFO] [stdout] | ^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 42 | fn make_block(&self) -> Block<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.65s [INFO] running `Command { std: "docker" "inspect" "3e502166aadf038c1f48789c3fd4b9d007968fed3979a8fc2cbeb3ac629da5d9", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3e502166aadf038c1f48789c3fd4b9d007968fed3979a8fc2cbeb3ac629da5d9" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling banking v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `cursor::Show` [INFO] [stdout] --> src/main.rs:3:40 [INFO] [stdout] | [INFO] [stdout] 3 | ExecutableCommand, event::KeyCode, cursor::Show, [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: `crossterm::cursor::Hide` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crossterm::cursor::Hide; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CursorMode` [INFO] [stdout] --> src/main.rs:10:38 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::ui::app_state::{AppState, CursorMode, InputMode}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> src/banking/auth.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `min` [INFO] [stdout] --> src/ui/container_helper.rs:3:16 [INFO] [stdout] | [INFO] [stdout] 3 | use std::cmp::{min, max}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Result` [INFO] [stdout] --> src/ui/container_helper.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::any::Any` [INFO] [stdout] --> src/ui/view/welcome.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::any::Any; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::borrow::BorrowMut` [INFO] [stdout] --> src/ui/view/welcome.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::borrow::BorrowMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/ui/view/welcome.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `self` and `stdout` [INFO] [stdout] --> src/ui/view/welcome.rs:5:15 [INFO] [stdout] | [INFO] [stdout] 5 | use std::io::{self, Result, stdout}; [INFO] [stdout] | ^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ops::Deref` [INFO] [stdout] --> src/ui/view/welcome.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::ops::Deref; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Borders` [INFO] [stdout] --> src/ui/view/welcome.rs:11:31 [INFO] [stdout] | [INFO] [stdout] 11 | use ratatui::widgets::{Block, Borders, Paragraph}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `KeyEventKind` and `self` [INFO] [stdout] --> src/ui/view/welcome.rs:15:24 [INFO] [stdout] | [INFO] [stdout] 15 | use crossterm::event::{self, KeyCode, KeyEventKind}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::any::Any` [INFO] [stdout] --> src/ui/traits/component.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::any::Any; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/ui/events.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Result` [INFO] [stdout] --> src/ui/app_state.rs:2:15 [INFO] [stdout] | [INFO] [stdout] 2 | use std::io::{Result, stdout}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `default` [INFO] [stdout] --> src/ui/widgets/input.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{default, io::{stdout, Result}}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::any::Any` [INFO] [stdout] --> src/ui/widgets/input.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::any::Any; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `EnableBlinking` and `Show` [INFO] [stdout] --> src/ui/widgets/input.rs:4:50 [INFO] [stdout] | [INFO] [stdout] 4 | use crossterm::{event::KeyCode, cursor::{MoveTo, Show, EnableBlinking}, ExecutableCommand}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Hide` and `Show` [INFO] [stdout] --> src/ui/widgets/button.rs:1:25 [INFO] [stdout] | [INFO] [stdout] 1 | use crossterm::cursor::{Hide, Show}; [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crossterm::ExecutableCommand` [INFO] [stdout] --> src/ui/widgets/button.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crossterm::ExecutableCommand; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/ui/view/welcome.rs:106:46 [INFO] [stdout] | [INFO] [stdout] 106 | fn draw_banner(&self, frame: &mut Frame, mut rect: &mut Rect) { [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: `rect` [INFO] [stdout] --> src/ui/view/welcome.rs:125:40 [INFO] [stdout] | [INFO] [stdout] 125 | fn draw(&self, frame: &mut Frame, rect: Option) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rect` [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/ui/widgets/input.rs:51:13 [INFO] [stdout] | [INFO] [stdout] 51 | let mut string_to_render: String; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/ui/widgets/input.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | _ => () [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/ui/widgets/input.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 100 | InputMode::Input => { [INFO] [stdout] | ---------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 103 | InputMode::Normal => { [INFO] [stdout] | ----------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 106 | _ => () [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Account` is never constructed [INFO] [stdout] --> src/banking/consumer/account.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct Account { [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`, `id`, `get_balance`, `get_name`, `add`, and `subtract` are never used [INFO] [stdout] --> src/banking/consumer/account.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl Account { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 10 | pub fn new(person: Person, id: AccountID) -> Account { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | pub fn id(&self) -> AccountID { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub fn get_balance(&self) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn get_name(&self) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn add(&mut self, amount: u64) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn subtract(&mut self, amount: u64) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Person` is never constructed [INFO] [stdout] --> src/banking/consumer/person.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | pub struct Person { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `first_name`, and `last_name` are never used [INFO] [stdout] --> src/banking/consumer/person.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 6 | impl Person { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 7 | pub fn new(first: String, last: String) -> Person { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn first_name(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | pub fn last_name(&self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ATMCard` is never constructed [INFO] [stdout] --> src/banking/consumer/atm_card.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct ATMCard { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `id`, `bank_id`, and `account_id` are never used [INFO] [stdout] --> src/banking/consumer/atm_card.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl ATMCard { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] 10 | pub fn id(&self) -> ID { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn bank_id(&self) -> BankID { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | pub fn account_id(&self) -> AccountID { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BankAssociation` is never constructed [INFO] [stdout] --> src/banking/bank_association.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct BankAssociation { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `create_bank`, `get_bank`, `get_bank_facade`, and `get_bank_list` are never used [INFO] [stdout] --> src/banking/bank_association.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl BankAssociation { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 14 | [INFO] [stdout] 15 | pub fn new() -> BankAssociation { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub fn create_bank(&mut self, transfer_fee: TransferFee) -> BankID { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn get_bank(&self, bank_id: BankID) -> Option<&Bank> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn get_bank_facade(&mut self, bank_id: BankID) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn get_bank_list(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `AccountID` is never used [INFO] [stdout] --> src/banking/types.rs:2:10 [INFO] [stdout] | [INFO] [stdout] 2 | pub type AccountID = u64; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `BankID` is never used [INFO] [stdout] --> src/banking/types.rs:3:10 [INFO] [stdout] | [INFO] [stdout] 3 | pub type BankID = u64; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `BankTransaction` is never used [INFO] [stdout] --> src/banking/bank.rs:22:10 [INFO] [stdout] | [INFO] [stdout] 22 | pub enum BankTransaction { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TransferFee` is never constructed [INFO] [stdout] --> src/banking/bank.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 44 | pub struct TransferFee { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Bank` is never constructed [INFO] [stdout] --> src/banking/bank.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 50 | pub struct Bank { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/banking/bank.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 60 | impl Bank { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 61 | pub fn new(id: BankID, transfer_fee: TransferFee) -> Bank { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub fn id(&self) -> BankID { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn new_account(&mut self, person: Person, username: String, password: String) -> AccountID { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | fn add_credentials(&mut self, account_id: AccountID, username: String, password: String) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn get_account(&mut self, account_id: AccountID) -> Option<&mut Account> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn is_account_exist(&self, account_id: AccountID) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | pub fn process_transaction(&mut self, transaction: BankTransaction) -> Result<(), BankError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | fn transfer_from_to(&mut self, from: AccountID, to: AccountID, amount: u64) -> Result<(), BankError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TransactionError` is never used [INFO] [stdout] --> src/banking/bank.rs:10:14 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum TransactionError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `BankError` is never used [INFO] [stdout] --> src/banking/bank.rs:14:14 [INFO] [stdout] | [INFO] [stdout] 14 | pub enum BankError { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `account_id`, `username`, and `password` are never read [INFO] [stdout] --> src/banking/auth.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Credential { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 6 | account_id: ID, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 7 | username: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 8 | password: String [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/banking/auth.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl Credential { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] 12 | pub fn new(id: ID, username: String, password: String) -> Credential { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BankFacade` is never constructed [INFO] [stdout] --> src/banking/bank_facade.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BankFacade<'a> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `create_account`, `transfer_to`, `get_balance`, `add_to_account`, and `subtract_from_account` are never used [INFO] [stdout] --> src/banking/bank_facade.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl<'a> BankFacade<'a> { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] 12 | pub fn new(bank: &mut Bank) -> BankFacade { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | pub fn create_account(&mut self, person: Person, username: String, password: String) -> AccountID { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub fn transfer_to(&mut self, from: AccountID, to: AccountID, amount: u64) -> Result<(), BankError> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn get_balance(&mut self, account_id: AccountID) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn add_to_account(&mut self, account_id: AccountID, amount: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn subtract_from_account(&mut self, account_id: AccountID, amount:u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `None` is never constructed [INFO] [stdout] --> src/ui/view/welcome.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 23 | enum InputFocus { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 27 | None [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InputFocus` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Event` is never used [INFO] [stdout] --> src/ui/events.rs:6:10 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Event { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `has_event` is never used [INFO] [stdout] --> src/ui/events.rs:12:8 [INFO] [stdout] | [INFO] [stdout] 12 | pub fn has_event() -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `None` is never constructed [INFO] [stdout] --> src/ui/app_state.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum Event { [INFO] [stdout] | ----- variant in this enum [INFO] [stdout] 10 | ButtonClicked(String), [INFO] [stdout] 11 | None [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Event` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `credential` is never read [INFO] [stdout] --> src/ui/app_state.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct AppState { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 35 | credential: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `key_released`, `get_events`, `get_events_mut`, and `set_credentials` are never used [INFO] [stdout] --> src/ui/app_state.rs:101:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl AppState { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn key_released(&self) -> KeyCode { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn get_events(&self) -> &Vec{ [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | pub fn get_events_mut(&mut self) -> &mut Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn set_credentials(&mut self, id: ID, username: String, password: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/banking/bank_association.rs:37:28 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn get_bank_facade(&mut self, bank_id: BankID) -> Option { [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here ^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 37 | pub fn get_bank_facade(&mut self, bank_id: BankID) -> Option> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/banking/bank_facade.rs:12:22 [INFO] [stdout] | [INFO] [stdout] 12 | pub fn new(bank: &mut Bank) -> BankFacade { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 12 | pub fn new(bank: &mut Bank) -> BankFacade<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/widgets/input.rs:42:19 [INFO] [stdout] | [INFO] [stdout] 42 | fn make_block(&self) -> Block { [INFO] [stdout] | ^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 42 | fn make_block(&self) -> Block<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.49s [INFO] running `Command { std: "docker" "inspect" "3e502166aadf038c1f48789c3fd4b9d007968fed3979a8fc2cbeb3ac629da5d9", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3e502166aadf038c1f48789c3fd4b9d007968fed3979a8fc2cbeb3ac629da5d9" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `cursor::Show` [INFO] [stderr] --> src/main.rs:3:40 [INFO] [stderr] | [INFO] [stderr] 3 | ExecutableCommand, event::KeyCode, cursor::Show, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `crossterm::cursor::Hide` [INFO] [stderr] --> src/main.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use crossterm::cursor::Hide; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `CursorMode` [INFO] [stderr] --> src/main.rs:10:38 [INFO] [stderr] | [INFO] [stderr] 10 | use crate::ui::app_state::{AppState, CursorMode, InputMode}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Write` [INFO] [stderr] --> src/banking/auth.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::io::Write; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `min` [INFO] [stderr] --> src/ui/container_helper.rs:3:16 [INFO] [stderr] | [INFO] [stderr] 3 | use std::cmp::{min, max}; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Result` [INFO] [stderr] --> src/ui/container_helper.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::Result; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::any::Any` [INFO] [stderr] --> src/ui/view/welcome.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::any::Any; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::BorrowMut` [INFO] [stderr] --> src/ui/view/welcome.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::borrow::BorrowMut; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/ui/view/welcome.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `self` and `stdout` [INFO] [stderr] --> src/ui/view/welcome.rs:5:15 [INFO] [stderr] | [INFO] [stderr] 5 | use std::io::{self, Result, stdout}; [INFO] [stderr] | ^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ops::Deref` [INFO] [stderr] --> src/ui/view/welcome.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::ops::Deref; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Borders` [INFO] [stderr] --> src/ui/view/welcome.rs:11:31 [INFO] [stderr] | [INFO] [stderr] 11 | use ratatui::widgets::{Block, Borders, Paragraph}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `KeyEventKind` and `self` [INFO] [stderr] --> src/ui/view/welcome.rs:15:24 [INFO] [stderr] | [INFO] [stderr] 15 | use crossterm::event::{self, KeyCode, KeyEventKind}; [INFO] [stderr] | ^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::any::Any` [INFO] [stderr] --> src/ui/traits/component.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::any::Any; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/ui/events.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Result` [INFO] [stderr] --> src/ui/app_state.rs:2:15 [INFO] [stderr] | [INFO] [stderr] 2 | use std::io::{Result, stdout}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `default` [INFO] [stderr] --> src/ui/widgets/input.rs:1:11 [INFO] [stderr] | [INFO] [stderr] 1 | use std::{default, io::{stdout, Result}}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::any::Any` [INFO] [stderr] --> src/ui/widgets/input.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::any::Any; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `EnableBlinking` and `Show` [INFO] [stderr] --> src/ui/widgets/input.rs:4:50 [INFO] [stderr] | [INFO] [stderr] 4 | use crossterm::{event::KeyCode, cursor::{MoveTo, Show, EnableBlinking}, ExecutableCommand}; [INFO] [stderr] | ^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Hide` and `Show` [INFO] [stderr] --> src/ui/widgets/button.rs:1:25 [INFO] [stderr] | [INFO] [stderr] 1 | use crossterm::cursor::{Hide, Show}; [INFO] [stderr] | ^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crossterm::ExecutableCommand` [INFO] [stderr] --> src/ui/widgets/button.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use crossterm::ExecutableCommand; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ui/view/welcome.rs:106:46 [INFO] [stderr] | [INFO] [stderr] 106 | fn draw_banner(&self, frame: &mut Frame, mut rect: &mut Rect) { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `rect` [INFO] [stderr] --> src/ui/view/welcome.rs:125:40 [INFO] [stderr] | [INFO] [stderr] 125 | fn draw(&self, frame: &mut Frame, rect: Option) { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rect` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ui/widgets/input.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | let mut string_to_render: String; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/ui/widgets/input.rs:106:13 [INFO] [stderr] | [INFO] [stderr] 106 | _ => () [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/ui/widgets/input.rs:106:13 [INFO] [stderr] | [INFO] [stderr] 100 | InputMode::Input => { [INFO] [stderr] | ---------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 103 | InputMode::Normal => { [INFO] [stderr] | ----------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 106 | _ => () [INFO] [stderr] | ^ collectively making this unreachable [INFO] [stderr] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: struct `Account` is never constructed [INFO] [stderr] --> src/banking/consumer/account.rs:3:12 [INFO] [stderr] | [INFO] [stderr] 3 | pub struct Account { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: associated items `new`, `id`, `get_balance`, `get_name`, `add`, and `subtract` are never used [INFO] [stderr] --> src/banking/consumer/account.rs:10:12 [INFO] [stderr] | [INFO] [stderr] 9 | impl Account { [INFO] [stderr] | ------------ associated items in this implementation [INFO] [stderr] 10 | pub fn new(person: Person, id: AccountID) -> Account { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 18 | pub fn id(&self) -> AccountID { [INFO] [stderr] | ^^ [INFO] [stderr] ... [INFO] [stderr] 22 | pub fn get_balance(&self) -> i64 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 26 | pub fn get_name(&self) -> String { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 30 | pub fn add(&mut self, amount: u64) { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 35 | pub fn subtract(&mut self, amount: u64) { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Person` is never constructed [INFO] [stderr] --> src/banking/consumer/person.rs:1:12 [INFO] [stderr] | [INFO] [stderr] 1 | pub struct Person { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `new`, `first_name`, and `last_name` are never used [INFO] [stderr] --> src/banking/consumer/person.rs:7:12 [INFO] [stderr] | [INFO] [stderr] 6 | impl Person { [INFO] [stderr] | ----------- associated items in this implementation [INFO] [stderr] 7 | pub fn new(first: String, last: String) -> Person { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 14 | pub fn first_name(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 18 | pub fn last_name(&self) -> String { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `ATMCard` is never constructed [INFO] [stderr] --> src/banking/consumer/atm_card.rs:3:12 [INFO] [stderr] | [INFO] [stderr] 3 | pub struct ATMCard { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `id`, `bank_id`, and `account_id` are never used [INFO] [stderr] --> src/banking/consumer/atm_card.rs:10:12 [INFO] [stderr] | [INFO] [stderr] 9 | impl ATMCard { [INFO] [stderr] | ------------ methods in this implementation [INFO] [stderr] 10 | pub fn id(&self) -> ID { [INFO] [stderr] | ^^ [INFO] [stderr] ... [INFO] [stderr] 14 | pub fn bank_id(&self) -> BankID { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 18 | pub fn account_id(&self) -> AccountID { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `BankAssociation` is never constructed [INFO] [stderr] --> src/banking/bank_association.rs:8:12 [INFO] [stderr] | [INFO] [stderr] 8 | pub struct BankAssociation { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `new`, `create_bank`, `get_bank`, `get_bank_facade`, and `get_bank_list` are never used [INFO] [stderr] --> src/banking/bank_association.rs:15:12 [INFO] [stderr] | [INFO] [stderr] 13 | impl BankAssociation { [INFO] [stderr] | -------------------- associated items in this implementation [INFO] [stderr] 14 | [INFO] [stderr] 15 | pub fn new() -> BankAssociation { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 22 | pub fn create_bank(&mut self, transfer_fee: TransferFee) -> BankID { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 30 | pub fn get_bank(&self, bank_id: BankID) -> Option<&Bank> { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 37 | pub fn get_bank_facade(&mut self, bank_id: BankID) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 44 | pub fn get_bank_list(&self) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias `AccountID` is never used [INFO] [stderr] --> src/banking/types.rs:2:10 [INFO] [stderr] | [INFO] [stderr] 2 | pub type AccountID = u64; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias `BankID` is never used [INFO] [stderr] --> src/banking/types.rs:3:10 [INFO] [stderr] | [INFO] [stderr] 3 | pub type BankID = u64; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `BankTransaction` is never used [INFO] [stderr] --> src/banking/bank.rs:22:10 [INFO] [stderr] | [INFO] [stderr] 22 | pub enum BankTransaction { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `TransferFee` is never constructed [INFO] [stderr] --> src/banking/bank.rs:44:12 [INFO] [stderr] | [INFO] [stderr] 44 | pub struct TransferFee { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Bank` is never constructed [INFO] [stderr] --> src/banking/bank.rs:50:12 [INFO] [stderr] | [INFO] [stderr] 50 | pub struct Bank { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> src/banking/bank.rs:61:12 [INFO] [stderr] | [INFO] [stderr] 60 | impl Bank { [INFO] [stderr] | --------- associated items in this implementation [INFO] [stderr] 61 | pub fn new(id: BankID, transfer_fee: TransferFee) -> Bank { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 73 | pub fn id(&self) -> BankID { [INFO] [stderr] | ^^ [INFO] [stderr] ... [INFO] [stderr] 77 | pub fn new_account(&mut self, person: Person, username: String, password: String) -> AccountID { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 90 | fn add_credentials(&mut self, account_id: AccountID, username: String, password: String) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 102 | pub fn get_account(&mut self, account_id: AccountID) -> Option<&mut Account> { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 109 | pub fn is_account_exist(&self, account_id: AccountID) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 117 | pub fn process_transaction(&mut self, transaction: BankTransaction) -> Result<(), BankError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 124 | fn transfer_from_to(&mut self, from: AccountID, to: AccountID, amount: u64) -> Result<(), BankError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `TransactionError` is never used [INFO] [stderr] --> src/banking/bank.rs:10:14 [INFO] [stderr] | [INFO] [stderr] 10 | pub enum TransactionError { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `BankError` is never used [INFO] [stderr] --> src/banking/bank.rs:14:14 [INFO] [stderr] | [INFO] [stderr] 14 | pub enum BankError { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `account_id`, `username`, and `password` are never read [INFO] [stderr] --> src/banking/auth.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 5 | pub struct Credential { [INFO] [stderr] | ---------- fields in this struct [INFO] [stderr] 6 | account_id: ID, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 7 | username: String, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 8 | password: String [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `new` is never used [INFO] [stderr] --> src/banking/auth.rs:12:12 [INFO] [stderr] | [INFO] [stderr] 11 | impl Credential { [INFO] [stderr] | --------------- associated function in this implementation [INFO] [stderr] 12 | pub fn new(id: ID, username: String, password: String) -> Credential { [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `BankFacade` is never constructed [INFO] [stderr] --> src/banking/bank_facade.rs:7:12 [INFO] [stderr] | [INFO] [stderr] 7 | pub struct BankFacade<'a> { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `new`, `create_account`, `transfer_to`, `get_balance`, `add_to_account`, and `subtract_from_account` are never used [INFO] [stderr] --> src/banking/bank_facade.rs:12:12 [INFO] [stderr] | [INFO] [stderr] 11 | impl<'a> BankFacade<'a> { [INFO] [stderr] | ----------------------- associated items in this implementation [INFO] [stderr] 12 | pub fn new(bank: &mut Bank) -> BankFacade { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 18 | pub fn create_account(&mut self, person: Person, username: String, password: String) -> AccountID { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 22 | pub fn transfer_to(&mut self, from: AccountID, to: AccountID, amount: u64) -> Result<(), BankError> { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 27 | pub fn get_balance(&mut self, account_id: AccountID) -> i64 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 31 | pub fn add_to_account(&mut self, account_id: AccountID, amount: u64) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 36 | pub fn subtract_from_account(&mut self, account_id: AccountID, amount:u64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `None` is never constructed [INFO] [stderr] --> src/ui/view/welcome.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 23 | enum InputFocus { [INFO] [stderr] | ---------- variant in this enum [INFO] [stderr] ... [INFO] [stderr] 27 | None [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `InputFocus` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: enum `Event` is never used [INFO] [stderr] --> src/ui/events.rs:6:10 [INFO] [stderr] | [INFO] [stderr] 6 | pub enum Event { [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `has_event` is never used [INFO] [stderr] --> src/ui/events.rs:12:8 [INFO] [stderr] | [INFO] [stderr] 12 | pub fn has_event() -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `None` is never constructed [INFO] [stderr] --> src/ui/app_state.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 9 | pub enum Event { [INFO] [stderr] | ----- variant in this enum [INFO] [stderr] 10 | ButtonClicked(String), [INFO] [stderr] 11 | None [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Event` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `credential` is never read [INFO] [stderr] --> src/ui/app_state.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 28 | pub struct AppState { [INFO] [stderr] | -------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 35 | credential: Option, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `key_released`, `get_events`, `get_events_mut`, and `set_credentials` are never used [INFO] [stderr] --> src/ui/app_state.rs:101:12 [INFO] [stderr] | [INFO] [stderr] 39 | impl AppState { [INFO] [stderr] | ------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 101 | pub fn key_released(&self) -> KeyCode { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 105 | pub fn get_events(&self) -> &Vec{ [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 117 | pub fn get_events_mut(&mut self) -> &mut Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 145 | pub fn set_credentials(&mut self, id: ID, username: String, password: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/banking/bank_association.rs:37:28 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn get_bank_facade(&mut self, bank_id: BankID) -> Option { [INFO] [stderr] | ^^^^^^^^^ the lifetime is elided here ^^^^^^^^^^ the same lifetime is hidden here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 37 | pub fn get_bank_facade(&mut self, bank_id: BankID) -> Option> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/banking/bank_facade.rs:12:22 [INFO] [stderr] | [INFO] [stderr] 12 | pub fn new(bank: &mut Bank) -> BankFacade { [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^ the same lifetime is hidden here [INFO] [stderr] | | [INFO] [stderr] | the lifetime is elided here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 12 | pub fn new(bank: &mut Bank) -> BankFacade<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/ui/widgets/input.rs:42:19 [INFO] [stderr] | [INFO] [stderr] 42 | fn make_block(&self) -> Block { [INFO] [stderr] | ^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stderr] | | [INFO] [stderr] | the lifetime is elided here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 42 | fn make_block(&self) -> Block<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: `banking` (bin "banking" test) generated 54 warnings (run `cargo fix --bin "banking" -p banking --tests` to apply 27 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/banking-75c49d47ddae3a59) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test banking::auth::tests::hash_test ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "3e502166aadf038c1f48789c3fd4b9d007968fed3979a8fc2cbeb3ac629da5d9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3e502166aadf038c1f48789c3fd4b9d007968fed3979a8fc2cbeb3ac629da5d9", kill_on_drop: false }` [INFO] [stdout] 3e502166aadf038c1f48789c3fd4b9d007968fed3979a8fc2cbeb3ac629da5d9