[INFO] cloning repository https://github.com/ohadshen/rust_load_balancer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ohadshen/rust_load_balancer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fohadshen%2Frust_load_balancer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fohadshen%2Frust_load_balancer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 955b3009a1249fad71c1d4c76075fe7af8a6789d
[INFO] testing ohadshen/rust_load_balancer against beta-2025-10-28 for beta-1.92-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fohadshen%2Frust_load_balancer" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ohadshen/rust_load_balancer
[INFO] finished tweaking git repo https://github.com/ohadshen/rust_load_balancer
[INFO] tweaked toml for git repo https://github.com/ohadshen/rust_load_balancer written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ohadshen/rust_load_balancer on toolchain beta-2025-10-28
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-10-28" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ohadshen/rust_load_balancer 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" "+beta-2025-10-28" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ba5f8e5dfeb35a5a5e7062224b4aaf4a4c75a3dd49475fbb9bd14342bad2f0ec
[INFO] running `Command { std: "docker" "start" "-a" "ba5f8e5dfeb35a5a5e7062224b4aaf4a4c75a3dd49475fbb9bd14342bad2f0ec", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ba5f8e5dfeb35a5a5e7062224b4aaf4a4c75a3dd49475fbb9bd14342bad2f0ec", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ba5f8e5dfeb35a5a5e7062224b4aaf4a4c75a3dd49475fbb9bd14342bad2f0ec", kill_on_drop: false }`
[INFO] [stdout] ba5f8e5dfeb35a5a5e7062224b4aaf4a4c75a3dd49475fbb9bd14342bad2f0ec
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d958a51c6d448fa0b9ad832189671e84ea545fc76cbd6f6e1ca6e8ff5066dd01
[INFO] running `Command { std: "docker" "start" "-a" "d958a51c6d448fa0b9ad832189671e84ea545fc76cbd6f6e1ca6e8ff5066dd01", kill_on_drop: false }`
[INFO] [stderr]    Compiling bytes v1.6.0
[INFO] [stderr]    Compiling futures-core v0.3.30
[INFO] [stderr]    Compiling rustversion v1.0.17
[INFO] [stderr]    Compiling smallvec v1.13.2
[INFO] [stderr]    Compiling serde v1.0.203
[INFO] [stderr]    Compiling httparse v1.9.4
[INFO] [stderr]    Compiling tinyvec v1.6.1
[INFO] [stderr]    Compiling tower-service v0.3.2
[INFO] [stderr]    Compiling serde_json v1.0.118
[INFO] [stderr]    Compiling syn v2.0.66
[INFO] [stderr]    Compiling socket2 v0.5.7
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling signal-hook-registry v1.4.2
[INFO] [stderr]    Compiling tracing v0.1.40
[INFO] [stderr]    Compiling unicode-bidi v0.3.15
[INFO] [stderr]    Compiling tower-layer v0.3.2
[INFO] [stderr]    Compiling redis v0.8.0
[INFO] [stderr]    Compiling futures-channel v0.3.30
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling sync_wrapper v0.1.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling sync_wrapper v1.0.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.60
[INFO] [stderr]    Compiling sha1 v0.2.0
[INFO] [stderr]    Compiling matchit v0.7.3
[INFO] [stderr]    Compiling parking_lot v0.12.3
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling http v1.1.0
[INFO] [stderr]    Compiling axum-core v0.4.3
[INFO] [stderr]    Compiling axum v0.7.5
[INFO] [stderr]    Compiling unicode-normalization v0.1.23
[INFO] [stderr]    Compiling idna v0.1.5
[INFO] [stderr]    Compiling chrono v0.4.38
[INFO] [stderr]    Compiling http-body v1.0.0
[INFO] [stderr]    Compiling url v1.7.2
[INFO] [stderr]    Compiling futures-macro v0.3.30
[INFO] [stderr]    Compiling tokio-macros v2.3.0
[INFO] [stderr]    Compiling serde_derive v1.0.203
[INFO] [stderr]    Compiling pin-project-internal v1.1.5
[INFO] [stderr]    Compiling async-trait v0.1.80
[INFO] [stderr]    Compiling tokio v1.38.0
[INFO] [stderr]    Compiling futures-util v0.3.30
[INFO] [stderr]    Compiling pin-project v1.1.5
[INFO] [stderr]    Compiling http-body-util v0.1.2
[INFO] [stderr]    Compiling futures-executor v0.3.30
[INFO] [stderr]    Compiling futures v0.3.30
[INFO] [stderr]    Compiling hyper v1.3.1
[INFO] [stderr]    Compiling tower v0.4.13
[INFO] [stderr]    Compiling leaky-bucket v1.1.2
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling serde_path_to_error v0.1.16
[INFO] [stderr]    Compiling hyper-util v0.1.5
[INFO] [stderr]    Compiling rust-load-balancer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[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 imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/utils/rate_limiter_utils/fixed_window.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 |     sync::{Arc, Mutex},
[INFO] [stdout]   |            ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/utils/rate_limiter_utils/fixed_window.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 112 |         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout]     |            ^                                              ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 112 -         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout] 112 +         if self.limiter_model.map_by_ip.get(ip).is_none()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 |         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout]    |            ^                                              ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 73 -         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout] 73 +         if self.limiter_model.map_by_ip.get(ip).is_none()  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/utils/rate_limiter_utils/sliding_window.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 |         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout]     |            ^                                              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 124 -         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout] 124 +         if self.limiter_model.map_by_ip.get(ip).is_none()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/utils/rate_limiter_utils/token_bucket.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 |     sync::{Arc, Mutex},
[INFO] [stdout]   |            ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 |         if (self.token_bucket_limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout]    |            ^                                                           ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 85 -         if (self.token_bucket_limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout] 85 +         if self.token_bucket_limiter_model.map_by_ip.get(ip).is_none()  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum::response::IntoResponse`
[INFO] [stdout]  --> src/main.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use axum::response::IntoResponse;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::future::BoxFuture`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use futures::future::BoxFuture;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Handler` and `self`
[INFO] [stdout]   --> src/main.rs:11:21
[INFO] [stdout]    |
[INFO] [stdout] 11 | use axum::handler::{self, Handler};
[INFO] [stdout]    |                     ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Router` and `routing::get`
[INFO] [stdout]   --> src/main.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | use axum::{routing::get, Router};
[INFO] [stdout]    |            ^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `utils::rate_limiter_utils::leaky_bucket::LeakyBucketLimiter`
[INFO] [stdout]   --> src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use utils::rate_limiter_utils::leaky_bucket::LeakyBucketLimiter;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SlidingWindowLimiter` and `self`
[INFO] [stdout]   --> src/main.rs:16:49
[INFO] [stdout]    |
[INFO] [stdout] 16 | use utils::rate_limiter_utils::sliding_window::{self, SlidingWindowLimiter};
[INFO] [stdout]    |                                                 ^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `utils::rate_limiter_utils::token_bucket::TokenBucketLimiter`
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use utils::rate_limiter_utils::token_bucket::TokenBucketLimiter;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dal::redis::get as redis_get`
[INFO] [stdout]   --> src/main.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use dal::redis::get as redis_get;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dal::redis::set as redis_set`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use dal::redis::set as redis_set;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `utils::time_utils::await_5_seconds`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use utils::time_utils::await_5_seconds;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/main.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 |         if (limiter.lock().await.validate(ip).await) {
[INFO] [stdout]    |            ^                                       ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 56 -         if (limiter.lock().await.validate(ip).await) {
[INFO] [stdout] 56 +         if limiter.lock().await.validate(ip).await  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_connection` is never used
[INFO] [stdout]   --> src/dal/redis.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn get_connection() -> redis::RedisResult<redis::Connection> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set` is never used
[INFO] [stdout]   --> src/dal/redis.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn set(key: &str, value: &str) -> redis::RedisResult<()> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get` is never used
[INFO] [stdout]   --> src/dal/redis.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn get(key: &str) -> redis::RedisResult<String> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Post` is never constructed
[INFO] [stdout]  --> src/models.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Post {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_value` is never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/fixed_window.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl FixedWindowLimiterModel {
[INFO] [stdout]    | ---------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn get_value(&self, ip: &String) -> &FixedWindowLimiterByIpModel {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LeakyBucketLimiterByIpModel` is never constructed
[INFO] [stdout]  --> src/utils/rate_limiter_utils/leaky_bucket.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | struct LeakyBucketLimiterByIpModel {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl LeakyBucketLimiterByIpModel {
[INFO] [stdout]    | -------------------------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LeakyBucketLimiterModel` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | struct LeakyBucketLimiterModel {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_value` are never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl LeakyBucketLimiterModel {
[INFO] [stdout]    | ---------------------------- associated items in this implementation
[INFO] [stdout] 28 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn get_value(&self, ip: &String) -> &LeakyBucketLimiterByIpModel {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LeakyBucketLimiter` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct LeakyBucketLimiter {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `init_ip_in_map_if_needed` are never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl LeakyBucketLimiter {
[INFO] [stdout]    | ----------------------- associated items in this implementation
[INFO] [stdout] 66 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     fn init_ip_in_map_if_needed(&mut self, ip: &String) -> () {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WINDOW_SIZE` is never used
[INFO] [stdout]  --> src/utils/rate_limiter_utils/sliding_window.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | static WINDOW_SIZE: i64 = 10;
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlidingWindowLimiterByIpModel` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/sliding_window.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct SlidingWindowLimiterByIpModel {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `clone` and `new` are never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/sliding_window.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl SlidingWindowLimiterByIpModel {
[INFO] [stdout]    | ---------------------------------- associated items in this implementation
[INFO] [stdout] 17 |     fn clone(&self) -> Self {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlidingWindowLimiterModel` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/sliding_window.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct SlidingWindowLimiterModel {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_value`, `add_request`, `set_requests`, `set_last_requests`, and `set_last_refill_time` are never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/sliding_window.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl SlidingWindowLimiterModel {
[INFO] [stdout]    | ------------------------------ associated items in this implementation
[INFO] [stdout] 39 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn get_value(&self, ip: &String) -> &SlidingWindowLimiterByIpModel {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     fn add_request(&mut self, ip: &String) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn set_requests(&mut self, ip: &String, requests_to_set: i64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     fn set_last_requests(&mut self, ip: &String, last_requests_to_set: i64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn set_last_refill_time(&mut self, ip: String, last_refill_time: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlidingWindowLimiter` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/sliding_window.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct SlidingWindowLimiter {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `calculate_requests_in_sliding_window`, `init_ip_in_map_if_needed`, `move_window_if_needed`, and `new` are never used
[INFO] [stdout]    --> src/utils/rate_limiter_utils/sliding_window.rs:109:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | impl SlidingWindowLimiter {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 109 |     fn calculate_requests_in_sliding_window(&self, ip: &String) -> i64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     fn init_ip_in_map_if_needed(&mut self, ip: &String) -> () {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     fn move_window_if_needed(&mut self, ip: &String) -> () {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `MAX_DAILY_TOKENS` is never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static MAX_DAILY_TOKENS: i64 = 10;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `REFRESH_BUCKET_TIME` is never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | static REFRESH_BUCKET_TIME: i64 = 10;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TOKENS_ADDED_ON_REFILL` is never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | static TOKENS_ADDED_ON_REFILL: i64 = 2;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenBucketLimiterByIpModel` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | struct TokenBucketLimiterByIpModel {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `clone` and `new` are never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl TokenBucketLimiterByIpModel {
[INFO] [stdout]    | -------------------------------- associated items in this implementation
[INFO] [stdout] 21 |     fn clone(&self) -> Self {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenBucketLimiterModel` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct TokenBucketLimiterModel {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_tokens`, `set_tokens`, `get_last_refill_time`, and `set_last_refill_time` are never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl TokenBucketLimiterModel {
[INFO] [stdout]    | ---------------------------- associated items in this implementation
[INFO] [stdout] 41 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn get_tokens(&self, ip: &String) -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_tokens(&mut self, ip: &String, tokens: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn get_last_refill_time(&self, ip: String) -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn set_last_refill_time(&mut self, ip: String, last_refill_time: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenBucketLimiter` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct TokenBucketLimiter {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/utils/rate_limiter_utils/token_bucket.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | impl TokenBucketLimiter {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] 130 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `await_5_seconds` is never used
[INFO] [stdout]  --> src/utils/time_utils.rs:4:14
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub async fn await_5_seconds() {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 28.50s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: redis v0.8.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "d958a51c6d448fa0b9ad832189671e84ea545fc76cbd6f6e1ca6e8ff5066dd01", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d958a51c6d448fa0b9ad832189671e84ea545fc76cbd6f6e1ca6e8ff5066dd01", kill_on_drop: false }`
[INFO] [stdout] d958a51c6d448fa0b9ad832189671e84ea545fc76cbd6f6e1ca6e8ff5066dd01
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e197279efd86975856bea8a820079577c7bfc34f27660cb75a9b52ed869ca748
[INFO] running `Command { std: "docker" "start" "-a" "e197279efd86975856bea8a820079577c7bfc34f27660cb75a9b52ed869ca748", kill_on_drop: false }`
[INFO] [stderr]    Compiling rust-load-balancer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[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 imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/utils/rate_limiter_utils/fixed_window.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 |     sync::{Arc, Mutex},
[INFO] [stdout]   |            ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/utils/rate_limiter_utils/fixed_window.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 112 |         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout]     |            ^                                              ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 112 -         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout] 112 +         if self.limiter_model.map_by_ip.get(ip).is_none()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 |         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout]    |            ^                                              ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 73 -         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout] 73 +         if self.limiter_model.map_by_ip.get(ip).is_none()  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/utils/rate_limiter_utils/sliding_window.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 |         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout]     |            ^                                              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 124 -         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout] 124 +         if self.limiter_model.map_by_ip.get(ip).is_none()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/utils/rate_limiter_utils/token_bucket.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 |     sync::{Arc, Mutex},
[INFO] [stdout]   |            ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 |         if (self.token_bucket_limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout]    |            ^                                                           ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 85 -         if (self.token_bucket_limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stdout] 85 +         if self.token_bucket_limiter_model.map_by_ip.get(ip).is_none()  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum::response::IntoResponse`
[INFO] [stdout]  --> src/main.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use axum::response::IntoResponse;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::future::BoxFuture`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use futures::future::BoxFuture;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Handler` and `self`
[INFO] [stdout]   --> src/main.rs:11:21
[INFO] [stdout]    |
[INFO] [stdout] 11 | use axum::handler::{self, Handler};
[INFO] [stdout]    |                     ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Router` and `routing::get`
[INFO] [stdout]   --> src/main.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | use axum::{routing::get, Router};
[INFO] [stdout]    |            ^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `utils::rate_limiter_utils::leaky_bucket::LeakyBucketLimiter`
[INFO] [stdout]   --> src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use utils::rate_limiter_utils::leaky_bucket::LeakyBucketLimiter;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SlidingWindowLimiter` and `self`
[INFO] [stdout]   --> src/main.rs:16:49
[INFO] [stdout]    |
[INFO] [stdout] 16 | use utils::rate_limiter_utils::sliding_window::{self, SlidingWindowLimiter};
[INFO] [stdout]    |                                                 ^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `utils::rate_limiter_utils::token_bucket::TokenBucketLimiter`
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use utils::rate_limiter_utils::token_bucket::TokenBucketLimiter;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dal::redis::get as redis_get`
[INFO] [stdout]   --> src/main.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use dal::redis::get as redis_get;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dal::redis::set as redis_set`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use dal::redis::set as redis_set;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `utils::time_utils::await_5_seconds`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use utils::time_utils::await_5_seconds;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/main.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 |         if (limiter.lock().await.validate(ip).await) {
[INFO] [stdout]    |            ^                                       ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 56 -         if (limiter.lock().await.validate(ip).await) {
[INFO] [stdout] 56 +         if limiter.lock().await.validate(ip).await  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_connection` is never used
[INFO] [stdout]   --> src/dal/redis.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn get_connection() -> redis::RedisResult<redis::Connection> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set` is never used
[INFO] [stdout]   --> src/dal/redis.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn set(key: &str, value: &str) -> redis::RedisResult<()> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get` is never used
[INFO] [stdout]   --> src/dal/redis.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn get(key: &str) -> redis::RedisResult<String> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Post` is never constructed
[INFO] [stdout]  --> src/models.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Post {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_value` is never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/fixed_window.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl FixedWindowLimiterModel {
[INFO] [stdout]    | ---------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn get_value(&self, ip: &String) -> &FixedWindowLimiterByIpModel {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LeakyBucketLimiterByIpModel` is never constructed
[INFO] [stdout]  --> src/utils/rate_limiter_utils/leaky_bucket.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | struct LeakyBucketLimiterByIpModel {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl LeakyBucketLimiterByIpModel {
[INFO] [stdout]    | -------------------------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LeakyBucketLimiterModel` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | struct LeakyBucketLimiterModel {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_value` are never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl LeakyBucketLimiterModel {
[INFO] [stdout]    | ---------------------------- associated items in this implementation
[INFO] [stdout] 28 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn get_value(&self, ip: &String) -> &LeakyBucketLimiterByIpModel {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LeakyBucketLimiter` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct LeakyBucketLimiter {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `init_ip_in_map_if_needed` are never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl LeakyBucketLimiter {
[INFO] [stdout]    | ----------------------- associated items in this implementation
[INFO] [stdout] 66 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     fn init_ip_in_map_if_needed(&mut self, ip: &String) -> () {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WINDOW_SIZE` is never used
[INFO] [stdout]  --> src/utils/rate_limiter_utils/sliding_window.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | static WINDOW_SIZE: i64 = 10;
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlidingWindowLimiterByIpModel` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/sliding_window.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct SlidingWindowLimiterByIpModel {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `clone` and `new` are never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/sliding_window.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl SlidingWindowLimiterByIpModel {
[INFO] [stdout]    | ---------------------------------- associated items in this implementation
[INFO] [stdout] 17 |     fn clone(&self) -> Self {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlidingWindowLimiterModel` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/sliding_window.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct SlidingWindowLimiterModel {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_value`, `add_request`, `set_requests`, `set_last_requests`, and `set_last_refill_time` are never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/sliding_window.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl SlidingWindowLimiterModel {
[INFO] [stdout]    | ------------------------------ associated items in this implementation
[INFO] [stdout] 39 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn get_value(&self, ip: &String) -> &SlidingWindowLimiterByIpModel {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     fn add_request(&mut self, ip: &String) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn set_requests(&mut self, ip: &String, requests_to_set: i64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     fn set_last_requests(&mut self, ip: &String, last_requests_to_set: i64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn set_last_refill_time(&mut self, ip: String, last_refill_time: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlidingWindowLimiter` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/sliding_window.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct SlidingWindowLimiter {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `calculate_requests_in_sliding_window`, `init_ip_in_map_if_needed`, `move_window_if_needed`, and `new` are never used
[INFO] [stdout]    --> src/utils/rate_limiter_utils/sliding_window.rs:109:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | impl SlidingWindowLimiter {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 109 |     fn calculate_requests_in_sliding_window(&self, ip: &String) -> i64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     fn init_ip_in_map_if_needed(&mut self, ip: &String) -> () {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     fn move_window_if_needed(&mut self, ip: &String) -> () {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `MAX_DAILY_TOKENS` is never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static MAX_DAILY_TOKENS: i64 = 10;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `REFRESH_BUCKET_TIME` is never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | static REFRESH_BUCKET_TIME: i64 = 10;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TOKENS_ADDED_ON_REFILL` is never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | static TOKENS_ADDED_ON_REFILL: i64 = 2;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenBucketLimiterByIpModel` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | struct TokenBucketLimiterByIpModel {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `clone` and `new` are never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl TokenBucketLimiterByIpModel {
[INFO] [stdout]    | -------------------------------- associated items in this implementation
[INFO] [stdout] 21 |     fn clone(&self) -> Self {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenBucketLimiterModel` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct TokenBucketLimiterModel {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_tokens`, `set_tokens`, `get_last_refill_time`, and `set_last_refill_time` are never used
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl TokenBucketLimiterModel {
[INFO] [stdout]    | ---------------------------- associated items in this implementation
[INFO] [stdout] 41 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn get_tokens(&self, ip: &String) -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_tokens(&mut self, ip: &String, tokens: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn get_last_refill_time(&self, ip: String) -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn set_last_refill_time(&mut self, ip: String, last_refill_time: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenBucketLimiter` is never constructed
[INFO] [stdout]   --> src/utils/rate_limiter_utils/token_bucket.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct TokenBucketLimiter {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/utils/rate_limiter_utils/token_bucket.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | impl TokenBucketLimiter {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] 130 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `await_5_seconds` is never used
[INFO] [stdout]  --> src/utils/time_utils.rs:4:14
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub async fn await_5_seconds() {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.72s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: redis v0.8.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "e197279efd86975856bea8a820079577c7bfc34f27660cb75a9b52ed869ca748", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e197279efd86975856bea8a820079577c7bfc34f27660cb75a9b52ed869ca748", kill_on_drop: false }`
[INFO] [stdout] e197279efd86975856bea8a820079577c7bfc34f27660cb75a9b52ed869ca748
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 4c2bd30a66af178b90095b8af4e278fad3365896ff214b2d142e76ace40c8569
[INFO] running `Command { std: "docker" "start" "-a" "4c2bd30a66af178b90095b8af4e278fad3365896ff214b2d142e76ace40c8569", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `std::fmt::format`
[INFO] [stderr]  --> src/main.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::fmt::format;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Arc` and `Mutex`
[INFO] [stderr]  --> src/utils/rate_limiter_utils/fixed_window.rs:4:12
[INFO] [stderr]   |
[INFO] [stderr] 4 |     sync::{Arc, Mutex},
[INFO] [stderr]   |            ^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/utils/rate_limiter_utils/fixed_window.rs:112:12
[INFO] [stderr]     |
[INFO] [stderr] 112 |         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stderr]     |            ^                                              ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 112 -         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stderr] 112 +         if self.limiter_model.map_by_ip.get(ip).is_none()  {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:73:12
[INFO] [stderr]    |
[INFO] [stderr] 73 |         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stderr]    |            ^                                              ^
[INFO] [stderr]    |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr] 73 -         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stderr] 73 +         if self.limiter_model.map_by_ip.get(ip).is_none()  {
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/utils/rate_limiter_utils/sliding_window.rs:124:12
[INFO] [stderr]     |
[INFO] [stderr] 124 |         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stderr]     |            ^                                              ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 124 -         if (self.limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stderr] 124 +         if self.limiter_model.map_by_ip.get(ip).is_none()  {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Arc` and `Mutex`
[INFO] [stderr]  --> src/utils/rate_limiter_utils/token_bucket.rs:4:12
[INFO] [stderr]   |
[INFO] [stderr] 4 |     sync::{Arc, Mutex},
[INFO] [stderr]   |            ^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]   --> src/utils/rate_limiter_utils/token_bucket.rs:85:12
[INFO] [stderr]    |
[INFO] [stderr] 85 |         if (self.token_bucket_limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stderr]    |            ^                                                           ^
[INFO] [stderr]    |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr] 85 -         if (self.token_bucket_limiter_model.map_by_ip.get(ip).is_none()) {
[INFO] [stderr] 85 +         if self.token_bucket_limiter_model.map_by_ip.get(ip).is_none()  {
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `axum::response::IntoResponse`
[INFO] [stderr]  --> src/main.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use axum::response::IntoResponse;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `futures::future::BoxFuture`
[INFO] [stderr]  --> src/main.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use futures::future::BoxFuture;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Handler` and `self`
[INFO] [stderr]   --> src/main.rs:11:21
[INFO] [stderr]    |
[INFO] [stderr] 11 | use axum::handler::{self, Handler};
[INFO] [stderr]    |                     ^^^^  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Router` and `routing::get`
[INFO] [stderr]   --> src/main.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | use axum::{routing::get, Router};
[INFO] [stderr]    |            ^^^^^^^^^^^^  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `utils::rate_limiter_utils::leaky_bucket::LeakyBucketLimiter`
[INFO] [stderr]   --> src/main.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | use utils::rate_limiter_utils::leaky_bucket::LeakyBucketLimiter;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `SlidingWindowLimiter` and `self`
[INFO] [stderr]   --> src/main.rs:16:49
[INFO] [stderr]    |
[INFO] [stderr] 16 | use utils::rate_limiter_utils::sliding_window::{self, SlidingWindowLimiter};
[INFO] [stderr]    |                                                 ^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `utils::rate_limiter_utils::token_bucket::TokenBucketLimiter`
[INFO] [stderr]   --> src/main.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 17 | use utils::rate_limiter_utils::token_bucket::TokenBucketLimiter;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `dal::redis::get as redis_get`
[INFO] [stderr]   --> src/main.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | use dal::redis::get as redis_get;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `dal::redis::set as redis_set`
[INFO] [stderr]   --> src/main.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 26 | use dal::redis::set as redis_set;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `utils::time_utils::await_5_seconds`
[INFO] [stderr]   --> src/main.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr] 27 | use utils::time_utils::await_5_seconds;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]   --> src/main.rs:56:12
[INFO] [stderr]    |
[INFO] [stderr] 56 |         if (limiter.lock().await.validate(ip).await) {
[INFO] [stderr]    |            ^                                       ^
[INFO] [stderr]    |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr] 56 -         if (limiter.lock().await.validate(ip).await) {
[INFO] [stderr] 56 +         if limiter.lock().await.validate(ip).await  {
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_connection` is never used
[INFO] [stderr]   --> src/dal/redis.rs:10:8
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub fn get_connection() -> redis::RedisResult<redis::Connection> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `set` is never used
[INFO] [stderr]   --> src/dal/redis.rs:15:8
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub fn set(key: &str, value: &str) -> redis::RedisResult<()> {
[INFO] [stderr]    |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get` is never used
[INFO] [stderr]   --> src/dal/redis.rs:20:8
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub fn get(key: &str) -> redis::RedisResult<String> {
[INFO] [stderr]    |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Post` is never constructed
[INFO] [stderr]  --> src/models.rs:4:12
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub struct Post {
[INFO] [stderr]   |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_value` is never used
[INFO] [stderr]   --> src/utils/rate_limiter_utils/fixed_window.rs:44:12
[INFO] [stderr]    |
[INFO] [stderr] 37 | impl FixedWindowLimiterModel {
[INFO] [stderr]    | ---------------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 44 |     pub fn get_value(&self, ip: &String) -> &FixedWindowLimiterByIpModel {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LeakyBucketLimiterByIpModel` is never constructed
[INFO] [stderr]  --> src/utils/rate_limiter_utils/leaky_bucket.rs:7:8
[INFO] [stderr]   |
[INFO] [stderr] 7 | struct LeakyBucketLimiterByIpModel {
[INFO] [stderr]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl LeakyBucketLimiterByIpModel {
[INFO] [stderr]    | -------------------------------- associated function in this implementation
[INFO] [stderr] 12 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LeakyBucketLimiterModel` is never constructed
[INFO] [stderr]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:23:8
[INFO] [stderr]    |
[INFO] [stderr] 23 | struct LeakyBucketLimiterModel {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `get_value` are never used
[INFO] [stderr]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:28:12
[INFO] [stderr]    |
[INFO] [stderr] 27 | impl LeakyBucketLimiterModel {
[INFO] [stderr]    | ---------------------------- associated items in this implementation
[INFO] [stderr] 28 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 34 |     pub fn get_value(&self, ip: &String) -> &LeakyBucketLimiterByIpModel {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LeakyBucketLimiter` is never constructed
[INFO] [stderr]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:39:12
[INFO] [stderr]    |
[INFO] [stderr] 39 | pub struct LeakyBucketLimiter {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `init_ip_in_map_if_needed` are never used
[INFO] [stderr]   --> src/utils/rate_limiter_utils/leaky_bucket.rs:66:12
[INFO] [stderr]    |
[INFO] [stderr] 65 | impl LeakyBucketLimiter {
[INFO] [stderr]    | ----------------------- associated items in this implementation
[INFO] [stderr] 66 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 72 |     fn init_ip_in_map_if_needed(&mut self, ip: &String) -> () {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: static `WINDOW_SIZE` is never used
[INFO] [stderr]  --> src/utils/rate_limiter_utils/sliding_window.rs:8:8
[INFO] [stderr]   |
[INFO] [stderr] 8 | static WINDOW_SIZE: i64 = 10;
[INFO] [stderr]   |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SlidingWindowLimiterByIpModel` is never constructed
[INFO] [stderr]   --> src/utils/rate_limiter_utils/sliding_window.rs:10:8
[INFO] [stderr]    |
[INFO] [stderr] 10 | struct SlidingWindowLimiterByIpModel {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `clone` and `new` are never used
[INFO] [stderr]   --> src/utils/rate_limiter_utils/sliding_window.rs:17:8
[INFO] [stderr]    |
[INFO] [stderr] 16 | impl SlidingWindowLimiterByIpModel {
[INFO] [stderr]    | ---------------------------------- associated items in this implementation
[INFO] [stderr] 17 |     fn clone(&self) -> Self {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 25 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SlidingWindowLimiterModel` is never constructed
[INFO] [stderr]   --> src/utils/rate_limiter_utils/sliding_window.rs:34:8
[INFO] [stderr]    |
[INFO] [stderr] 34 | struct SlidingWindowLimiterModel {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `get_value`, `add_request`, `set_requests`, `set_last_requests`, and `set_last_refill_time` are never used
[INFO] [stderr]   --> src/utils/rate_limiter_utils/sliding_window.rs:39:12
[INFO] [stderr]    |
[INFO] [stderr] 38 | impl SlidingWindowLimiterModel {
[INFO] [stderr]    | ------------------------------ associated items in this implementation
[INFO] [stderr] 39 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 45 |     pub fn get_value(&self, ip: &String) -> &SlidingWindowLimiterByIpModel {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 49 |     fn add_request(&mut self, ip: &String) {
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 55 |     fn set_requests(&mut self, ip: &String, requests_to_set: i64) {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 62 |     fn set_last_requests(&mut self, ip: &String, last_requests_to_set: i64) {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 68 |     pub fn set_last_refill_time(&mut self, ip: String, last_refill_time: i64) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SlidingWindowLimiter` is never constructed
[INFO] [stderr]   --> src/utils/rate_limiter_utils/sliding_window.rs:76:12
[INFO] [stderr]    |
[INFO] [stderr] 76 | pub struct SlidingWindowLimiter {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `calculate_requests_in_sliding_window`, `init_ip_in_map_if_needed`, `move_window_if_needed`, and `new` are never used
[INFO] [stderr]    --> src/utils/rate_limiter_utils/sliding_window.rs:109:8
[INFO] [stderr]     |
[INFO] [stderr] 108 | impl SlidingWindowLimiter {
[INFO] [stderr]     | ------------------------- associated items in this implementation
[INFO] [stderr] 109 |     fn calculate_requests_in_sliding_window(&self, ip: &String) -> i64 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 123 |     fn init_ip_in_map_if_needed(&mut self, ip: &String) -> () {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 132 |     fn move_window_if_needed(&mut self, ip: &String) -> () {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 150 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: static `MAX_DAILY_TOKENS` is never used
[INFO] [stderr]   --> src/utils/rate_limiter_utils/token_bucket.rs:11:8
[INFO] [stderr]    |
[INFO] [stderr] 11 | static MAX_DAILY_TOKENS: i64 = 10;
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: static `REFRESH_BUCKET_TIME` is never used
[INFO] [stderr]   --> src/utils/rate_limiter_utils/token_bucket.rs:12:8
[INFO] [stderr]    |
[INFO] [stderr] 12 | static REFRESH_BUCKET_TIME: i64 = 10;
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: static `TOKENS_ADDED_ON_REFILL` is never used
[INFO] [stderr]   --> src/utils/rate_limiter_utils/token_bucket.rs:13:8
[INFO] [stderr]    |
[INFO] [stderr] 13 | static TOKENS_ADDED_ON_REFILL: i64 = 2;
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TokenBucketLimiterByIpModel` is never constructed
[INFO] [stderr]   --> src/utils/rate_limiter_utils/token_bucket.rs:15:8
[INFO] [stderr]    |
[INFO] [stderr] 15 | struct TokenBucketLimiterByIpModel {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `clone` and `new` are never used
[INFO] [stderr]   --> src/utils/rate_limiter_utils/token_bucket.rs:21:8
[INFO] [stderr]    |
[INFO] [stderr] 20 | impl TokenBucketLimiterByIpModel {
[INFO] [stderr]    | -------------------------------- associated items in this implementation
[INFO] [stderr] 21 |     fn clone(&self) -> Self {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 28 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TokenBucketLimiterModel` is never constructed
[INFO] [stderr]   --> src/utils/rate_limiter_utils/token_bucket.rs:36:8
[INFO] [stderr]    |
[INFO] [stderr] 36 | struct TokenBucketLimiterModel {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `get_tokens`, `set_tokens`, `get_last_refill_time`, and `set_last_refill_time` are never used
[INFO] [stderr]   --> src/utils/rate_limiter_utils/token_bucket.rs:41:12
[INFO] [stderr]    |
[INFO] [stderr] 40 | impl TokenBucketLimiterModel {
[INFO] [stderr]    | ---------------------------- associated items in this implementation
[INFO] [stderr] 41 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 47 |     pub fn get_tokens(&self, ip: &String) -> i64 {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 51 |     pub fn set_tokens(&mut self, ip: &String, tokens: i64) {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 59 |     pub fn get_last_refill_time(&self, ip: String) -> i64 {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 63 |     pub fn set_last_refill_time(&mut self, ip: String, last_refill_time: i64) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TokenBucketLimiter` is never constructed
[INFO] [stderr]   --> src/utils/rate_limiter_utils/token_bucket.rs:75:12
[INFO] [stderr]    |
[INFO] [stderr] 75 | pub struct TokenBucketLimiter {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]    --> src/utils/rate_limiter_utils/token_bucket.rs:130:12
[INFO] [stderr]     |
[INFO] [stderr] 129 | impl TokenBucketLimiter {
[INFO] [stderr]     | ----------------------- associated function in this implementation
[INFO] [stderr] 130 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `await_5_seconds` is never used
[INFO] [stderr]  --> src/utils/time_utils.rs:4:14
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub async fn await_5_seconds() {
[INFO] [stderr]   |              ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rust-load-balancer` (bin "rust-load-balancer" test) generated 46 warnings (run `cargo fix --bin "rust-load-balancer" -p rust-load-balancer --tests` to apply 18 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: redis v0.8.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rust_load_balancer-54e8ec9fd3f3a1e5)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "4c2bd30a66af178b90095b8af4e278fad3365896ff214b2d142e76ace40c8569", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4c2bd30a66af178b90095b8af4e278fad3365896ff214b2d142e76ace40c8569", kill_on_drop: false }`
[INFO] [stdout] 4c2bd30a66af178b90095b8af4e278fad3365896ff214b2d142e76ace40c8569
