[INFO] cloning repository https://github.com/peonies1007/fintrack
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/peonies1007/fintrack" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpeonies1007%2Ffintrack", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpeonies1007%2Ffintrack'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 386dd3d9d8279ed19f35113ab925318858be51d9
[INFO] checking peonies1007/fintrack against f4dd856795debe636f2ba39a900f162f5abeb7e8 for pr-160904
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpeonies1007%2Ffintrack" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/peonies1007/fintrack
[INFO] finished tweaking git repo https://github.com/peonies1007/fintrack
[INFO] tweaked toml for git repo https://github.com/peonies1007/fintrack written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/peonies1007/fintrack on toolchain f4dd856795debe636f2ba39a900f162f5abeb7e8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f4dd856795debe636f2ba39a900f162f5abeb7e8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/peonies1007/fintrack 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" "+f4dd856795debe636f2ba39a900f162f5abeb7e8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] e6ff884932305f6ce50d4925603753557bada9fa0c31990138fe434336ea3c3a
[INFO] running `Command { std: "docker" "start" "e6ff884932305f6ce50d4925603753557bada9fa0c31990138fe434336ea3c3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e6ff884932305f6ce50d4925603753557bada9fa0c31990138fe434336ea3c3a", 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" "e6ff884932305f6ce50d4925603753557bada9fa0c31990138fe434336ea3c3a" "/opt/rustwide/cargo-home/bin/cargo" "+f4dd856795debe636f2ba39a900f162f5abeb7e8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e6ff884932305f6ce50d4925603753557bada9fa0c31990138fe434336ea3c3a", 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" "e6ff884932305f6ce50d4925603753557bada9fa0c31990138fe434336ea3c3a" "/opt/rustwide/cargo-home/bin/cargo" "+f4dd856795debe636f2ba39a900f162f5abeb7e8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]     Checking chrono v0.4.43
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking clap v4.5.57
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking fintrack v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0583]: file not found for module `delete`
[INFO] [stdout]   --> src/commands.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub mod delete;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: to create the module `delete`, create file "src/commands/delete.rs" or "src/commands/delete/mod.rs"
[INFO] [stdout]    = note: if there is a `mod delete` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `subcategory`
[INFO] [stdout]   --> src/commands.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub mod subcategory;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: to create the module `subcategory`, create file "src/commands/subcategory.rs" or "src/commands/subcategory/mod.rs"
[INFO] [stdout]    = note: if there is a `mod subcategory` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `total`
[INFO] [stdout]   --> src/commands.rs:36:1
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub mod total;
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: to create the module `total`, create file "src/commands/total.rs" or "src/commands/total/mod.rs"
[INFO] [stdout]    = note: if there is a `mod total` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `update`
[INFO] [stdout]   --> src/commands.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub mod update;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: to create the module `update`, create file "src/commands/update.rs" or "src/commands/update/mod.rs"
[INFO] [stdout]    = note: if there is a `mod update` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `command_prelude`
[INFO] [stdout]  --> src/utils.rs:2:1
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub mod command_prelude;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = help: to create the module `command_prelude`, create file "src/utils/command_prelude.rs" or "src/utils/command_prelude/mod.rs"
[INFO] [stdout]   = note: if there is a `mod command_prelude` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `delete`
[INFO] [stdout]   --> src/commands.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub mod delete;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: to create the module `delete`, create file "src/commands/delete.rs" or "src/commands/delete/mod.rs"
[INFO] [stdout]    = note: if there is a `mod delete` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `subcategory`
[INFO] [stdout]   --> src/commands.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub mod subcategory;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: to create the module `subcategory`, create file "src/commands/subcategory.rs" or "src/commands/subcategory/mod.rs"
[INFO] [stdout]    = note: if there is a `mod subcategory` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `total`
[INFO] [stdout]   --> src/commands.rs:36:1
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub mod total;
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: to create the module `total`, create file "src/commands/total.rs" or "src/commands/total/mod.rs"
[INFO] [stdout]    = note: if there is a `mod total` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `update`
[INFO] [stdout]   --> src/commands.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub mod update;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: to create the module `update`, create file "src/commands/update.rs" or "src/commands/update/mod.rs"
[INFO] [stdout]    = note: if there is a `mod update` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `command_prelude`
[INFO] [stdout]  --> src/utils.rs:2:1
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub mod command_prelude;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = help: to create the module `command_prelude`, create file "src/utils/command_prelude.rs" or "src/utils/command_prelude/mod.rs"
[INFO] [stdout]   = note: if there is a `mod command_prelude` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `GlobalContext` in this scope
[INFO] [stdout]  --> src/commands.rs:4:25
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub type Exec = fn(&mut GlobalContext, &ArgMatches) -> CliResult;
[INFO] [stdout]   |                         ^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]   |
[INFO] [stdout] 1 + use crate::GlobalContext;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `CliError` in this scope
[INFO] [stdout]    --> src/models.rs:167:42
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub type CliResult = Result<CliResponse, CliError>;
[INFO] [stdout]     |                                          ^^^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum through its public re-export
[INFO] [stdout]     |
[INFO] [stdout]   1 + use crate::CliError;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `command_prelude::*`
[INFO] [stdout]  --> src/commands.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{command_prelude::*, CliResult};
[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::io`
[INFO] [stdout]  --> src/error.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::NaiveDate`
[INFO] [stdout]  --> src/models.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::NaiveDate;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `GlobalContext` in this scope
[INFO] [stdout]  --> src/commands.rs:4:25
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub type Exec = fn(&mut GlobalContext, &ArgMatches) -> CliResult;
[INFO] [stdout]   |                         ^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]   |
[INFO] [stdout] 1 + use crate::GlobalContext;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `CliError` in this scope
[INFO] [stdout]    --> src/models.rs:167:42
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub type CliResult = Result<CliResponse, CliError>;
[INFO] [stdout]     |                                          ^^^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum through its public re-export
[INFO] [stdout]     |
[INFO] [stdout]   1 + use crate::CliError;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `command_prelude::*`
[INFO] [stdout]  --> src/commands.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{command_prelude::*, CliResult};
[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::io`
[INFO] [stdout]  --> src/error.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::NaiveDate`
[INFO] [stdout]  --> src/models.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::NaiveDate;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_category` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/add.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let category = args.get_category("category")?;
[INFO] [stdout]    |                         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_category` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_category_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let category = args.get_category_opt("category")?;
[INFO] [stdout]    |                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_category` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/add.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let category = args.get_category("category")?;
[INFO] [stdout]    |                         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_category` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_category_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let category = args.get_category_opt("category")?;
[INFO] [stdout]    |                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_f64_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/add.rs:46:23
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let amount = args.get_f64_or_default("amount");
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_f64_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_usize_or_default` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 46 -     let amount = args.get_f64_or_default("amount");
[INFO] [stdout] 46 +     let amount = args.get_usize_or_default("amount");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_f64_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/add.rs:46:23
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let amount = args.get_f64_or_default("amount");
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_f64_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_usize_or_default` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 46 -     let amount = args.get_f64_or_default("amount");
[INFO] [stdout] 46 +     let amount = args.get_usize_or_default("amount");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_subcategory_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/add.rs:54:33
[INFO] [stdout]    |
[INFO] [stdout] 54 |     let subcategory_name = args.get_subcategory_or_default("subcategory");
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_subcategory_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_subcategory_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 54 -     let subcategory_name = args.get_subcategory_or_default("subcategory");
[INFO] [stdout] 54 +     let subcategory_name = args.get_subcategory_opt("subcategory");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_string_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/add.rs:55:28
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let description = args.get_string_or_default("description");
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_string_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_usize_or_default` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 55 -     let description = args.get_string_or_default("description");
[INFO] [stdout] 55 +     let description = args.get_usize_or_default("description");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_subcategory_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/add.rs:54:33
[INFO] [stdout]    |
[INFO] [stdout] 54 |     let subcategory_name = args.get_subcategory_or_default("subcategory");
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_subcategory_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_subcategory_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 54 -     let subcategory_name = args.get_subcategory_or_default("subcategory");
[INFO] [stdout] 54 +     let subcategory_name = args.get_subcategory_opt("subcategory");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_date_opt` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/add.rs:69:10
[INFO] [stdout]    |
[INFO] [stdout] 68 |       let date = args
[INFO] [stdout]    |  ________________-
[INFO] [stdout] 69 | |         .get_date_opt("date")
[INFO] [stdout]    | |_________-^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_date_opt` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_category_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 69 -         .get_date_opt("date")
[INFO] [stdout] 69 +         .get_category_opt("date")
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_string_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/add.rs:55:28
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let description = args.get_string_or_default("description");
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_string_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_usize_or_default` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 55 -     let description = args.get_string_or_default("description");
[INFO] [stdout] 55 +     let description = args.get_usize_or_default("description");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_date_opt` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/add.rs:69:10
[INFO] [stdout]    |
[INFO] [stdout] 68 |       let date = args
[INFO] [stdout]    |  ________________-
[INFO] [stdout] 69 | |         .get_date_opt("date")
[INFO] [stdout]    | |_________-^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_date_opt` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_category_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 69 -         .get_date_opt("date")
[INFO] [stdout] 69 +         .get_category_opt("date")
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_currency_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/init.rs:24:25
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let currency = args.get_currency_or_default("currency");
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_currency_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_string_or_default` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 24 -     let currency = args.get_currency_or_default("currency");
[INFO] [stdout] 24 +     let currency = args.get_string_or_default("currency");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_f64_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/init.rs:25:32
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let opening_balance = args.get_f64_or_default("opening");
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_f64_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_usize_or_default` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 25 -     let opening_balance = args.get_f64_or_default("opening");
[INFO] [stdout] 25 +     let opening_balance = args.get_usize_or_default("opening");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_currency_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/init.rs:24:25
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let currency = args.get_currency_or_default("currency");
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_currency_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_string_or_default` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 24 -     let currency = args.get_currency_or_default("currency");
[INFO] [stdout] 24 +     let currency = args.get_string_or_default("currency");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_f64_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/init.rs:25:32
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let opening_balance = args.get_f64_or_default("opening");
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_f64_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_usize_or_default` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 25 -     let opening_balance = args.get_f64_or_default("opening");
[INFO] [stdout] 25 +     let opening_balance = args.get_usize_or_default("opening");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_date_opt` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/list.rs:54:27
[INFO] [stdout]    |
[INFO] [stdout] 54 |     let start_date = args.get_date_opt("start");
[INFO] [stdout]    |                           ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_date_opt` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_category_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 54 -     let start_date = args.get_date_opt("start");
[INFO] [stdout] 54 +     let start_date = args.get_category_opt("start");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_date_opt` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/list.rs:55:25
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let end_date = args.get_date_opt("end");
[INFO] [stdout]    |                         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_date_opt` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_category_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 55 -     let end_date = args.get_date_opt("end");
[INFO] [stdout] 55 +     let end_date = args.get_category_opt("end");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_date_opt` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/list.rs:54:27
[INFO] [stdout]    |
[INFO] [stdout] 54 |     let start_date = args.get_date_opt("start");
[INFO] [stdout]    |                           ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_date_opt` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_category_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 54 -     let start_date = args.get_date_opt("start");
[INFO] [stdout] 54 +     let start_date = args.get_category_opt("start");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_category_opt` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/list.rs:58:10
[INFO] [stdout]    |
[INFO] [stdout] 57 |       let category_filter = args
[INFO] [stdout]    |  ___________________________-
[INFO] [stdout] 58 | |         .get_category_opt("category")
[INFO] [stdout]    | |_________-^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_category_opt` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_subcategory_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 58 |         .get_subcategory_opt("category")
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_date_opt` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/list.rs:55:25
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let end_date = args.get_date_opt("end");
[INFO] [stdout]    |                         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_date_opt` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_category_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 55 -     let end_date = args.get_date_opt("end");
[INFO] [stdout] 55 +     let end_date = args.get_category_opt("end");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_subcategory_opt` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/list.rs:62:10
[INFO] [stdout]    |
[INFO] [stdout] 61 |       let subcategory_filter = args
[INFO] [stdout]    |  ______________________________-
[INFO] [stdout] 62 | |         .get_subcategory_opt("subcategory")
[INFO] [stdout]    | |_________-^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_subcategory_opt` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_category_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 62 -         .get_subcategory_opt("subcategory")
[INFO] [stdout] 62 +         .get_category_opt("subcategory")
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_category_opt` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/list.rs:58:10
[INFO] [stdout]    |
[INFO] [stdout] 57 |       let category_filter = args
[INFO] [stdout]    |  ___________________________-
[INFO] [stdout] 58 | |         .get_category_opt("category")
[INFO] [stdout]    | |_________-^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_category_opt` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_subcategory_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 58 |         .get_subcategory_opt("category")
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time
[INFO] [stdout]   --> src/commands/list.rs:63:20
[INFO] [stdout]    |
[INFO] [stdout] 63 |         .and_then(|name| tracker_data.subcategory_id(&name));
[INFO] [stdout]    |                    ^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `str`
[INFO] [stdout]    = note: all function arguments must have a statically known size
[INFO] [stdout]    = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_subcategory_opt` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/list.rs:62:10
[INFO] [stdout]    |
[INFO] [stdout] 61 |       let subcategory_filter = args
[INFO] [stdout]    |  ______________________________-
[INFO] [stdout] 62 | |         .get_subcategory_opt("subcategory")
[INFO] [stdout]    | |_________-^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_subcategory_opt` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_category_opt` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 62 -         .get_subcategory_opt("subcategory")
[INFO] [stdout] 62 +         .get_category_opt("subcategory")
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time
[INFO] [stdout]   --> src/commands/list.rs:63:20
[INFO] [stdout]    |
[INFO] [stdout] 63 |         .and_then(|name| tracker_data.subcategory_id(&name));
[INFO] [stdout]    |                    ^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `str`
[INFO] [stdout]    = note: all function arguments must have a statically known size
[INFO] [stdout]    = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_usize_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/list.rs:97:26
[INFO] [stdout]    |
[INFO] [stdout] 97 |         let first = args.get_usize_or_default("first");
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_usize_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_f64_or_default` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 97 -         let first = args.get_usize_or_default("first");
[INFO] [stdout] 97 +         let first = args.get_f64_or_default("first");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_usize_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]    --> src/commands/list.rs:102:25
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let last = args.get_usize_or_default("last");
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_usize_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout]   1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `get_f64_or_default` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 102 -         let last = args.get_usize_or_default("last");
[INFO] [stdout] 102 +         let last = args.get_f64_or_default("last");
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_usize_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]   --> src/commands/list.rs:97:26
[INFO] [stdout]    |
[INFO] [stdout] 97 |         let first = args.get_usize_or_default("first");
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_usize_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_f64_or_default` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 97 -         let first = args.get_usize_or_default("first");
[INFO] [stdout] 97 +         let first = args.get_f64_or_default("first");
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_usize_or_default` found for reference `&ArgMatches` in the current scope
[INFO] [stdout]    --> src/commands/list.rs:102:25
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let last = args.get_usize_or_default("last");
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `ArgMatchesExt` which provides `get_usize_or_default` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout]   1 + use crate::utils::cli::ArgMatchesExt;
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `get_f64_or_default` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 102 -         let last = args.get_usize_or_default("last");
[INFO] [stdout] 102 +         let last = args.get_f64_or_default("last");
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `error::CliError` doesn't implement `std::fmt::Display`
[INFO] [stdout]   --> src/output.rs:74:44
[INFO] [stdout]    |
[INFO] [stdout] 74 |         _ => writeln!(writer, "Error: {}", err),
[INFO] [stdout]    |                                       --   ^^^ `error::CliError` cannot be formatted with the default formatter
[INFO] [stdout]    |                                       |
[INFO] [stdout]    |                                       required by this formatting parameter
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `std::fmt::Display` is not implemented for `error::CliError`
[INFO] [stdout]   --> src/error.rs:47:1
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub enum CliError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: in format strings you may be able to use `{:?}` (or `{:#?}` for pretty-print) instead
[INFO] [stdout]    = note: required for `&error::CliError` to implement `std::fmt::Display`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `error::CliError` doesn't implement `std::fmt::Display`
[INFO] [stdout]   --> src/output.rs:74:44
[INFO] [stdout]    |
[INFO] [stdout] 74 |         _ => writeln!(writer, "Error: {}", err),
[INFO] [stdout]    |                                       --   ^^^ `error::CliError` cannot be formatted with the default formatter
[INFO] [stdout]    |                                       |
[INFO] [stdout]    |                                       required by this formatting parameter
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `std::fmt::Display` is not implemented for `error::CliError`
[INFO] [stdout]   --> src/error.rs:47:1
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub enum CliError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: in format strings you may be able to use `{:?}` (or `{:#?}` for pretty-print) instead
[INFO] [stdout]    = note: required for `&error::CliError` to implement `std::fmt::Display`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0425, E0583, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0425, E0583, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `fintrack` (lib test) due to 22 previous errors; 3 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `fintrack` (lib) due to 22 previous errors; 3 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "e6ff884932305f6ce50d4925603753557bada9fa0c31990138fe434336ea3c3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e6ff884932305f6ce50d4925603753557bada9fa0c31990138fe434336ea3c3a", kill_on_drop: false }`
[INFO] [stdout] e6ff884932305f6ce50d4925603753557bada9fa0c31990138fe434336ea3c3a
