[INFO] cloning repository https://github.com/borja-eth/rust-engine
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/borja-eth/rust-engine" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fborja-eth%2Frust-engine", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fborja-eth%2Frust-engine'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7276552383bde10fee1955f976f26f9bdfee049d
[INFO] checking borja-eth/rust-engine against master#8a65ee08296b36342bf7c3cdc15312ccbc357227 for pr-142704
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fborja-eth%2Frust-engine" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/borja-eth/rust-engine on toolchain 8a65ee08296b36342bf7c3cdc15312ccbc357227
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8a65ee08296b36342bf7c3cdc15312ccbc357227" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/borja-eth/rust-engine
[INFO] finished tweaking git repo https://github.com/borja-eth/rust-engine
[INFO] tweaked toml for git repo https://github.com/borja-eth/rust-engine written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/borja-eth/rust-engine 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" "+8a65ee08296b36342bf7c3cdc15312ccbc357227" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8a65ee08296b36342bf7c3cdc15312ccbc357227" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] fa89e101152ad6af68a564b4380ddf9259f05e68471cc3eee23bd3a6880f02cf
[INFO] running `Command { std: "docker" "start" "-a" "fa89e101152ad6af68a564b4380ddf9259f05e68471cc3eee23bd3a6880f02cf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fa89e101152ad6af68a564b4380ddf9259f05e68471cc3eee23bd3a6880f02cf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fa89e101152ad6af68a564b4380ddf9259f05e68471cc3eee23bd3a6880f02cf", kill_on_drop: false }`
[INFO] [stdout] fa89e101152ad6af68a564b4380ddf9259f05e68471cc3eee23bd3a6880f02cf
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8a65ee08296b36342bf7c3cdc15312ccbc357227" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 80df8d9846872c20eac042fdcb440cbd331b98389e6753564f2553408f8f5730
[INFO] running `Command { std: "docker" "start" "-a" "80df8d9846872c20eac042fdcb440cbd331b98389e6753564f2553408f8f5730", kill_on_drop: false }`
[INFO] [stderr]     Checking rust-engine v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0583]: file not found for module `depth_constants`
[INFO] [stdout]   --> lib.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub mod depth_constants;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: to create the module `depth_constants`, create file "lib/depth_constants.rs" or "lib/depth_constants/mod.rs"
[INFO] [stdout]    = note: if there is a `mod depth_constants` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `depth_constants`
[INFO] [stdout]   --> lib.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub mod depth_constants;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: to create the module `depth_constants`, create file "lib/depth_constants.rs" or "lib/depth_constants/mod.rs"
[INFO] [stdout]    = note: if there is a `mod depth_constants` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `depth_constants`
[INFO] [stdout]    --> lib.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub mod depth_constants;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: to create the module `depth_constants`, create file "lib/depth_constants.rs" or "lib/depth_constants/mod.rs"
[INFO] [stdout]     = note: if there is a `mod depth_constants` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `depth_constants`
[INFO] [stdout]    --> lib.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub mod depth_constants;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: to create the module `depth_constants`, create file "lib/depth_constants.rs" or "lib/depth_constants/mod.rs"
[INFO] [stdout]     = note: if there is a `mod depth_constants` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0428]: the name `lib` is defined multiple times
[INFO] [stdout]   --> lib.rs:90:1
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub mod lib {
[INFO] [stdout]    | ----------- previous definition of the module `lib` here
[INFO] [stdout] ...
[INFO] [stdout] 90 | pub mod lib {
[INFO] [stdout]    | ^^^^^^^^^^^ `lib` redefined here
[INFO] [stdout]    |
[INFO] [stdout]    = note: `lib` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0428]: the name `lib` is defined multiple times
[INFO] [stdout]   --> lib.rs:90:1
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub mod lib {
[INFO] [stdout]    | ----------- previous definition of the module `lib` here
[INFO] [stdout] ...
[INFO] [stdout] 90 | pub mod lib {
[INFO] [stdout]    | ^^^^^^^^^^^ `lib` redefined here
[INFO] [stdout]    |
[INFO] [stdout]    = note: `lib` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `OrderBook` is defined multiple times
[INFO] [stdout]   --> lib.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub use lib::depth_order_book::{DepthOrderBook, OrderBook};
[INFO] [stdout]    |                                                 --------- previous import of the trait `OrderBook` here
[INFO] [stdout] 74 | pub use lib::order_book::OrderBook;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ `OrderBook` reimported here
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OrderBook` must be defined only once in the type namespace of this module
[INFO] [stdout] help: you can use `as` to change the binding name of the import
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub use lib::order_book::OrderBook as OtherOrderBook;
[INFO] [stdout]    |                                    +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `OrderBook` is defined multiple times
[INFO] [stdout]   --> lib.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub use lib::depth_order_book::{DepthOrderBook, OrderBook};
[INFO] [stdout]    |                                                 --------- previous import of the trait `OrderBook` here
[INFO] [stdout] 74 | pub use lib::order_book::OrderBook;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ `OrderBook` reimported here
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OrderBook` must be defined only once in the type namespace of this module
[INFO] [stdout] help: you can use `as` to change the binding name of the import
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub use lib::order_book::OrderBook as OtherOrderBook;
[INFO] [stdout]    |                                    +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `Order` is defined multiple times
[INFO] [stdout]    --> lib.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 65  | pub use lib::order::Order;
[INFO] [stdout]     |         ----------------- previous import of the trait `Order` here
[INFO] [stdout] ...
[INFO] [stdout] 111 | pub use lib::order::Order;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ `Order` reimported here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Order` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `Order` is defined multiple times
[INFO] [stdout]    --> lib.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 65  | pub use lib::order::Order;
[INFO] [stdout]     |         ----------------- previous import of the trait `Order` here
[INFO] [stdout] ...
[INFO] [stdout] 111 | pub use lib::order::Order;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ `Order` reimported here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Order` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `OrderBook` is defined multiple times
[INFO] [stdout]    --> lib.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 73  | pub use lib::depth_order_book::{DepthOrderBook, OrderBook};
[INFO] [stdout]     |                                                 --------- previous import of the trait `OrderBook` here
[INFO] [stdout] ...
[INFO] [stdout] 112 | pub use lib::order_book::OrderBook;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ `OrderBook` reimported here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OrderBook` must be defined only once in the type namespace of this module
[INFO] [stdout] help: you can use `as` to change the binding name of the import
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub use lib::order_book::OrderBook as OtherOrderBook;
[INFO] [stdout]     |                                    +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `OrderBook` is defined multiple times
[INFO] [stdout]    --> lib.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 73  | pub use lib::depth_order_book::{DepthOrderBook, OrderBook};
[INFO] [stdout]     |                                                 --------- previous import of the trait `OrderBook` here
[INFO] [stdout] ...
[INFO] [stdout] 112 | pub use lib::order_book::OrderBook;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ `OrderBook` reimported here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OrderBook` must be defined only once in the type namespace of this module
[INFO] [stdout] help: you can use `as` to change the binding name of the import
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub use lib::order_book::OrderBook as OtherOrderBook;
[INFO] [stdout]     |                                    +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `Price` is defined multiple times
[INFO] [stdout]    --> lib.rs:113:22
[INFO] [stdout]     |
[INFO] [stdout] 63  | pub use lib::types::{Price, Quantity, OrderConditions, FillFlags};
[INFO] [stdout]     |                      ----- previous import of the type `Price` here
[INFO] [stdout] ...
[INFO] [stdout] 113 | pub use lib::types::{Price, Quantity, OrderConditions};
[INFO] [stdout]     |                      ^^^^^--
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      `Price` reimported here
[INFO] [stdout]     |                      help: remove unnecessary import
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Price` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `Price` is defined multiple times
[INFO] [stdout]    --> lib.rs:113:22
[INFO] [stdout]     |
[INFO] [stdout] 63  | pub use lib::types::{Price, Quantity, OrderConditions, FillFlags};
[INFO] [stdout]     |                      ----- previous import of the type `Price` here
[INFO] [stdout] ...
[INFO] [stdout] 113 | pub use lib::types::{Price, Quantity, OrderConditions};
[INFO] [stdout]     |                      ^^^^^--
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      `Price` reimported here
[INFO] [stdout]     |                      help: remove unnecessary import
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Price` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `Quantity` is defined multiple times
[INFO] [stdout]    --> lib.rs:113:29
[INFO] [stdout]     |
[INFO] [stdout] 63  | pub use lib::types::{Price, Quantity, OrderConditions, FillFlags};
[INFO] [stdout]     |                             -------- previous import of the type `Quantity` here
[INFO] [stdout] ...
[INFO] [stdout] 113 | pub use lib::types::{Price, Quantity, OrderConditions};
[INFO] [stdout]     |                             ^^^^^^^^--
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             `Quantity` reimported here
[INFO] [stdout]     |                             help: remove unnecessary import
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Quantity` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `OrderConditions` is defined multiple times
[INFO] [stdout]    --> lib.rs:113:39
[INFO] [stdout]     |
[INFO] [stdout] 63  | pub use lib::types::{Price, Quantity, OrderConditions, FillFlags};
[INFO] [stdout]     |                                       --------------- previous import of the type `OrderConditions` here
[INFO] [stdout] ...
[INFO] [stdout] 113 | pub use lib::types::{Price, Quantity, OrderConditions};
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^ `OrderConditions` reimported here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OrderConditions` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `Quantity` is defined multiple times
[INFO] [stdout]    --> lib.rs:113:29
[INFO] [stdout]     |
[INFO] [stdout] 63  | pub use lib::types::{Price, Quantity, OrderConditions, FillFlags};
[INFO] [stdout]     |                             -------- previous import of the type `Quantity` here
[INFO] [stdout] ...
[INFO] [stdout] 113 | pub use lib::types::{Price, Quantity, OrderConditions};
[INFO] [stdout]     |                             ^^^^^^^^--
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             `Quantity` reimported here
[INFO] [stdout]     |                             help: remove unnecessary import
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Quantity` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `condition` is defined multiple times
[INFO] [stdout]    --> lib.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 64  | pub use lib::types::condition;
[INFO] [stdout]     |         --------------------- previous import of the module `condition` here
[INFO] [stdout] ...
[INFO] [stdout] 114 | pub use lib::types::condition; 
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ `condition` reimported here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `condition` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `OrderConditions` is defined multiple times
[INFO] [stdout]    --> lib.rs:113:39
[INFO] [stdout]     |
[INFO] [stdout] 63  | pub use lib::types::{Price, Quantity, OrderConditions, FillFlags};
[INFO] [stdout]     |                                       --------------- previous import of the type `OrderConditions` here
[INFO] [stdout] ...
[INFO] [stdout] 113 | pub use lib::types::{Price, Quantity, OrderConditions};
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^ `OrderConditions` reimported here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OrderConditions` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `condition` is defined multiple times
[INFO] [stdout]    --> lib.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 64  | pub use lib::types::condition;
[INFO] [stdout]     |         --------------------- previous import of the module `condition` here
[INFO] [stdout] ...
[INFO] [stdout] 114 | pub use lib::types::condition; 
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ `condition` reimported here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `condition` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `crate::lib::errors::OrderError`
[INFO] [stdout]   --> lib/order_tracker.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout] 8  | use crate::lib::errors::OrderError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> lib.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | #![deny(warnings)]
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `SIZE_UNCHANGED`
[INFO] [stdout]   --> lib/order_book.rs:17:96
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::lib::types::{Price, Quantity, OrderConditions, MARKET_ORDER_PRICE, PRICE_UNCHANGED, SIZE_UNCHANGED};
[INFO] [stdout]    |                                                                                                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `lib::order_book::OrderBook`
[INFO] [stdout]   --> lib.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub use lib::order_book::OrderBook;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `lib::order::Order`
[INFO] [stdout]    --> lib.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub use lib::order::Order;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `lib::order_book::OrderBook`
[INFO] [stdout]    --> lib.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub use lib::order_book::OrderBook;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused imports: `OrderConditions`, `Price`, and `Quantity`
[INFO] [stdout]    --> lib.rs:113:22
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub use lib::types::{Price, Quantity, OrderConditions};
[INFO] [stdout]     |                      ^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `lib::types::condition`
[INFO] [stdout]    --> lib.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub use lib::types::condition; 
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `crate::lib::errors::OrderError`
[INFO] [stdout]   --> lib/order_tracker.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout] 8  | use crate::lib::errors::OrderError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> lib.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | #![deny(warnings)]
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `SIZE_UNCHANGED`
[INFO] [stdout]   --> lib/order_book.rs:17:96
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::lib::types::{Price, Quantity, OrderConditions, MARKET_ORDER_PRICE, PRICE_UNCHANGED, SIZE_UNCHANGED};
[INFO] [stdout]    |                                                                                                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `lib::order_book::OrderBook`
[INFO] [stdout]   --> lib.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub use lib::order_book::OrderBook;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `lib::order::Order`
[INFO] [stdout]    --> lib.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub use lib::order::Order;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `lib::order_book::OrderBook`
[INFO] [stdout]    --> lib.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub use lib::order_book::OrderBook;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused imports: `OrderConditions`, `Price`, and `Quantity`
[INFO] [stdout]    --> lib.rs:113:22
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub use lib::types::{Price, Quantity, OrderConditions};
[INFO] [stdout]     |                      ^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `lib::types::condition`
[INFO] [stdout]    --> lib.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub use lib::types::condition; 
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `OB: HasDepthTracker` is not satisfied
[INFO] [stdout]   --> lib/depth_listener.rs:18:54
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn on_depth_change(&mut self, book: &OB, depth: &<OB as HasDepthTracker>::DepthTracker);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `HasDepthTracker` is not implemented for `OB`
[INFO] [stdout]    |
[INFO] [stdout] help: consider restricting type parameter `OB` with trait `HasDepthTracker`
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait DepthListener<OB: lib::depth_listener::HasDepthTracker> {
[INFO] [stdout]    |                           ++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `OB: HasDepthTracker` is not satisfied
[INFO] [stdout]   --> lib/depth_listener.rs:18:54
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn on_depth_change(&mut self, book: &OB, depth: &<OB as HasDepthTracker>::DepthTracker);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `HasDepthTracker` is not implemented for `OB`
[INFO] [stdout]    |
[INFO] [stdout] help: consider restricting type parameter `OB` with trait `HasDepthTracker`
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait DepthListener<OB: lib::depth_listener::HasDepthTracker> {
[INFO] [stdout]    |                           ++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `O: Clone` is not satisfied
[INFO] [stdout]   --> lib/order_book_listener.rs:17:47
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn on_order_book_change(&mut self, book: &OrderBook<O>);
[INFO] [stdout]    |                                               ^^^^^^^^^^^^ the trait `Clone` is not implemented for `O`
[INFO] [stdout]    |
[INFO] [stdout] note: required by a bound in `lib::order_book::OrderBook`
[INFO] [stdout]   --> lib/order_book.rs:29:33
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct OrderBook<O: Order + Clone> {
[INFO] [stdout]    |                                 ^^^^^ required by this bound in `OrderBook`
[INFO] [stdout] help: consider further restricting type parameter `O` with trait `Clone`
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait OrderBookListener<O: Order + std::clone::Clone> {
[INFO] [stdout]    |                                      +++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `O: Clone` is not satisfied
[INFO] [stdout]   --> lib/order_book_listener.rs:17:47
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn on_order_book_change(&mut self, book: &OrderBook<O>);
[INFO] [stdout]    |                                               ^^^^^^^^^^^^ the trait `Clone` is not implemented for `O`
[INFO] [stdout]    |
[INFO] [stdout] note: required by a bound in `lib::order_book::OrderBook`
[INFO] [stdout]   --> lib/order_book.rs:29:33
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct OrderBook<O: Order + Clone> {
[INFO] [stdout]    |                                 ^^^^^ required by this bound in `OrderBook`
[INFO] [stdout] help: consider further restricting type parameter `O` with trait `Clone`
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait OrderBookListener<O: Order + std::clone::Clone> {
[INFO] [stdout]    |                                      +++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn depth_order_book::OrderBook<O> + 'static)` doesn't implement `Debug`
[INFO] [stdout]   --> lib/depth_order_book.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Debug)]
[INFO] [stdout]    |          ----- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 23 |     order_book: Box<dyn OrderBook<O>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn depth_order_book::OrderBook<O> + 'static)` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Debug` is not implemented for `(dyn depth_order_book::OrderBook<O> + 'static)`
[INFO] [stdout]    = help: the following other types implement trait `Debug`:
[INFO] [stdout]              dyn Any + Send + Sync
[INFO] [stdout]              dyn Any + Send
[INFO] [stdout]              dyn Any
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn BboListener<DepthOrderBook<O, SIZE>> + 'static)` doesn't implement `Debug`
[INFO] [stdout]   --> lib/depth_order_book.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Debug)]
[INFO] [stdout]    |          ----- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 27 |     bbo_listener: RefCell<Option<Box<dyn BboListener<Self>>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn BboListener<DepthOrderBook<O, SIZE>> + 'static)` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Debug` is not implemented for `(dyn BboListener<DepthOrderBook<O, SIZE>> + 'static)`
[INFO] [stdout]    = help: the following other types implement trait `Debug`:
[INFO] [stdout]              dyn Any + Send + Sync
[INFO] [stdout]              dyn Any + Send
[INFO] [stdout]              dyn Any
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn DepthListener<DepthOrderBook<O, SIZE>> + 'static)` doesn't implement `Debug`
[INFO] [stdout]   --> lib/depth_order_book.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Debug)]
[INFO] [stdout]    |          ----- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 29 |     depth_listener: RefCell<Option<Box<dyn DepthListener<Self>>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn DepthListener<DepthOrderBook<O, SIZE>> + 'static)` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Debug` is not implemented for `(dyn DepthListener<DepthOrderBook<O, SIZE>> + 'static)`
[INFO] [stdout]    = help: the following other types implement trait `Debug`:
[INFO] [stdout]              dyn Any + Send + Sync
[INFO] [stdout]              dyn Any + Send
[INFO] [stdout]              dyn Any
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn depth_order_book::OrderBook<O> + 'static)` doesn't implement `Debug`
[INFO] [stdout]   --> lib/depth_order_book.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Debug)]
[INFO] [stdout]    |          ----- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 23 |     order_book: Box<dyn OrderBook<O>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn depth_order_book::OrderBook<O> + 'static)` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Debug` is not implemented for `(dyn depth_order_book::OrderBook<O> + 'static)`
[INFO] [stdout]    = help: the following other types implement trait `Debug`:
[INFO] [stdout]              dyn Any + Send + Sync
[INFO] [stdout]              dyn Any + Send
[INFO] [stdout]              dyn Any
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn BboListener<DepthOrderBook<O, SIZE>> + 'static)` doesn't implement `Debug`
[INFO] [stdout]   --> lib/depth_order_book.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Debug)]
[INFO] [stdout]    |          ----- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 27 |     bbo_listener: RefCell<Option<Box<dyn BboListener<Self>>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn BboListener<DepthOrderBook<O, SIZE>> + 'static)` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Debug` is not implemented for `(dyn BboListener<DepthOrderBook<O, SIZE>> + 'static)`
[INFO] [stdout]    = help: the following other types implement trait `Debug`:
[INFO] [stdout]              dyn Any + Send + Sync
[INFO] [stdout]              dyn Any + Send
[INFO] [stdout]              dyn Any
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn DepthListener<DepthOrderBook<O, SIZE>> + 'static)` doesn't implement `Debug`
[INFO] [stdout]   --> lib/depth_order_book.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Debug)]
[INFO] [stdout]    |          ----- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 29 |     depth_listener: RefCell<Option<Box<dyn DepthListener<Self>>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn DepthListener<DepthOrderBook<O, SIZE>> + 'static)` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Debug` is not implemented for `(dyn DepthListener<DepthOrderBook<O, SIZE>> + 'static)`
[INFO] [stdout]    = help: the following other types implement trait `Debug`:
[INFO] [stdout]              dyn Any + Send + Sync
[INFO] [stdout]              dyn Any + Send
[INFO] [stdout]              dyn Any
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `&O`
[INFO] [stdout]    --> lib/order_book.rs:225:34
[INFO] [stdout]     |
[INFO] [stdout] 225 |                 if tracker.ptr() == *order {
[INFO] [stdout]     |                    ------------- ^^ ------ O
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    &O
[INFO] [stdout]     |
[INFO] [stdout] help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl<O: Order + Clone> OrderBook<O> where &O: PartialEq<O> {
[INFO] [stdout]     |                                     ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `&O`
[INFO] [stdout]    --> lib/order_book.rs:246:38
[INFO] [stdout]     |
[INFO] [stdout] 246 |                     if tracker.ptr() == *order {
[INFO] [stdout]     |                        ------------- ^^ ------ O
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        &O
[INFO] [stdout]     |
[INFO] [stdout] help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl<O: Order + Clone> OrderBook<O> where &O: PartialEq<O> {
[INFO] [stdout]     |                                     ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `&O`
[INFO] [stdout]    --> lib/order_book.rs:269:34
[INFO] [stdout]     |
[INFO] [stdout] 269 |                 if tracker.ptr() == *order {
[INFO] [stdout]     |                    ------------- ^^ ------ O
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    &O
[INFO] [stdout]     |
[INFO] [stdout] help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl<O: Order + Clone> OrderBook<O> where &O: PartialEq<O> {
[INFO] [stdout]     |                                     ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `&O`
[INFO] [stdout]    --> lib/order_book.rs:290:38
[INFO] [stdout]     |
[INFO] [stdout] 290 |                     if tracker.ptr() == *order {
[INFO] [stdout]     |                        ------------- ^^ ------ O
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        &O
[INFO] [stdout]     |
[INFO] [stdout] help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl<O: Order + Clone> OrderBook<O> where &O: PartialEq<O> {
[INFO] [stdout]     |                                     ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `&O`
[INFO] [stdout]    --> lib/order_book.rs:225:34
[INFO] [stdout]     |
[INFO] [stdout] 225 |                 if tracker.ptr() == *order {
[INFO] [stdout]     |                    ------------- ^^ ------ O
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    &O
[INFO] [stdout]     |
[INFO] [stdout] help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl<O: Order + Clone> OrderBook<O> where &O: PartialEq<O> {
[INFO] [stdout]     |                                     ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `&O`
[INFO] [stdout]    --> lib/order_book.rs:246:38
[INFO] [stdout]     |
[INFO] [stdout] 246 |                     if tracker.ptr() == *order {
[INFO] [stdout]     |                        ------------- ^^ ------ O
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        &O
[INFO] [stdout]     |
[INFO] [stdout] help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl<O: Order + Clone> OrderBook<O> where &O: PartialEq<O> {
[INFO] [stdout]     |                                     ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `&O`
[INFO] [stdout]    --> lib/order_book.rs:269:34
[INFO] [stdout]     |
[INFO] [stdout] 269 |                 if tracker.ptr() == *order {
[INFO] [stdout]     |                    ------------- ^^ ------ O
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    &O
[INFO] [stdout]     |
[INFO] [stdout] help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl<O: Order + Clone> OrderBook<O> where &O: PartialEq<O> {
[INFO] [stdout]     |                                     ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `&O`
[INFO] [stdout]    --> lib/order_book.rs:290:38
[INFO] [stdout]     |
[INFO] [stdout] 290 |                     if tracker.ptr() == *order {
[INFO] [stdout]     |                        ------------- ^^ ------ O
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        &O
[INFO] [stdout]     |
[INFO] [stdout] help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl<O: Order + Clone> OrderBook<O> where &O: PartialEq<O> {
[INFO] [stdout]     |                                     ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> lib/order_book.rs:416:32
[INFO] [stdout]     |
[INFO] [stdout] 416 |         let is_stopped = key < self.market_price;
[INFO] [stdout]     |                          ---   ^^^^^^^^^^^^^^^^^ expected `ComparablePrice`, found `u64`
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          expected because this is `lib::comparable_price::ComparablePrice`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> lib/order_book.rs:416:32
[INFO] [stdout]     |
[INFO] [stdout] 416 |         let is_stopped = key < self.market_price;
[INFO] [stdout]     |                          ---   ^^^^^^^^^^^^^^^^^ expected `ComparablePrice`, found `u64`
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          expected because this is `lib::comparable_price::ComparablePrice`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `&&O`
[INFO] [stdout]    --> lib/order_book.rs:837:31
[INFO] [stdout]     |
[INFO] [stdout] 837 |             if &tracker.ptr() == order {
[INFO] [stdout]     |                -------------- ^^ ----- &O
[INFO] [stdout]     |                |
[INFO] [stdout]     |                &&O
[INFO] [stdout]     |
[INFO] [stdout] help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl<O: Order + Clone> OrderBook<O> where &O: PartialEq<O> {
[INFO] [stdout]     |                                     ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `&&O`
[INFO] [stdout]    --> lib/order_book.rs:861:31
[INFO] [stdout]     |
[INFO] [stdout] 861 |             if &tracker.ptr() == order {
[INFO] [stdout]     |                -------------- ^^ ----- &O
[INFO] [stdout]     |                |
[INFO] [stdout]     |                &&O
[INFO] [stdout]     |
[INFO] [stdout] help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl<O: Order + Clone> OrderBook<O> where &O: PartialEq<O> {
[INFO] [stdout]     |                                     ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `&&O`
[INFO] [stdout]    --> lib/order_book.rs:837:31
[INFO] [stdout]     |
[INFO] [stdout] 837 |             if &tracker.ptr() == order {
[INFO] [stdout]     |                -------------- ^^ ----- &O
[INFO] [stdout]     |                |
[INFO] [stdout]     |                &&O
[INFO] [stdout]     |
[INFO] [stdout] help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl<O: Order + Clone> OrderBook<O> where &O: PartialEq<O> {
[INFO] [stdout]     |                                     ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `&&O`
[INFO] [stdout]    --> lib/order_book.rs:861:31
[INFO] [stdout]     |
[INFO] [stdout] 861 |             if &tracker.ptr() == order {
[INFO] [stdout]     |                -------------- ^^ ----- &O
[INFO] [stdout]     |                |
[INFO] [stdout]     |                &&O
[INFO] [stdout]     |
[INFO] [stdout] help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl<O: Order + Clone> OrderBook<O> where &O: PartialEq<O> {
[INFO] [stdout]     |                                     ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> lib/order_book.rs:920:39
[INFO] [stdout]     |
[INFO] [stdout] 920 |                     listener.on_trade(self, callback.quantity, callback.price);
[INFO] [stdout]     |                              -------- ^^^^ expected `&OrderBook<O>`, found `&mut OrderBook<O>`
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: `lib::order_book::OrderBook<O>` and `lib::order_book::OrderBook<O>` have similar names, but are actually distinct types
[INFO] [stdout] note: `lib::order_book::OrderBook<O>` is defined in module `crate::lib#1::order_book` of the current crate
[INFO] [stdout]    --> lib/order_book.rs:29:1
[INFO] [stdout]     |
[INFO] [stdout] 29  | pub struct OrderBook<O: Order + Clone> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `lib::order_book::OrderBook<O>` is defined in module `crate::lib::order_book` of the current crate
[INFO] [stdout]    --> lib/order_book.rs:29:1
[INFO] [stdout]     |
[INFO] [stdout] 29  | pub struct OrderBook<O: Order + Clone> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> lib/trade_listener.rs:19:8
[INFO] [stdout]     |
[INFO] [stdout] 19  |     fn on_trade(&mut self, book: &OrderBook<O>, qty: Quantity, price: Price);
[INFO] [stdout]     |        ^^^^^^^^            ----
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> lib/order_book.rs:1041:51
[INFO] [stdout]      |
[INFO] [stdout] 1041 |                     listener.on_order_book_change(self);
[INFO] [stdout]      |                              -------------------- ^^^^ expected `&OrderBook<O>`, found `&mut OrderBook<O>`
[INFO] [stdout]      |                              |
[INFO] [stdout]      |                              arguments to this method are incorrect
[INFO] [stdout]      |
[INFO] [stdout]      = note: `lib::order_book::OrderBook<O>` and `lib::order_book::OrderBook<O>` have similar names, but are actually distinct types
[INFO] [stdout] note: `lib::order_book::OrderBook<O>` is defined in module `crate::lib#1::order_book` of the current crate
[INFO] [stdout]     --> lib/order_book.rs:29:1
[INFO] [stdout]      |
[INFO] [stdout] 29   | pub struct OrderBook<O: Order + Clone> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `lib::order_book::OrderBook<O>` is defined in module `crate::lib::order_book` of the current crate
[INFO] [stdout]     --> lib/order_book.rs:29:1
[INFO] [stdout]      |
[INFO] [stdout] 29   | pub struct OrderBook<O: Order + Clone> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> lib/order_book_listener.rs:17:8
[INFO] [stdout]      |
[INFO] [stdout] 17   |     fn on_order_book_change(&mut self, book: &OrderBook<O>);
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^            ----
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> lib/order_book.rs:920:39
[INFO] [stdout]     |
[INFO] [stdout] 920 |                     listener.on_trade(self, callback.quantity, callback.price);
[INFO] [stdout]     |                              -------- ^^^^ expected `&OrderBook<O>`, found `&mut OrderBook<O>`
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: `lib::order_book::OrderBook<O>` and `lib::order_book::OrderBook<O>` have similar names, but are actually distinct types
[INFO] [stdout] note: `lib::order_book::OrderBook<O>` is defined in module `crate::lib#1::order_book` of the current crate
[INFO] [stdout]    --> lib/order_book.rs:29:1
[INFO] [stdout]     |
[INFO] [stdout] 29  | pub struct OrderBook<O: Order + Clone> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `lib::order_book::OrderBook<O>` is defined in module `crate::lib::order_book` of the current crate
[INFO] [stdout]    --> lib/order_book.rs:29:1
[INFO] [stdout]     |
[INFO] [stdout] 29  | pub struct OrderBook<O: Order + Clone> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> lib/trade_listener.rs:19:8
[INFO] [stdout]     |
[INFO] [stdout] 19  |     fn on_trade(&mut self, book: &OrderBook<O>, qty: Quantity, price: Price);
[INFO] [stdout]     |        ^^^^^^^^            ----
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> lib/order_book.rs:1041:51
[INFO] [stdout]      |
[INFO] [stdout] 1041 |                     listener.on_order_book_change(self);
[INFO] [stdout]      |                              -------------------- ^^^^ expected `&OrderBook<O>`, found `&mut OrderBook<O>`
[INFO] [stdout]      |                              |
[INFO] [stdout]      |                              arguments to this method are incorrect
[INFO] [stdout]      |
[INFO] [stdout]      = note: `lib::order_book::OrderBook<O>` and `lib::order_book::OrderBook<O>` have similar names, but are actually distinct types
[INFO] [stdout] note: `lib::order_book::OrderBook<O>` is defined in module `crate::lib#1::order_book` of the current crate
[INFO] [stdout]     --> lib/order_book.rs:29:1
[INFO] [stdout]      |
[INFO] [stdout] 29   | pub struct OrderBook<O: Order + Clone> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `lib::order_book::OrderBook<O>` is defined in module `crate::lib::order_book` of the current crate
[INFO] [stdout]     --> lib/order_book.rs:29:1
[INFO] [stdout]      |
[INFO] [stdout] 29   | pub struct OrderBook<O: Order + Clone> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> lib/order_book_listener.rs:17:8
[INFO] [stdout]      |
[INFO] [stdout] 17   |     fn on_order_book_change(&mut self, book: &OrderBook<O>);
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^            ----
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused variable: `new_qty`
[INFO] [stdout]    --> lib/order_tracker.rs:118:17
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let new_qty = self.order.order_qty() + delta as Quantity;
[INFO] [stdout]     |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_qty`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[deny(unused_variables)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `*self` as mutable more than once at a time
[INFO] [stdout]    --> lib/depth.rs:283:35
[INFO] [stdout]     |
[INFO] [stdout] 278 |                 &mut self.bid_levels[level_idx]
[INFO] [stdout]     |                 ------------------------------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 283 |             level.set_last_change(self.next_change_id());
[INFO] [stdout]     |                   --------------- ^^^^ second mutable borrow occurs here
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   first borrow later used by call
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `*self` as mutable more than once at a time
[INFO] [stdout]    --> lib/depth.rs:294:39
[INFO] [stdout]     |
[INFO] [stdout] 287 |                 &mut self.excess_bid_levels
[INFO] [stdout]     |                 --------------------------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 294 |                 level.set_last_change(self.next_change_id());
[INFO] [stdout]     |                       --------------- ^^^^ second mutable borrow occurs here
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       first borrow later used by call
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `*self` as mutable more than once at a time
[INFO] [stdout]    --> lib/depth.rs:299:39
[INFO] [stdout]     |
[INFO] [stdout] 287 |                 &mut self.excess_bid_levels
[INFO] [stdout]     |                 --------------------------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 299 |                 level.set_last_change(self.next_change_id());
[INFO] [stdout]     |                                       ^^^^ second mutable borrow occurs here
[INFO] [stdout] 300 |                 excess_levels.insert(price, level);
[INFO] [stdout]     |                 ------------- first borrow later used here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `*self` as mutable more than once at a time
[INFO] [stdout]    --> lib/depth.rs:321:43
[INFO] [stdout]     |
[INFO] [stdout] 311 |                 &mut self.bid_levels[level_idx]
[INFO] [stdout]     |                 ------------------------------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 321 |                     level.set_last_change(self.next_change_id());
[INFO] [stdout]     |                           --------------- ^^^^ second mutable borrow occurs here
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           first borrow later used by call
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `*self` as mutable more than once at a time
[INFO] [stdout]    --> lib/depth.rs:338:47
[INFO] [stdout]     |
[INFO] [stdout] 327 |                 &mut self.excess_bid_levels
[INFO] [stdout]     |                 --------------------------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 338 |                         level.set_last_change(self.next_change_id());
[INFO] [stdout]     |                               --------------- ^^^^ second mutable borrow occurs here
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               first borrow later used by call
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `*self` as mutable more than once at a time
[INFO] [stdout]    --> lib/depth.rs:360:35
[INFO] [stdout]     |
[INFO] [stdout] 354 |                 &mut self.bid_levels[level_idx]
[INFO] [stdout]     |                 ------------------------------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 360 |             level.set_last_change(self.next_change_id());
[INFO] [stdout]     |                   --------------- ^^^^ second mutable borrow occurs here
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   first borrow later used by call
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `*self` as mutable more than once at a time
[INFO] [stdout]    --> lib/depth.rs:371:39
[INFO] [stdout]     |
[INFO] [stdout] 364 |                 &mut self.excess_bid_levels
[INFO] [stdout]     |                 --------------------------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 371 |                 level.set_last_change(self.next_change_id());
[INFO] [stdout]     |                       --------------- ^^^^ second mutable borrow occurs here
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       first borrow later used by call
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `*self` as mutable more than once at a time
[INFO] [stdout]    --> lib/depth.rs:388:35
[INFO] [stdout]     |
[INFO] [stdout] 382 |                 &mut self.bid_levels[level_idx]
[INFO] [stdout]     |                 ------------------------------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 388 |             level.set_last_change(self.next_change_id());
[INFO] [stdout]     |                   --------------- ^^^^ second mutable borrow occurs here
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   first borrow later used by call
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `*self` as mutable more than once at a time
[INFO] [stdout]    --> lib/depth.rs:399:39
[INFO] [stdout]     |
[INFO] [stdout] 392 |                 &mut self.excess_bid_levels
[INFO] [stdout]     |                 --------------------------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 399 |                 level.set_last_change(self.next_change_id());
[INFO] [stdout]     |                       --------------- ^^^^ second mutable borrow occurs here
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       first borrow later used by call
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `self.bid_levels[_]` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> lib/depth.rs:485:17
[INFO] [stdout]     |
[INFO] [stdout] 485 |                 self.bid_levels[i].copy_from(&self.bid_levels[prev]);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^---------^----------------------^
[INFO] [stdout]     |                 |                  |         |
[INFO] [stdout]     |                 |                  |         immutable borrow occurs here
[INFO] [stdout]     |                 |                  immutable borrow later used by call
[INFO] [stdout]     |                 mutable borrow occurs here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unused variable: `new_qty`
[INFO] [stdout]    --> lib/order_tracker.rs:118:17
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let new_qty = self.order.order_qty() + delta as Quantity;
[INFO] [stdout]     |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_qty`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[deny(unused_variables)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust-engine` (lib) due to 42 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `rust-engine` (lib test) due to 32 previous errors
[INFO] running `Command { std: "docker" "inspect" "80df8d9846872c20eac042fdcb440cbd331b98389e6753564f2553408f8f5730", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "80df8d9846872c20eac042fdcb440cbd331b98389e6753564f2553408f8f5730", kill_on_drop: false }`
[INFO] [stdout] 80df8d9846872c20eac042fdcb440cbd331b98389e6753564f2553408f8f5730
