[INFO] cloning repository https://github.com/iafisher/popquiz
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/iafisher/popquiz" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fiafisher%2Fpopquiz", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fiafisher%2Fpopquiz'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 5d45b6a26b954c28b7e1acc7e6e677eff00dc868
[INFO] checking iafisher/popquiz against master#4b9792692fbb675174d4d2082e7c37b2bc930e71 for pr-153692-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fiafisher%2Fpopquiz" "/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/iafisher/popquiz
[INFO] finished tweaking git repo https://github.com/iafisher/popquiz
[INFO] tweaked toml for git repo https://github.com/iafisher/popquiz written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/iafisher/popquiz on toolchain 4b9792692fbb675174d4d2082e7c37b2bc930e71
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4b9792692fbb675174d4d2082e7c37b2bc930e71" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/iafisher/popquiz 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" "+4b9792692fbb675174d4d2082e7c37b2bc930e71" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded term_size v0.3.2
[INFO] [stderr]   Downloaded smallvec v0.6.10
[INFO] [stderr]   Downloaded unicode-normalization v0.1.8
[INFO] [stderr]   Downloaded bytemuck v1.7.0
[INFO] [stderr]   Downloaded approx v0.1.1
[INFO] [stderr]   Downloaded num-iter v0.1.42
[INFO] [stderr]   Downloaded redox_syscall v0.1.54
[INFO] [stderr]   Downloaded memoffset v0.6.4
[INFO] [stderr]   Downloaded num_cpus v1.13.0
[INFO] [stderr]   Downloaded redox_users v0.3.0
[INFO] [stderr]   Downloaded dirs v1.0.5
[INFO] [stderr]   Downloaded autocfg v0.1.4
[INFO] [stderr]   Downloaded num-rational v0.3.2
[INFO] [stderr]   Downloaded utf8parse v0.1.1
[INFO] [stderr]   Downloaded synstructure v0.10.2
[INFO] [stderr]   Downloaded rustc-demangle v0.1.15
[INFO] [stderr]   Downloaded constant_time_eq v0.1.3
[INFO] [stderr]   Downloaded rgb v0.8.13
[INFO] [stderr]   Downloaded failure_derive v0.1.5
[INFO] [stderr]   Downloaded crossbeam-epoch v0.9.5
[INFO] [stderr]   Downloaded time v0.1.42
[INFO] [stderr]   Downloaded crc32fast v1.2.1
[INFO] [stderr]   Downloaded serde_derive v1.0.92
[INFO] [stderr]   Downloaded colored v1.8.0
[INFO] [stderr]   Downloaded rayon-core v1.9.1
[INFO] [stderr]   Downloaded crossbeam-utils v0.8.5
[INFO] [stderr]   Downloaded arrayvec v0.4.10
[INFO] [stderr]   Downloaded hashlink v0.7.0
[INFO] [stderr]   Downloaded quote v0.6.12
[INFO] [stderr]   Downloaded winconsole v0.10.0
[INFO] [stderr]   Downloaded weezl v0.1.5
[INFO] [stderr]   Downloaded miniz_oxide v0.3.7
[INFO] [stderr]   Downloaded deflate v0.8.6
[INFO] [stderr]   Downloaded gif v0.11.2
[INFO] [stderr]   Downloaded ryu v0.2.8
[INFO] [stderr]   Downloaded backtrace v0.3.30
[INFO] [stderr]   Downloaded once_cell v1.8.0
[INFO] [stderr]   Downloaded getrandom v0.2.3
[INFO] [stderr]   Downloaded termimage v1.1.0
[INFO] [stderr]   Downloaded png v0.16.8
[INFO] [stderr]   Downloaded log v0.4.6
[INFO] [stderr]   Downloaded failure v0.1.5
[INFO] [stderr]   Downloaded rustyline v4.1.0
[INFO] [stderr]   Downloaded ahash v0.7.4
[INFO] [stderr]   Downloaded crossbeam-channel v0.5.1
[INFO] [stderr]   Downloaded serde v1.0.101
[INFO] [stderr]   Downloaded serde_json v1.0.39
[INFO] [stderr]   Downloaded memchr v2.4.0
[INFO] [stderr]   Downloaded cgmath v0.16.1
[INFO] [stderr]   Downloaded unicode-segmentation v1.3.0
[INFO] [stderr]   Downloaded chrono v0.4.6
[INFO] [stderr]   Downloaded rusqlite v0.25.3
[INFO] [stderr]   Downloaded rayon v1.5.1
[INFO] [stderr]   Downloaded syn v0.15.35
[INFO] [stderr]   Downloaded clap v2.33.3
[INFO] [stderr]   Downloaded nix v0.13.1
[INFO] [stderr]   Downloaded nix v0.15.0
[INFO] [stderr]   Downloaded regex v1.5.4
[INFO] [stderr]   Downloaded image v0.23.14
[INFO] [stderr]   Downloaded jpeg-decoder v0.1.22
[INFO] [stderr]   Downloaded vcpkg v0.2.14
[INFO] [stderr]   Downloaded argon2rs v0.2.5
[INFO] [stderr]   Downloaded libc v0.2.65
[INFO] [stderr]   Downloaded backtrace-sys v0.1.28
[INFO] [stderr]   Downloaded tiff v0.6.1
[INFO] [stderr]   Downloaded libsqlite3-sys v0.22.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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" "+4b9792692fbb675174d4d2082e7c37b2bc930e71" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] d1ea4dbea04a284299857bbb374ca8ceb722f8e3e09b2cf4669ef65a6f24785a
[INFO] running `Command { std: "docker" "start" "-a" "d1ea4dbea04a284299857bbb374ca8ceb722f8e3e09b2cf4669ef65a6f24785a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d1ea4dbea04a284299857bbb374ca8ceb722f8e3e09b2cf4669ef65a6f24785a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d1ea4dbea04a284299857bbb374ca8ceb722f8e3e09b2cf4669ef65a6f24785a", kill_on_drop: false }`
[INFO] [stdout] d1ea4dbea04a284299857bbb374ca8ceb722f8e3e09b2cf4669ef65a6f24785a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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" "+4b9792692fbb675174d4d2082e7c37b2bc930e71" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fbc45b364180450f423dcd8d8a3fe3261700f550b78352c67983846c9e12248b
[INFO] running `Command { std: "docker" "start" "-a" "fbc45b364180450f423dcd8d8a3fe3261700f550b78352c67983846c9e12248b", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v1.0.1
[INFO] [stderr]    Compiling libc v0.2.65
[INFO] [stderr]    Compiling crossbeam-utils v0.8.5
[INFO] [stderr]    Compiling bitflags v1.2.1
[INFO] [stderr]     Checking rand_core v0.4.0
[INFO] [stderr]    Compiling autocfg v0.1.4
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.5
[INFO] [stderr]    Compiling rayon-core v1.9.1
[INFO] [stderr]    Compiling proc-macro2 v0.4.30
[INFO] [stderr]     Checking scopeguard v1.1.0
[INFO] [stderr]    Compiling unicode-xid v0.1.0
[INFO] [stderr]    Compiling memchr v2.4.0
[INFO] [stderr]    Compiling syn v0.15.35
[INFO] [stderr]    Compiling version_check v0.9.3
[INFO] [stderr]    Compiling crc32fast v1.2.1
[INFO] [stderr]     Checking either v1.6.1
[INFO] [stderr]     Checking cfg-if v0.1.9
[INFO] [stderr]     Checking rand_core v0.3.1
[INFO] [stderr]    Compiling serde v1.0.101
[INFO] [stderr]    Compiling cgmath v0.16.1
[INFO] [stderr]     Checking weezl v0.1.5
[INFO] [stderr]     Checking unicode-width v0.1.5
[INFO] [stderr]    Compiling pkg-config v0.3.19
[INFO] [stderr]    Compiling winapi v0.3.7
[INFO] [stderr]     Checking once_cell v1.8.0
[INFO] [stderr]     Checking deflate v0.8.6
[INFO] [stderr]     Checking miniz_oxide v0.3.7
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]    Compiling ryu v0.2.8
[INFO] [stderr]     Checking void v1.0.2
[INFO] [stderr]     Checking approx v0.1.1
[INFO] [stderr]    Compiling rand_chacha v0.1.1
[INFO] [stderr]    Compiling ahash v0.7.4
[INFO] [stderr]    Compiling rand_pcg v0.1.2
[INFO] [stderr]    Compiling nix v0.13.1
[INFO] [stderr]    Compiling rand v0.6.5
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling memoffset v0.6.4
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]     Checking crossbeam-channel v0.5.1
[INFO] [stderr]    Compiling rayon v1.5.1
[INFO] [stderr]    Compiling miniz_oxide v0.4.4
[INFO] [stderr]    Compiling num-rational v0.3.2
[INFO] [stderr]    Compiling num-iter v0.1.42
[INFO] [stderr]    Compiling libsqlite3-sys v0.22.2
[INFO] [stderr]     Checking gif v0.11.2
[INFO] [stderr]    Compiling quote v0.6.12
[INFO] [stderr]     Checking png v0.16.8
[INFO] [stderr]     Checking rgb v0.8.13
[INFO] [stderr]     Checking vec_map v0.8.2
[INFO] [stderr]     Checking ansi_term v0.11.0
[INFO] [stderr]     Checking bytemuck v1.7.0
[INFO] [stderr]     Checking scoped_threadpool v0.1.9
[INFO] [stderr]     Checking regex-syntax v0.6.25
[INFO] [stderr]     Checking crossbeam-deque v0.8.0
[INFO] [stderr]     Checking strsim v0.8.0
[INFO] [stderr]     Checking rand_isaac v0.1.1
[INFO] [stderr]     Checking rand_hc v0.1.0
[INFO] [stderr]     Checking rand_xorshift v0.1.1
[INFO] [stderr]     Checking log v0.4.6
[INFO] [stderr]     Checking rand_jitter v0.1.4
[INFO] [stderr]     Checking aho-corasick v0.7.18
[INFO] [stderr]    Compiling nix v0.15.0
[INFO] [stderr]     Checking unicode-segmentation v1.3.0
[INFO] [stderr]     Checking smallvec v1.6.1
[INFO] [stderr]     Checking utf8parse v0.1.1
[INFO] [stderr]     Checking fallible-iterator v0.2.0
[INFO] [stderr]     Checking fallible-streaming-iterator v0.1.9
[INFO] [stderr]     Checking num_cpus v1.13.0
[INFO] [stderr]     Checking getrandom v0.2.3
[INFO] [stderr]     Checking rand v0.4.6
[INFO] [stderr]     Checking term_size v0.3.2
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking time v0.1.42
[INFO] [stderr]     Checking dirs v1.0.5
[INFO] [stderr]     Checking rand_os v0.1.3
[INFO] [stderr]     Checking textwrap v0.11.0
[INFO] [stderr]     Checking hashbrown v0.11.2
[INFO] [stderr]     Checking clap v2.33.3
[INFO] [stderr]     Checking smallvec v0.6.10
[INFO] [stderr]     Checking itoa v0.4.4
[INFO] [stderr]     Checking unicode-normalization v0.1.8
[INFO] [stderr]     Checking num-traits v0.1.43
[INFO] [stderr]     Checking hashlink v0.7.0
[INFO] [stderr]     Checking rusqlite v0.25.3
[INFO] [stderr]     Checking regex v1.5.4
[INFO] [stderr]     Checking winconsole v0.10.0
[INFO] [stderr]     Checking colored v1.8.0
[INFO] [stderr]     Checking rustyline v4.1.0
[INFO] [stderr]     Checking jpeg-decoder v0.1.22
[INFO] [stderr]     Checking tiff v0.6.1
[INFO] [stderr]    Compiling serde_derive v1.0.92
[INFO] [stderr]     Checking image v0.23.14
[INFO] [stderr]     Checking termimage v1.1.0
[INFO] [stderr]     Checking serde_json v1.0.39
[INFO] [stderr]     Checking chrono v0.4.6
[INFO] [stderr]     Checking drill v1.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]    --> src/quiz.rs:458:10
[INFO] [stdout]     |
[INFO] [stdout] 458 | #[derive(Serialize, Deserialize, Debug, Clone)]
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = note: using a cfg inside a derive macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]     = help: try referring to `Serialize` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout]     = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]    --> src/quiz.rs:458:21
[INFO] [stdout]     |
[INFO] [stdout] 458 | #[derive(Serialize, Deserialize, Debug, Clone)]
[INFO] [stdout]     |                     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = note: using a cfg inside a derive macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]     = help: try referring to `Deserialize` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp`
[INFO] [stdout]   --> src/repetition2.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::cmp;
[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: `super::common`
[INFO] [stdout]   --> src/repetition2.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use super::common;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `QuestionResult2`
[INFO] [stdout]   --> src/repetition2.rs:24:31
[INFO] [stdout]    |
[INFO] [stdout] 24 | use super::quiz2::{Question2, QuestionResult2};
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]    --> src/quiz.rs:458:10
[INFO] [stdout]     |
[INFO] [stdout] 458 | #[derive(Serialize, Deserialize, Debug, Clone)]
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = note: using a cfg inside a derive macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]     = help: try referring to `Serialize` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout]     = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]    --> src/quiz.rs:458:21
[INFO] [stdout]     |
[INFO] [stdout] 458 | #[derive(Serialize, Deserialize, Debug, Clone)]
[INFO] [stdout]     |                     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = note: using a cfg inside a derive macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]     = help: try referring to `Deserialize` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp`
[INFO] [stdout]   --> src/repetition2.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::cmp;
[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: `super::common`
[INFO] [stdout]   --> src/repetition2.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use super::common;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `QuestionResult2`
[INFO] [stdout]   --> src/repetition2.rs:24:31
[INFO] [stdout]    |
[INFO] [stdout] 24 | use super::quiz2::{Question2, QuestionResult2};
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> tests/e2e_tests.rs:454:9
[INFO] [stdout]     |
[INFO] [stdout] 454 |         format!("Exit code: {:?}", result.status.code())
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 454 -         format!("Exit code: {:?}", result.status.code())
[INFO] [stdout] 454 +         "Exit code: {:?}", result.status.code()
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> tests/e2e_tests.rs:605:13
[INFO] [stdout]     |
[INFO] [stdout] 605 | /             format!(
[INFO] [stdout] 606 | |                 "\n\nFailed to match {:?} against pattern {:?}\n\n",
[INFO] [stdout] 607 | |                 got.trim(),
[INFO] [stdout] 608 | |                 expected,
[INFO] [stdout] 609 | |             )
[INFO] [stdout]     | |_____________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 605 ~             
[INFO] [stdout] 606 |                 "\n\nFailed to match {:?} against pattern {:?}\n\n",
[INFO] [stdout] 607 |                 got.trim(),
[INFO] [stdout] 608 |                 expected,
[INFO] [stdout] 609 ~             
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> tests/e2e_tests.rs:614:13
[INFO] [stdout]     |
[INFO] [stdout] 614 | /             format!(
[INFO] [stdout] 615 | |                 "\n\nExpected:\n  {:?}\n\ngot:\n  {:?}\n\n",
[INFO] [stdout] 616 | |                 expected.trim(),
[INFO] [stdout] 617 | |                 got.trim()
[INFO] [stdout] 618 | |             ),
[INFO] [stdout]     | |_____________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 614 ~             
[INFO] [stdout] 615 |                 "\n\nExpected:\n  {:?}\n\ngot:\n  {:?}\n\n",
[INFO] [stdout] 616 |                 expected.trim(),
[INFO] [stdout] 617 |                 got.trim()
[INFO] [stdout] 618 ~             ,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/persistence2.rs:158:13
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let mut question = questions_map.get_mut(&id).unwrap();
[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: `fullname`
[INFO] [stdout]  --> src/persistence2.rs:9:18
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn load_quiz(fullname: &Path) -> Result<Quiz2> {
[INFO] [stdout]   |                  ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fullname`
[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/persistence2.rs:158:13
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let mut question = questions_map.get_mut(&id).unwrap();
[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: `fullname`
[INFO] [stdout]  --> src/persistence2.rs:9:18
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn load_quiz(fullname: &Path) -> Result<Quiz2> {
[INFO] [stdout]   |                  ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fullname`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `options`
[INFO] [stdout]   --> src/main.rs:59:20
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn main_results_v2(options: &common::ResultsOptions) -> Result<()> {
[INFO] [stdout]    |                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_options`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `results`
[INFO] [stdout]   --> src/main.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let results = quiz.take(&mut ui, &options)?;
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_results`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main_v2` is never used
[INFO] [stdout]   --> src/main.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn main_v2() {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main_results_v2` is never used
[INFO] [stdout]   --> src/main.rs:59:4
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn main_results_v2(options: &common::ResultsOptions) -> Result<()> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main_take_v2` is never used
[INFO] [stdout]   --> src/main.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn main_take_v2(options: &common::TakeOptions) -> Result<()> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_quiz` is never used
[INFO] [stdout]  --> src/persistence2.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn load_quiz(fullname: &Path) -> Result<Quiz2> {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `no_credit` is never read
[INFO] [stdout]    --> src/quiz.rs:318:9
[INFO] [stdout]     |
[INFO] [stdout] 315 | pub struct OrderedListQuestion {
[INFO] [stdout]     |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub no_credit: Vec<String>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OrderedListQuestion` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time_finished` is never read
[INFO] [stdout]    --> src/quiz.rs:485:9
[INFO] [stdout]     |
[INFO] [stdout] 484 | pub struct QuizResult {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] 485 |     pub time_finished: chrono::DateTime<chrono::Utc>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `QuizResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Quiz2` is never constructed
[INFO] [stdout]  --> src/quiz2.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Quiz2 {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Question2` is never constructed
[INFO] [stdout]   --> src/quiz2.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Question2 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `QuestionType` is never used
[INFO] [stdout]   --> src/quiz2.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum QuestionType {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Answer2` is never constructed
[INFO] [stdout]   --> src/quiz2.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Answer2 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QuestionResult2` is never constructed
[INFO] [stdout]   --> src/quiz2.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct QuestionResult2 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QuizResult2` is never constructed
[INFO] [stdout]   --> src/quiz2.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct QuizResult2 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `take` is never used
[INFO] [stdout]   --> src/quiz2.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl Quiz2 {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 70 |     pub fn take(&mut self, ui: &mut CmdUI, options: &TakeOptions) -> Result<QuizResult2> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `ask` is never used
[INFO] [stdout]    --> src/quiz2.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | impl Question2 {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 143 |     fn ask(&self, ui: &mut CmdUI) -> Result<QuestionResult2> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkresult` is never used
[INFO] [stdout]    --> src/quiz2.rs:162:4
[INFO] [stdout]     |
[INFO] [stdout] 162 | fn mkresult(id: i64, text: &str, response: Option<String>, score: u64) -> QuestionResult2 {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkresultlist` is never used
[INFO] [stdout]    --> src/quiz2.rs:174:4
[INFO] [stdout]     |
[INFO] [stdout] 174 | fn mkresultlist(id: i64, text: &str, responses: Vec<String>, score: u64) -> QuestionResult2 {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_one` is never used
[INFO] [stdout]    --> src/quiz2.rs:187:8
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub fn check_one(answer_list: &Vec<Answer2>, guess: &str) -> Option<usize> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]    --> src/quiz2.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn check(ans: &Answer2, guess: &str) -> bool {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize` is never used
[INFO] [stdout]    --> src/quiz2.rs:206:4
[INFO] [stdout]     |
[INFO] [stdout] 206 | fn normalize(guess: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUCKET_ALLOCATION` is never used
[INFO] [stdout]   --> src/repetition2.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const BUCKET_ALLOCATION: [usize; 5] = [1, 2, 5, 5, 10];
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UP_THRESHOLD` is never used
[INFO] [stdout]   --> src/repetition2.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const UP_THRESHOLD: u64 = 900;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOWN_THRESHOLD` is never used
[INFO] [stdout]   --> src/repetition2.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const DOWN_THRESHOLD: u64 = 400;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `choose_questions` is never used
[INFO] [stdout]   --> src/repetition2.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn choose_questions<'a>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CmdUI` is never constructed
[INFO] [stdout]   --> src/ui2.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct CmdUI {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ui2.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl CmdUI {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  23 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  30 |     pub fn next(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn text(&mut self, text: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn prompt(&mut self) -> Result<Option<String>> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn incorrect(&mut self, correction: Option<&str>) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn correct(&mut self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn status(&mut self, text: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn score(&mut self, score: u64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn missed(&mut self, missed: &Vec<&str>) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn choices(&mut self, choices: &Vec<&str>) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn instructions(&mut self, text: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn results(&mut self, results: &QuizResult2) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn launch_editor(&mut self, location: &Location) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/quiz.rs:458:10
[INFO] [stdout]     |
[INFO] [stdout] 458 | #[derive(Serialize, Deserialize, Debug, Clone)]
[INFO] [stdout]     |          ^--------
[INFO] [stdout]     |          |
[INFO] [stdout]     |          `Serialize` is not local
[INFO] [stdout]     |          move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_QuestionResult`
[INFO] [stdout] 459 | #[serde(deny_unknown_fields)]
[INFO] [stdout] 460 | pub struct QuestionResult {
[INFO] [stdout]     |            -------------- `QuestionResult` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]     = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]     = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]     = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout]     = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/quiz.rs:458:21
[INFO] [stdout]     |
[INFO] [stdout] 458 | #[derive(Serialize, Deserialize, Debug, Clone)]
[INFO] [stdout]     |                     ^----------
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     `Deserialize` is not local
[INFO] [stdout]     |                     move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_QuestionResult`
[INFO] [stdout] 459 | #[serde(deny_unknown_fields)]
[INFO] [stdout] 460 | pub struct QuestionResult {
[INFO] [stdout]     |            -------------- `QuestionResult` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]     = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]     = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]     = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `options`
[INFO] [stdout]   --> src/main.rs:59:20
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn main_results_v2(options: &common::ResultsOptions) -> Result<()> {
[INFO] [stdout]    |                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_options`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `results`
[INFO] [stdout]   --> src/main.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let results = quiz.take(&mut ui, &options)?;
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_results`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main_v2` is never used
[INFO] [stdout]   --> src/main.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn main_v2() {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main_results_v2` is never used
[INFO] [stdout]   --> src/main.rs:59:4
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn main_results_v2(options: &common::ResultsOptions) -> Result<()> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main_take_v2` is never used
[INFO] [stdout]   --> src/main.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn main_take_v2(options: &common::TakeOptions) -> Result<()> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_quiz` is never used
[INFO] [stdout]  --> src/persistence2.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn load_quiz(fullname: &Path) -> Result<Quiz2> {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `no_credit` is never read
[INFO] [stdout]    --> src/quiz.rs:318:9
[INFO] [stdout]     |
[INFO] [stdout] 315 | pub struct OrderedListQuestion {
[INFO] [stdout]     |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub no_credit: Vec<String>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OrderedListQuestion` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time_finished` is never read
[INFO] [stdout]    --> src/quiz.rs:485:9
[INFO] [stdout]     |
[INFO] [stdout] 484 | pub struct QuizResult {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] 485 |     pub time_finished: chrono::DateTime<chrono::Utc>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `QuizResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Quiz2` is never constructed
[INFO] [stdout]  --> src/quiz2.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Quiz2 {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Question2` is never constructed
[INFO] [stdout]   --> src/quiz2.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Question2 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `QuestionType` is never used
[INFO] [stdout]   --> src/quiz2.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum QuestionType {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Answer2` is never constructed
[INFO] [stdout]   --> src/quiz2.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Answer2 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QuestionResult2` is never constructed
[INFO] [stdout]   --> src/quiz2.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct QuestionResult2 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QuizResult2` is never constructed
[INFO] [stdout]   --> src/quiz2.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct QuizResult2 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `take` is never used
[INFO] [stdout]   --> src/quiz2.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl Quiz2 {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 70 |     pub fn take(&mut self, ui: &mut CmdUI, options: &TakeOptions) -> Result<QuizResult2> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `ask` is never used
[INFO] [stdout]    --> src/quiz2.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | impl Question2 {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 143 |     fn ask(&self, ui: &mut CmdUI) -> Result<QuestionResult2> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkresult` is never used
[INFO] [stdout]    --> src/quiz2.rs:162:4
[INFO] [stdout]     |
[INFO] [stdout] 162 | fn mkresult(id: i64, text: &str, response: Option<String>, score: u64) -> QuestionResult2 {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkresultlist` is never used
[INFO] [stdout]    --> src/quiz2.rs:174:4
[INFO] [stdout]     |
[INFO] [stdout] 174 | fn mkresultlist(id: i64, text: &str, responses: Vec<String>, score: u64) -> QuestionResult2 {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_one` is never used
[INFO] [stdout]    --> src/quiz2.rs:187:8
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub fn check_one(answer_list: &Vec<Answer2>, guess: &str) -> Option<usize> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]    --> src/quiz2.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn check(ans: &Answer2, guess: &str) -> bool {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize` is never used
[INFO] [stdout]    --> src/quiz2.rs:206:4
[INFO] [stdout]     |
[INFO] [stdout] 206 | fn normalize(guess: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUCKET_ALLOCATION` is never used
[INFO] [stdout]   --> src/repetition2.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const BUCKET_ALLOCATION: [usize; 5] = [1, 2, 5, 5, 10];
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UP_THRESHOLD` is never used
[INFO] [stdout]   --> src/repetition2.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const UP_THRESHOLD: u64 = 900;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOWN_THRESHOLD` is never used
[INFO] [stdout]   --> src/repetition2.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const DOWN_THRESHOLD: u64 = 400;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `choose_questions` is never used
[INFO] [stdout]   --> src/repetition2.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn choose_questions<'a>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CmdUI` is never constructed
[INFO] [stdout]   --> src/ui2.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct CmdUI {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ui2.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl CmdUI {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  23 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  30 |     pub fn next(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn text(&mut self, text: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn prompt(&mut self) -> Result<Option<String>> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn incorrect(&mut self, correction: Option<&str>) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn correct(&mut self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn status(&mut self, text: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn score(&mut self, score: u64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn missed(&mut self, missed: &Vec<&str>) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn choices(&mut self, choices: &Vec<&str>) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn instructions(&mut self, text: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn results(&mut self, results: &QuizResult2) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn launch_editor(&mut self, location: &Location) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/quiz.rs:458:10
[INFO] [stdout]     |
[INFO] [stdout] 458 | #[derive(Serialize, Deserialize, Debug, Clone)]
[INFO] [stdout]     |          ^--------
[INFO] [stdout]     |          |
[INFO] [stdout]     |          `Serialize` is not local
[INFO] [stdout]     |          move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_QuestionResult`
[INFO] [stdout] 459 | #[serde(deny_unknown_fields)]
[INFO] [stdout] 460 | pub struct QuestionResult {
[INFO] [stdout]     |            -------------- `QuestionResult` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]     = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]     = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]     = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout]     = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/quiz.rs:458:21
[INFO] [stdout]     |
[INFO] [stdout] 458 | #[derive(Serialize, Deserialize, Debug, Clone)]
[INFO] [stdout]     |                     ^----------
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     `Deserialize` is not local
[INFO] [stdout]     |                     move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_QuestionResult`
[INFO] [stdout] 459 | #[serde(deny_unknown_fields)]
[INFO] [stdout] 460 | pub struct QuestionResult {
[INFO] [stdout]     |            -------------- `QuestionResult` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]     = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]     = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]     = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 25.22s
[INFO] running `Command { std: "docker" "inspect" "fbc45b364180450f423dcd8d8a3fe3261700f550b78352c67983846c9e12248b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fbc45b364180450f423dcd8d8a3fe3261700f550b78352c67983846c9e12248b", kill_on_drop: false }`
[INFO] [stdout] fbc45b364180450f423dcd8d8a3fe3261700f550b78352c67983846c9e12248b
