[INFO] cloning repository https://github.com/cundd/rcoin
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/cundd/rcoin" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcundd%2Frcoin", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcundd%2Frcoin'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 69d0890d1f318659c866066e3b9a2cf2446b4858
[INFO] checking cundd/rcoin against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcundd%2Frcoin" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/cundd/rcoin
[INFO] finished tweaking git repo https://github.com/cundd/rcoin
[INFO] tweaked toml for git repo https://github.com/cundd/rcoin written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/cundd/rcoin 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/cundd/rcoin 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] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded term_size v0.3.2
[INFO] [stderr]   Downloaded serde_derive v1.0.158
[INFO] [stderr]   Downloaded proc-macro2 v1.0.52
[INFO] [stderr]   Downloaded cxxbridge-flags v1.0.93
[INFO] [stderr]   Downloaded scratch v1.0.5
[INFO] [stderr]   Downloaded iana-time-zone v0.1.54
[INFO] [stderr]   Downloaded openssl-sys v0.9.82
[INFO] [stderr]   Downloaded cxxbridge-macro v1.0.93
[INFO] [stderr]   Downloaded curl v0.4.44
[INFO] [stderr]   Downloaded cxx-build v1.0.93
[INFO] [stderr]   Downloaded serde v1.0.158
[INFO] [stderr]   Downloaded serde_json v1.0.94
[INFO] [stderr]   Downloaded cxx v1.0.93
[INFO] [stderr]   Downloaded chrono v0.4.24
[INFO] [stderr]   Downloaded syn v2.0.4
[INFO] [stderr]   Downloaded libz-sys v1.1.8
[INFO] [stderr]   Downloaded curl-sys v0.4.61+curl-8.0.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] a28265450d5b843174e6ec5ddb53a91a061f78b9976540b4d8ee0ab28d9de3e4
[INFO] running `Command { std: "docker" "start" "-a" "a28265450d5b843174e6ec5ddb53a91a061f78b9976540b4d8ee0ab28d9de3e4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a28265450d5b843174e6ec5ddb53a91a061f78b9976540b4d8ee0ab28d9de3e4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a28265450d5b843174e6ec5ddb53a91a061f78b9976540b4d8ee0ab28d9de3e4", kill_on_drop: false }`
[INFO] [stdout] a28265450d5b843174e6ec5ddb53a91a061f78b9976540b4d8ee0ab28d9de3e4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] b11039279c14da852b2ff06b3c42fd906ef7f8510c2792e18f7ebca5725283ae
[INFO] running `Command { std: "docker" "start" "-a" "b11039279c14da852b2ff06b3c42fd906ef7f8510c2792e18f7ebca5725283ae", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling libc v0.2.140
[INFO] [stderr]    Compiling pkg-config v0.3.26
[INFO] [stderr]    Compiling proc-macro2 v1.0.52
[INFO] [stderr]    Compiling quote v1.0.26
[INFO] [stderr]    Compiling unicode-ident v1.0.8
[INFO] [stderr]    Compiling serde_derive v1.0.158
[INFO] [stderr]    Compiling serde v1.0.158
[INFO] [stderr]     Checking unicode-width v0.1.10
[INFO] [stderr]    Compiling serde_json v1.0.94
[INFO] [stderr]    Compiling curl v0.4.44
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]     Checking ansi_term v0.12.1
[INFO] [stderr]     Checking iana-time-zone v0.1.54
[INFO] [stderr]     Checking textwrap v0.11.0
[INFO] [stderr]    Compiling libz-sys v1.1.8
[INFO] [stderr]    Compiling openssl-sys v0.9.82
[INFO] [stderr]    Compiling curl-sys v0.4.61+curl-8.0.1
[INFO] [stderr]    Compiling syn v2.0.4
[INFO] [stderr]     Checking getrandom v0.2.8
[INFO] [stderr]     Checking socket2 v0.4.9
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking time v0.1.45
[INFO] [stderr]     Checking term_size v0.3.2
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking clap v2.34.0
[INFO] [stderr]     Checking chrono v0.4.24
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking rcoin v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/rate_provider/coin_market_cap/mod.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 | use serde::{Serialize, Deserialize};
[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: `self::coin_desk::CoinDesk`
[INFO] [stdout]   --> src/rate_provider/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use self::coin_desk::CoinDesk;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::blockchain_info::BlockchainInfo`
[INFO] [stdout]   --> src/rate_provider/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use self::blockchain_info::BlockchainInfo;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::crypto_compare::CryptoCompare`
[INFO] [stdout]   --> src/rate_provider/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use self::crypto_compare::CryptoCompare;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::faker::Faker`
[INFO] [stdout]   --> src/rate_provider/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use self::faker::Faker;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/ui/pixel_sequence.rs:59:17
[INFO] [stdout]    |
[INFO] [stdout] 59 |             '0' ... '9' => style_string.push(character),
[INFO] [stdout]    |                 ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/ui/screen.rs:158:21
[INFO] [stdout]     |
[INFO] [stdout] 158 |                 '0' ... '9' => style_string.push(character),
[INFO] [stdout]     |                     ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::element::Element`
[INFO] [stdout]   --> src/ui/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use self::element::Element;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::pixel::Pixel`
[INFO] [stdout]   --> src/ui/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use self::pixel::Pixel;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]  --> src/signal_handler/mod.rs:8:28
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub type SignalHandlerFn = extern fn(i32);
[INFO] [stdout]   |                            ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(missing_abi)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/signal_handler/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | extern {
[INFO] [stdout]    | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]    --> src/main.rs:145:1
[INFO] [stdout]     |
[INFO] [stdout] 145 | extern fn received_signal(_: i32) {
[INFO] [stdout]     | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/chart/point_drawing.rs:7:84
[INFO] [stdout]   |
[INFO] [stdout] 7 |     fn draw_points_with_configuration<T: PointTrait>(&self, points: Vec<T>, conf: &Configuration<T>) -> String;
[INFO] [stdout]   |                                                                                    ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]   = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 7 |     fn draw_points_with_configuration<T: PointTrait>(&self, points: Vec<T>, conf: &dyn Configuration<T>) -> String;
[INFO] [stdout]   |                                                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/chart/canvas.rs:44:91
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub fn draw_points_with_configuration<T: PointTrait>(&self, matrix: Matrix<T>, conf: &Configuration<T>) -> String {
[INFO] [stdout]    |                                                                                           ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub fn draw_points_with_configuration<T: PointTrait>(&self, matrix: Matrix<T>, conf: &dyn Configuration<T>) -> String {
[INFO] [stdout]    |                                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/chart/canvas.rs:72:118
[INFO] [stdout]    |
[INFO] [stdout] 72 | ...number: CoordinatePrecision, matrix: &Matrix<T>, conf: &Configuration<T>) -> String {
[INFO] [stdout]    |                                                            ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn draw_row_with_configuration<T: PointTrait>(&self, row_number: CoordinatePrecision, matrix: &Matrix<T>, conf: &dyn Configuration<T>) -> String {
[INFO] [stdout]    |                                                                                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/chart/mod.rs:80:88
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn draw_points_with_configuration<T: PointTrait>(&self, points: Vec<T>, conf: &configuration::Configuration<T>) -> String {
[INFO] [stdout]    |                                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn draw_points_with_configuration<T: PointTrait>(&self, points: Vec<T>, conf: &dyn configuration::Configuration<T>) -> String {
[INFO] [stdout]    |                                                                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/rate_provider/coin_market_cap/mod.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 | use serde::{Serialize, Deserialize};
[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: `self::coin_desk::CoinDesk`
[INFO] [stdout]   --> src/rate_provider/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use self::coin_desk::CoinDesk;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::blockchain_info::BlockchainInfo`
[INFO] [stdout]   --> src/rate_provider/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use self::blockchain_info::BlockchainInfo;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::crypto_compare::CryptoCompare`
[INFO] [stdout]   --> src/rate_provider/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use self::crypto_compare::CryptoCompare;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::faker::Faker`
[INFO] [stdout]   --> src/rate_provider/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use self::faker::Faker;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/ui/pixel_sequence.rs:59:17
[INFO] [stdout]    |
[INFO] [stdout] 59 |             '0' ... '9' => style_string.push(character),
[INFO] [stdout]    |                 ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/ui/screen.rs:158:21
[INFO] [stdout]     |
[INFO] [stdout] 158 |                 '0' ... '9' => style_string.push(character),
[INFO] [stdout]     |                     ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::element::Element`
[INFO] [stdout]   --> src/ui/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use self::element::Element;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::pixel::Pixel`
[INFO] [stdout]   --> src/ui/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use self::pixel::Pixel;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]  --> src/signal_handler/mod.rs:8:28
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub type SignalHandlerFn = extern fn(i32);
[INFO] [stdout]   |                            ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(missing_abi)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/signal_handler/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | extern {
[INFO] [stdout]    | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]    --> src/main.rs:145:1
[INFO] [stdout]     |
[INFO] [stdout] 145 | extern fn received_signal(_: i32) {
[INFO] [stdout]     | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/chart/point_drawing.rs:7:84
[INFO] [stdout]   |
[INFO] [stdout] 7 |     fn draw_points_with_configuration<T: PointTrait>(&self, points: Vec<T>, conf: &Configuration<T>) -> String;
[INFO] [stdout]   |                                                                                    ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]   = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 7 |     fn draw_points_with_configuration<T: PointTrait>(&self, points: Vec<T>, conf: &dyn Configuration<T>) -> String;
[INFO] [stdout]   |                                                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/chart/canvas.rs:44:91
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub fn draw_points_with_configuration<T: PointTrait>(&self, matrix: Matrix<T>, conf: &Configuration<T>) -> String {
[INFO] [stdout]    |                                                                                           ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub fn draw_points_with_configuration<T: PointTrait>(&self, matrix: Matrix<T>, conf: &dyn Configuration<T>) -> String {
[INFO] [stdout]    |                                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/chart/canvas.rs:72:118
[INFO] [stdout]    |
[INFO] [stdout] 72 | ...number: CoordinatePrecision, matrix: &Matrix<T>, conf: &Configuration<T>) -> String {
[INFO] [stdout]    |                                                            ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn draw_row_with_configuration<T: PointTrait>(&self, row_number: CoordinatePrecision, matrix: &Matrix<T>, conf: &dyn Configuration<T>) -> String {
[INFO] [stdout]    |                                                                                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/chart/mod.rs:80:88
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn draw_points_with_configuration<T: PointTrait>(&self, points: Vec<T>, conf: &configuration::Configuration<T>) -> String {
[INFO] [stdout]    |                                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn draw_points_with_configuration<T: PointTrait>(&self, points: Vec<T>, conf: &dyn configuration::Configuration<T>) -> String {
[INFO] [stdout]    |                                                                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/rate_provider/faker.rs:18:13
[INFO] [stdout]    |
[INFO] [stdout] 18 |         let mut rng = rand::thread_rng();
[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: `rng`
[INFO] [stdout]   --> src/rate_provider/faker.rs:18:13
[INFO] [stdout]    |
[INFO] [stdout] 18 |         let mut rng = rand::thread_rng();
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `current_index` is assigned to, but never used
[INFO] [stdout]    --> src/ui/screen_buffer.rs:195:13
[INFO] [stdout]     |
[INFO] [stdout] 195 |         let mut current_index = y * width;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_current_index` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_index` is never read
[INFO] [stdout]    --> src/ui/screen_buffer.rs:207:13
[INFO] [stdout]     |
[INFO] [stdout] 207 |             current_index += 1;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `price_to_coordinate` is never used
[INFO] [stdout]   --> src/rate/mod.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Rate {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn price_to_coordinate(price: f32) -> CoordinatePrecision {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cryptonator` is never constructed
[INFO] [stdout]   --> src/rate_provider/cryptonator/mod.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct Cryptonator {}
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `convert_to_internal_rate`, `download_pair`, and `get_pair_in_internal_rate` are never used
[INFO] [stdout]   --> src/rate_provider/cryptonator/mod.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl Cryptonator {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout] 28 |     fn convert_to_internal_rate(response: &str) -> Result<IntermediateRate, ProviderError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     fn download_pair(crypto_currency: &Currency, fiat_currency: &str) -> Result<String, ProviderError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     fn get_pair_in_internal_rate(crypto_currency: &Currency, fiat_currency: &str) -> Result<IntermediateRate, ProviderError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Ticker` is never constructed
[INFO] [stdout]   --> src/rate_provider/cryptonator/intermediate_rate.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Ticker {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IntermediateRate` is never constructed
[INFO] [stdout]   --> src/rate_provider/cryptonator/intermediate_rate.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct IntermediateRate {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `price` is never used
[INFO] [stdout]   --> src/rate_provider/cryptonator/intermediate_rate.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl IntermediateRate {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] 29 |     pub fn price(&self)->f32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_y` is never used
[INFO] [stdout]   --> src/matrix.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub trait PointTrait: Clone {
[INFO] [stdout]    |           ---------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 12 |     fn with_y(&self, new_y: CoordinatePrecision) -> Self;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/rate_provider/blockchain_info/mod.rs:13:44
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn convert_to_internal_rates(response: &str) -> Result<CurrencyRateMap, ProviderError> {
[INFO] [stdout]    |                                            ^^^^            ^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                            |
[INFO] [stdout]    |                                            the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn convert_to_internal_rates(response: &str) -> Result<CurrencyRateMap<'_>, ProviderError> {
[INFO] [stdout]    |                                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: bounds on generic parameters in type aliases are not enforced
[INFO] [stdout]  --> src/chart/configuration.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | type Row<I: PointTrait> = BTreeMap<CoordinatePrecision, I>;
[INFO] [stdout]   |             ^^^^^^^^^^ will not be checked at usage sites of the type alias
[INFO] [stdout]   |
[INFO] [stdout]   = note: this is a known limitation of the type checker that may be lifted in a future edition.
[INFO] [stdout]           see issue #112792 <https://github.com/rust-lang/rust/issues/112792> for more information
[INFO] [stdout]   = note: `#[warn(type_alias_bounds)]` on by default
[INFO] [stdout] help: remove this bound
[INFO] [stdout]   |
[INFO] [stdout] 5 - type Row<I: PointTrait> = BTreeMap<CoordinatePrecision, I>;
[INFO] [stdout] 5 + type Row<I> = BTreeMap<CoordinatePrecision, I>;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: bounds on generic parameters in type aliases are not enforced
[INFO] [stdout]  --> src/matrix.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub type Row<I: Debug> = BTreeMap<CoordinatePrecision, I>;
[INFO] [stdout]   |                 ^^^^^ will not be checked at usage sites of the type alias
[INFO] [stdout]   |
[INFO] [stdout]   = note: this is a known limitation of the type checker that may be lifted in a future edition.
[INFO] [stdout]           see issue #112792 <https://github.com/rust-lang/rust/issues/112792> for more information
[INFO] [stdout] help: remove this bound
[INFO] [stdout]   |
[INFO] [stdout] 5 - pub type Row<I: Debug> = BTreeMap<CoordinatePrecision, I>;
[INFO] [stdout] 5 + pub type Row<I> = BTreeMap<CoordinatePrecision, I>;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/rate_provider/faker.rs:18:13
[INFO] [stdout]    |
[INFO] [stdout] 18 |         let mut rng = rand::thread_rng();
[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: `rng`
[INFO] [stdout]   --> src/rate_provider/faker.rs:18:13
[INFO] [stdout]    |
[INFO] [stdout] 18 |         let mut rng = rand::thread_rng();
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `current_index` is assigned to, but never used
[INFO] [stdout]    --> src/ui/screen_buffer.rs:195:13
[INFO] [stdout]     |
[INFO] [stdout] 195 |         let mut current_index = y * width;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_current_index` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_index` is never read
[INFO] [stdout]    --> src/ui/screen_buffer.rs:207:13
[INFO] [stdout]     |
[INFO] [stdout] 207 |             current_index += 1;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `price_to_coordinate` is never used
[INFO] [stdout]   --> src/rate/mod.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Rate {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn price_to_coordinate(price: f32) -> CoordinatePrecision {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/rate_provider/blockchain_info/mod.rs:13:44
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn convert_to_internal_rates(response: &str) -> Result<CurrencyRateMap, ProviderError> {
[INFO] [stdout]    |                                            ^^^^            ^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                            |
[INFO] [stdout]    |                                            the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn convert_to_internal_rates(response: &str) -> Result<CurrencyRateMap<'_>, ProviderError> {
[INFO] [stdout]    |                                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: bounds on generic parameters in type aliases are not enforced
[INFO] [stdout]  --> src/chart/configuration.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | type Row<I: PointTrait> = BTreeMap<CoordinatePrecision, I>;
[INFO] [stdout]   |             ^^^^^^^^^^ will not be checked at usage sites of the type alias
[INFO] [stdout]   |
[INFO] [stdout]   = note: this is a known limitation of the type checker that may be lifted in a future edition.
[INFO] [stdout]           see issue #112792 <https://github.com/rust-lang/rust/issues/112792> for more information
[INFO] [stdout]   = note: `#[warn(type_alias_bounds)]` on by default
[INFO] [stdout] help: remove this bound
[INFO] [stdout]   |
[INFO] [stdout] 5 - type Row<I: PointTrait> = BTreeMap<CoordinatePrecision, I>;
[INFO] [stdout] 5 + type Row<I> = BTreeMap<CoordinatePrecision, I>;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: bounds on generic parameters in type aliases are not enforced
[INFO] [stdout]  --> src/matrix.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub type Row<I: Debug> = BTreeMap<CoordinatePrecision, I>;
[INFO] [stdout]   |                 ^^^^^ will not be checked at usage sites of the type alias
[INFO] [stdout]   |
[INFO] [stdout]   = note: this is a known limitation of the type checker that may be lifted in a future edition.
[INFO] [stdout]           see issue #112792 <https://github.com/rust-lang/rust/issues/112792> for more information
[INFO] [stdout] help: remove this bound
[INFO] [stdout]   |
[INFO] [stdout] 5 - pub type Row<I: Debug> = BTreeMap<CoordinatePrecision, I>;
[INFO] [stdout] 5 + pub type Row<I> = BTreeMap<CoordinatePrecision, I>;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 18.20s
[INFO] running `Command { std: "docker" "inspect" "b11039279c14da852b2ff06b3c42fd906ef7f8510c2792e18f7ebca5725283ae", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b11039279c14da852b2ff06b3c42fd906ef7f8510c2792e18f7ebca5725283ae", kill_on_drop: false }`
[INFO] [stdout] b11039279c14da852b2ff06b3c42fd906ef7f8510c2792e18f7ebca5725283ae
