[INFO] cloning repository https://github.com/TBS1996/spekitest
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/TBS1996/spekitest" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTBS1996%2Fspekitest", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTBS1996%2Fspekitest'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 43bc5dc4a80f3f86eb09c1a68d3de2c60e671813
[INFO] checking TBS1996/spekitest against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTBS1996%2Fspekitest" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/TBS1996/spekitest
[INFO] finished tweaking git repo https://github.com/TBS1996/spekitest
[INFO] tweaked toml for git repo https://github.com/TBS1996/spekitest written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/TBS1996/spekitest on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/TBS1996/spekitest 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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded similar v2.2.1
[INFO] [stderr]   Downloaded serde_spanned v0.6.1
[INFO] [stderr]   Downloaded ascii_tree v0.1.1
[INFO] [stderr]   Downloaded rasciigraph v0.2.0
[INFO] [stderr]   Downloaded toml v0.7.3
[INFO] [stderr]   Downloaded crossterm v0.26.1
[INFO] [stderr]   Downloaded insta v1.29.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2f71eff0310bb387d6b808b497f499724b33608dbb9da9023eb29ff789f7831d
[INFO] running `Command { std: "docker" "start" "-a" "2f71eff0310bb387d6b808b497f499724b33608dbb9da9023eb29ff789f7831d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2f71eff0310bb387d6b808b497f499724b33608dbb9da9023eb29ff789f7831d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2f71eff0310bb387d6b808b497f499724b33608dbb9da9023eb29ff789f7831d", kill_on_drop: false }`
[INFO] [stdout] 2f71eff0310bb387d6b808b497f499724b33608dbb9da9023eb29ff789f7831d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 652cff96491615ebed8be6b65b717a58522afd87913b66e4a1a7bae9c31256e4
[INFO] running `Command { std: "docker" "start" "-a" "652cff96491615ebed8be6b65b717a58522afd87913b66e4a1a7bae9c31256e4", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.56
[INFO] [stderr]    Compiling quote v1.0.26
[INFO] [stderr]    Compiling serde_derive v1.0.160
[INFO] [stderr]    Compiling serde v1.0.160
[INFO] [stderr]    Compiling log v0.4.18
[INFO] [stderr]    Compiling signal-hook v0.3.15
[INFO] [stderr]     Checking winnow v0.4.1
[INFO] [stderr]     Checking ascii_tree v0.1.1
[INFO] [stderr]     Checking similar v2.2.1
[INFO] [stderr]     Checking parking_lot_core v0.9.8
[INFO] [stderr]     Checking getrandom v0.2.9
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking console v0.15.7
[INFO] [stderr]     Checking lock_api v0.4.10
[INFO] [stderr]     Checking rasciigraph v0.2.0
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]     Checking mio v0.8.8
[INFO] [stderr]     Checking insta v1.29.0
[INFO] [stderr]     Checking signal-hook-mio v0.2.3
[INFO] [stderr]     Checking crossterm v0.26.1
[INFO] [stderr]    Compiling syn v2.0.15
[INFO] [stderr]     Checking serde_spanned v0.6.1
[INFO] [stderr]     Checking toml_datetime v0.6.1
[INFO] [stderr]     Checking uuid v1.3.2
[INFO] [stderr]     Checking toml_edit v0.19.8
[INFO] [stderr]     Checking toml v0.7.3
[INFO] [stderr]     Checking spekinew v0.1.6 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `create_dir_all`
[INFO] [stdout]  --> src/categories.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::fs::{self, create_dir_all, File};
[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::error::Error`
[INFO] [stdout]  --> src/cli.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CardCache`, `Card`, `Meta`, `Side`, `categories::Category`, `get_import_csv`, `get_share_path`, and `media::AudioSource`
[INFO] [stdout]  --> src/cli.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 |     card::{Card, CardCache, Meta, Side},
[INFO] [stdout]   |            ^^^^  ^^^^^^^^^  ^^^^  ^^^^
[INFO] [stdout] 5 |     categories::Category,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 6 |     media::AudioSource,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     paths::{get_import_csv, get_share_path},
[INFO] [stdout]   |             ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/common.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Card`
[INFO] [stdout]  --> src/common.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::card::{Card, CardCache, SavedCard};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufRead`
[INFO] [stdout]   --> src/common.rs:12:21
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::io::{self, BufRead, ErrorKind};
[INFO] [stdout]    |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fs::File`, `io::BufReader`, and `path::PathBuf`
[INFO] [stdout]  --> src/media.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fs::File, io::BufReader, path::PathBuf};
[INFO] [stdout]   |           ^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `config::Config` and `paths::get_media_path`
[INFO] [stdout]  --> src/media.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::{config::Config, paths::get_media_path};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `create_dir_all`
[INFO] [stdout]  --> src/categories.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::fs::{self, create_dir_all, File};
[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::error::Error`
[INFO] [stdout]  --> src/cli.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CardCache`, `Card`, `Meta`, `Side`, `categories::Category`, `get_import_csv`, `get_share_path`, and `media::AudioSource`
[INFO] [stdout]  --> src/cli.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 |     card::{Card, CardCache, Meta, Side},
[INFO] [stdout]   |            ^^^^  ^^^^^^^^^  ^^^^  ^^^^
[INFO] [stdout] 5 |     categories::Category,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 6 |     media::AudioSource,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     paths::{get_import_csv, get_share_path},
[INFO] [stdout]   |             ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/common.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Card`
[INFO] [stdout]  --> src/common.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::card::{Card, CardCache, SavedCard};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufRead`
[INFO] [stdout]   --> src/common.rs:12:21
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::io::{self, BufRead, ErrorKind};
[INFO] [stdout]    |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fs::File`, `io::BufReader`, and `path::PathBuf`
[INFO] [stdout]  --> src/media.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fs::File, io::BufReader, path::PathBuf};
[INFO] [stdout]   |           ^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `config::Config` and `paths::get_media_path`
[INFO] [stdout]  --> src/media.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::{config::Config, paths::get_media_path};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/card.rs:760:17
[INFO] [stdout]     |
[INFO] [stdout] 760 |             let x = format!("{:?}", self);
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stdout`
[INFO] [stdout]   --> src/frontend.rs:21:17
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn card_options(stdout: &mut Stdout, card: Id, cache: &mut CardCache) {}
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stdout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `card`
[INFO] [stdout]   --> src/frontend.rs:21:38
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn card_options(stdout: &mut Stdout, card: Id, cache: &mut CardCache) {}
[INFO] [stdout]    |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_card`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cache`
[INFO] [stdout]   --> src/frontend.rs:21:48
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn card_options(stdout: &mut Stdout, card: Id, cache: &mut CardCache) {}
[INFO] [stdout]    |                                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_cache`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/card.rs:760:17
[INFO] [stdout]     |
[INFO] [stdout] 760 |             let x = format!("{:?}", self);
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `resolved`, `suspended`, `finished`, and `change` are never read
[INFO] [stdout]    --> src/card.rs:246:9
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub struct CardInfo {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub resolved: bool,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 247 |     pub suspended: bool,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 248 |     pub finished: bool,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 249 |     pub change: f32,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CardInfo` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/card.rs:800:12
[INFO] [stdout]     |
[INFO] [stdout] 799 | impl Card {
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] 800 |     pub fn new(front: Side, back: Side, meta: Meta) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `empty_str_optional` is never used
[INFO] [stdout]   --> src/cli.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn empty_str_optional(s: String) -> Option<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `duration_to_days` is never used
[INFO] [stdout]   --> src/common.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn duration_to_days(dur: &Duration) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Filter` is never used
[INFO] [stdout]   --> src/common.rs:20:6
[INFO] [stdout]    |
[INFO] [stdout] 20 | type Filter = (String, Box<dyn FnMut(&SavedCard) -> bool>);
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Filters` is never constructed
[INFO] [stdout]   --> src/common.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | struct Filters {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/common.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Filters {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] 29 |     fn run<'a>(&mut self, cards: HashSet<&'a Id>, cache: &mut CardCache) -> HashSet<&'a Id> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     fn insert_positive(&mut self, filter: Filter) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     fn insert_negative(&mut self, filter: Filter) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     fn is_pending(&self) -> Filter {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn is_finished(&self) -> Filter {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     fn is_suspended(&self) -> Filter {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     fn has_tag(&self, tag: String) -> Filter {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     fn max_strength(&self, max_strength: Duration) -> Filter {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     fn max_stability(&self, max_stability: Duration) -> Filter {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     fn max_recall(&self, max_recall: f32) -> Filter {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `MenuItem` is never used
[INFO] [stdout]    --> src/common.rs:169:11
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub trait MenuItem: Display {
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `within_percentage` is never used
[INFO] [stdout]    --> src/common.rs:214:8
[INFO] [stdout]     |
[INFO] [stdout] 214 | pub fn within_percentage(percentage: u32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rand_int` is never used
[INFO] [stdout]    --> src/common.rs:218:8
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub fn rand_int(max: u32) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `card_options` is never used
[INFO] [stdout]   --> src/frontend.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn card_options(stdout: &mut Stdout, card: Id, cache: &mut CardCache) {}
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/media.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl AudioSource {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 20 |     pub fn new(local_name: Option<String>, url_backup: Option<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stdout`
[INFO] [stdout]   --> src/frontend.rs:21:17
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn card_options(stdout: &mut Stdout, card: Id, cache: &mut CardCache) {}
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stdout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `card`
[INFO] [stdout]   --> src/frontend.rs:21:38
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn card_options(stdout: &mut Stdout, card: Id, cache: &mut CardCache) {}
[INFO] [stdout]    |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_card`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cache`
[INFO] [stdout]   --> src/frontend.rs:21:48
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn card_options(stdout: &mut Stdout, card: Id, cache: &mut CardCache) {}
[INFO] [stdout]    |                                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_cache`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `resolved`, `suspended`, `finished`, and `change` are never read
[INFO] [stdout]    --> src/card.rs:246:9
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub struct CardInfo {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub resolved: bool,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 247 |     pub suspended: bool,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 248 |     pub finished: bool,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 249 |     pub change: f32,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CardInfo` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/card.rs:800:12
[INFO] [stdout]     |
[INFO] [stdout] 799 | impl Card {
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] 800 |     pub fn new(front: Side, back: Side, meta: Meta) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `empty_str_optional` is never used
[INFO] [stdout]   --> src/cli.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn empty_str_optional(s: String) -> Option<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `duration_to_days` is never used
[INFO] [stdout]   --> src/common.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn duration_to_days(dur: &Duration) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Filter` is never used
[INFO] [stdout]   --> src/common.rs:20:6
[INFO] [stdout]    |
[INFO] [stdout] 20 | type Filter = (String, Box<dyn FnMut(&SavedCard) -> bool>);
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Filters` is never constructed
[INFO] [stdout]   --> src/common.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | struct Filters {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/common.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Filters {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] 29 |     fn run<'a>(&mut self, cards: HashSet<&'a Id>, cache: &mut CardCache) -> HashSet<&'a Id> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     fn insert_positive(&mut self, filter: Filter) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     fn insert_negative(&mut self, filter: Filter) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     fn is_pending(&self) -> Filter {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn is_finished(&self) -> Filter {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     fn is_suspended(&self) -> Filter {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     fn has_tag(&self, tag: String) -> Filter {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     fn max_strength(&self, max_strength: Duration) -> Filter {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     fn max_stability(&self, max_stability: Duration) -> Filter {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     fn max_recall(&self, max_recall: f32) -> Filter {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `MenuItem` is never used
[INFO] [stdout]    --> src/common.rs:169:11
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub trait MenuItem: Display {
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `within_percentage` is never used
[INFO] [stdout]    --> src/common.rs:214:8
[INFO] [stdout]     |
[INFO] [stdout] 214 | pub fn within_percentage(percentage: u32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rand_int` is never used
[INFO] [stdout]    --> src/common.rs:218:8
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub fn rand_int(max: u32) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `card_options` is never used
[INFO] [stdout]   --> src/frontend.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn card_options(stdout: &mut Stdout, card: Id, cache: &mut CardCache) {}
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/media.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl AudioSource {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 20 |     pub fn new(local_name: Option<String>, url_backup: Option<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.42s
[INFO] running `Command { std: "docker" "inspect" "652cff96491615ebed8be6b65b717a58522afd87913b66e4a1a7bae9c31256e4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "652cff96491615ebed8be6b65b717a58522afd87913b66e4a1a7bae9c31256e4", kill_on_drop: false }`
[INFO] [stdout] 652cff96491615ebed8be6b65b717a58522afd87913b66e4a1a7bae9c31256e4
