[INFO] cloning repository https://github.com/loony-rs/loony-s3-bucket [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/loony-rs/loony-s3-bucket" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Floony-rs%2Floony-s3-bucket", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Floony-rs%2Floony-s3-bucket'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 0bcf989697e539a9b86398bf1a605eb7c5497165 [INFO] checking loony-rs/loony-s3-bucket against try#a7b168ac4977e8e93a43448b44847adaa305d5a9 for pr-150557 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Floony-rs%2Floony-s3-bucket" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/loony-rs/loony-s3-bucket [INFO] finished tweaking git repo https://github.com/loony-rs/loony-s3-bucket [INFO] tweaked toml for git repo https://github.com/loony-rs/loony-s3-bucket written to /workspace/builds/worker-6-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/loony-rs/loony-s3-bucket on toolchain a7b168ac4977e8e93a43448b44847adaa305d5a9 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a7b168ac4977e8e93a43448b44847adaa305d5a9" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/loony-rs/loony-s3-bucket 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" "+a7b168ac4977e8e93a43448b44847adaa305d5a9" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [ERROR] error running command: no output for 300 seconds [INFO] checking loony-rs/loony-s3-bucket against try#a7b168ac4977e8e93a43448b44847adaa305d5a9 for pr-150557 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Floony-rs%2Floony-s3-bucket" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/loony-rs/loony-s3-bucket [INFO] finished tweaking git repo https://github.com/loony-rs/loony-s3-bucket [INFO] tweaked toml for git repo https://github.com/loony-rs/loony-s3-bucket written to /workspace/builds/worker-6-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/loony-rs/loony-s3-bucket on toolchain a7b168ac4977e8e93a43448b44847adaa305d5a9 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a7b168ac4977e8e93a43448b44847adaa305d5a9" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/loony-rs/loony-s3-bucket 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" "+a7b168ac4977e8e93a43448b44847adaa305d5a9" "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] [stderr] Downloading crates ... [INFO] [stderr] Downloaded lru v0.16.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+a7b168ac4977e8e93a43448b44847adaa305d5a9" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] eba3ae3e2f0abc1b1486bc0cb6f1a7564027802814db68d39d62a0694dedfec1 [INFO] running `Command { std: "docker" "start" "-a" "eba3ae3e2f0abc1b1486bc0cb6f1a7564027802814db68d39d62a0694dedfec1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "eba3ae3e2f0abc1b1486bc0cb6f1a7564027802814db68d39d62a0694dedfec1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "eba3ae3e2f0abc1b1486bc0cb6f1a7564027802814db68d39d62a0694dedfec1", kill_on_drop: false }` [INFO] [stdout] eba3ae3e2f0abc1b1486bc0cb6f1a7564027802814db68d39d62a0694dedfec1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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=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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+a7b168ac4977e8e93a43448b44847adaa305d5a9" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 837a0cd770607726ca0c0b46d7538c18cfb07cb5eb43e98d3aedba927c0005f7 [INFO] running `Command { std: "docker" "start" "-a" "837a0cd770607726ca0c0b46d7538c18cfb07cb5eb43e98d3aedba927c0005f7", kill_on_drop: false }` [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Compiling cc v1.2.49 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling icu_properties_data v2.1.2 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking spin v0.9.8 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking axum-core v0.5.5 [INFO] [stderr] Checking crossbeam-queue v0.3.12 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking thiserror v2.0.17 [INFO] [stderr] Checking dashmap v6.1.0 [INFO] [stderr] Checking tracing-subscriber v0.3.22 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Checking lru v0.16.2 [INFO] [stderr] Checking md5 v0.8.0 [INFO] [stderr] Checking uuid v1.19.0 [INFO] [stderr] Checking tokio v1.48.0 [INFO] [stderr] Checking crossbeam v0.8.4 [INFO] [stderr] Checking icu_properties v2.1.2 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking chrono v0.4.42 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking url v2.5.7 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking multer v3.1.0 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking tokio-util v0.7.17 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking h2 v0.4.12 [INFO] [stderr] Checking tower-http v0.6.8 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking hyper v1.8.1 [INFO] [stderr] Checking hyper-util v0.1.19 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking axum v0.8.7 [INFO] [stderr] Checking reqwest v0.12.26 [INFO] [stderr] Checking loony-s3-bucket v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `IntoResponse` [INFO] [stdout] --> src/api.rs:6:16 [INFO] [stdout] | [INFO] [stdout] 6 | response::{IntoResponse, Response}, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::io::AsyncWriteExt` [INFO] [stdout] --> src/api.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use tokio::io::AsyncWriteExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BucketMetadata` and `ObjectMetadata` [INFO] [stdout] --> src/api.rs:14:23 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::metadata::{BucketMetadata, ObjectMetadata}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::multipart::MultipartManager` [INFO] [stdout] --> src/api.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use crate::multipart::MultipartManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IntoResponse` [INFO] [stdout] --> src/api.rs:6:16 [INFO] [stdout] | [INFO] [stdout] 6 | response::{IntoResponse, Response}, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::io::AsyncWriteExt` [INFO] [stdout] --> src/api.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use tokio::io::AsyncWriteExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BucketMetadata` and `ObjectMetadata` [INFO] [stdout] --> src/api.rs:14:23 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::metadata::{BucketMetadata, ObjectMetadata}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::multipart::MultipartManager` [INFO] [stdout] --> src/api.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use crate::multipart::MultipartManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Path` [INFO] [stdout] --> src/metadata.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Path` [INFO] [stdout] --> src/metadata.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MultipartUpload` and `Part` [INFO] [stdout] --> src/storage.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::multipart::{MultipartUpload, Part}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Path` [INFO] [stdout] --> src/storage.rs:12:17 [INFO] [stdout] | [INFO] [stdout] 12 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MultipartUpload` and `Part` [INFO] [stdout] --> src/storage.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::multipart::{MultipartUpload, Part}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Path` [INFO] [stdout] --> src/storage.rs:12:17 [INFO] [stdout] | [INFO] [stdout] 12 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/api.rs:263:5 [INFO] [stdout] | [INFO] [stdout] 263 | mut multipart: Multipart, [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/api.rs:263:5 [INFO] [stdout] | [INFO] [stdout] 263 | mut multipart: Multipart, [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/storage.rs:204:9 [INFO] [stdout] | [INFO] [stdout] 202 | todo!("Implement metadata deletion"); [INFO] [stdout] | ------------------------------------ any code following this expression is unreachable [INFO] [stdout] 203 | [INFO] [stdout] 204 | Ok(()) [INFO] [stdout] | ^^^^^^ unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/storage.rs:204:9 [INFO] [stdout] | [INFO] [stdout] 202 | todo!("Implement metadata deletion"); [INFO] [stdout] | ------------------------------------ any code following this expression is unreachable [INFO] [stdout] 203 | [INFO] [stdout] 204 | Ok(()) [INFO] [stdout] | ^^^^^^ unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::StreamExt` [INFO] [stdout] --> src/api.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use futures::StreamExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::StreamExt` [INFO] [stdout] --> src/api.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use futures::StreamExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `storage` [INFO] [stdout] --> src/api.rs:72:11 [INFO] [stdout] | [INFO] [stdout] 72 | State(storage): State>, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bucket` [INFO] [stdout] --> src/api.rs:90:10 [INFO] [stdout] | [INFO] [stdout] 90 | Path(bucket): Path, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_bucket` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `storage` [INFO] [stdout] --> src/api.rs:91:11 [INFO] [stdout] | [INFO] [stdout] 91 | State(storage): State>, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `storage` [INFO] [stdout] --> src/api.rs:100:11 [INFO] [stdout] | [INFO] [stdout] 100 | State(storage): State>, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `metadata_clone` [INFO] [stdout] --> src/storage.rs:338:13 [INFO] [stdout] | [INFO] [stdout] 338 | let metadata_clone = metadata.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata_clone` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data_clone` [INFO] [stdout] --> src/storage.rs:339:13 [INFO] [stdout] | [INFO] [stdout] 339 | let data_clone = data.to_vec(); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_clone` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cloned_node_indices` [INFO] [stdout] --> src/storage.rs:341:13 [INFO] [stdout] | [INFO] [stdout] 341 | let cloned_node_indices = node_indices.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cloned_node_indices` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cloned_bucket` [INFO] [stdout] --> src/storage.rs:342:13 [INFO] [stdout] | [INFO] [stdout] 342 | let cloned_bucket = bucket.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cloned_bucket` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cloned_key` [INFO] [stdout] --> src/storage.rs:343:13 [INFO] [stdout] | [INFO] [stdout] 343 | let cloned_key = key.to_string(); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cloned_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `storage` [INFO] [stdout] --> src/api.rs:72:11 [INFO] [stdout] | [INFO] [stdout] 72 | State(storage): State>, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `version_id` [INFO] [stdout] --> src/storage.rs:379:9 [INFO] [stdout] | [INFO] [stdout] 379 | version_id: Option, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_version_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bucket` [INFO] [stdout] --> src/api.rs:90:10 [INFO] [stdout] | [INFO] [stdout] 90 | Path(bucket): Path, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_bucket` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `storage` [INFO] [stdout] --> src/api.rs:91:11 [INFO] [stdout] | [INFO] [stdout] 91 | State(storage): State>, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `storage` [INFO] [stdout] --> src/api.rs:100:11 [INFO] [stdout] | [INFO] [stdout] 100 | State(storage): State>, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bucket` [INFO] [stdout] --> src/api.rs:205:11 [INFO] [stdout] | [INFO] [stdout] 205 | Path((bucket, key)): Path<(String, String)>, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_bucket` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/api.rs:205:19 [INFO] [stdout] | [INFO] [stdout] 205 | Path((bucket, key)): Path<(String, String)>, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `storage` [INFO] [stdout] --> src/api.rs:207:11 [INFO] [stdout] | [INFO] [stdout] 207 | State(storage): State>, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `metadata_clone` [INFO] [stdout] --> src/storage.rs:338:13 [INFO] [stdout] | [INFO] [stdout] 338 | let metadata_clone = metadata.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata_clone` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data_clone` [INFO] [stdout] --> src/storage.rs:339:13 [INFO] [stdout] | [INFO] [stdout] 339 | let data_clone = data.to_vec(); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_clone` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cloned_node_indices` [INFO] [stdout] --> src/storage.rs:341:13 [INFO] [stdout] | [INFO] [stdout] 341 | let cloned_node_indices = node_indices.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cloned_node_indices` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cloned_bucket` [INFO] [stdout] --> src/storage.rs:342:13 [INFO] [stdout] | [INFO] [stdout] 342 | let cloned_bucket = bucket.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cloned_bucket` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cloned_key` [INFO] [stdout] --> src/storage.rs:343:13 [INFO] [stdout] | [INFO] [stdout] 343 | let cloned_key = key.to_string(); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cloned_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `storage` [INFO] [stdout] --> src/api.rs:262:11 [INFO] [stdout] | [INFO] [stdout] 262 | State(storage): State>, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bucket` [INFO] [stdout] --> src/api.rs:284:5 [INFO] [stdout] | [INFO] [stdout] 284 | bucket: &str, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_bucket` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/api.rs:285:5 [INFO] [stdout] | [INFO] [stdout] 285 | key: &str, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `upload_id` [INFO] [stdout] --> src/api.rs:286:5 [INFO] [stdout] | [INFO] [stdout] 286 | upload_id: &HeaderValue, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_upload_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `part_number` [INFO] [stdout] --> src/api.rs:290:13 [INFO] [stdout] | [INFO] [stdout] 290 | let part_number = field [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_part_number` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `version_id` [INFO] [stdout] --> src/storage.rs:379:9 [INFO] [stdout] | [INFO] [stdout] 379 | version_id: Option, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_version_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bucket` [INFO] [stdout] --> src/api.rs:205:11 [INFO] [stdout] | [INFO] [stdout] 205 | Path((bucket, key)): Path<(String, String)>, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_bucket` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/api.rs:205:19 [INFO] [stdout] | [INFO] [stdout] 205 | Path((bucket, key)): Path<(String, String)>, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `storage` [INFO] [stdout] --> src/api.rs:207:11 [INFO] [stdout] | [INFO] [stdout] 207 | State(storage): State>, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `storage` [INFO] [stdout] --> src/api.rs:262:11 [INFO] [stdout] | [INFO] [stdout] 262 | State(storage): State>, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bucket` [INFO] [stdout] --> src/api.rs:284:5 [INFO] [stdout] | [INFO] [stdout] 284 | bucket: &str, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_bucket` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/api.rs:285:5 [INFO] [stdout] | [INFO] [stdout] 285 | key: &str, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `upload_id` [INFO] [stdout] --> src/api.rs:286:5 [INFO] [stdout] | [INFO] [stdout] 286 | upload_id: &HeaderValue, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_upload_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `part_number` [INFO] [stdout] --> src/api.rs:290:13 [INFO] [stdout] | [INFO] [stdout] 290 | let part_number = field [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_part_number` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/replication.rs:193:21 [INFO] [stdout] | [INFO] [stdout] 193 | Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/replication.rs:193:21 [INFO] [stdout] | [INFO] [stdout] 193 | Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `healthy_etag` is assigned to, but never used [INFO] [stdout] --> src/replication.rs:297:13 [INFO] [stdout] | [INFO] [stdout] 297 | let mut healthy_etag = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_healthy_etag` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `healthy_etag` is never read [INFO] [stdout] --> src/replication.rs:315:25 [INFO] [stdout] | [INFO] [stdout] 315 | healthy_etag = Some(etag); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `healthy_etag` is assigned to, but never used [INFO] [stdout] --> src/replication.rs:297:13 [INFO] [stdout] | [INFO] [stdout] 297 | let mut healthy_etag = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_healthy_etag` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `healthy_etag` is never read [INFO] [stdout] --> src/replication.rs:315:25 [INFO] [stdout] | [INFO] [stdout] 315 | healthy_etag = Some(etag); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `BucketResponse` is more private than the item `ListBucketsResponse::buckets` [INFO] [stdout] --> src/api.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | pub(crate) buckets: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `ListBucketsResponse::buckets` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `BucketResponse` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/api.rs:32:1 [INFO] [stdout] | [INFO] [stdout] 32 | struct BucketResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `ObjectResponse` is more private than the item `ListObjectsResponse::contents` [INFO] [stdout] --> src/api.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | pub(crate) contents: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `ListObjectsResponse::contents` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `ObjectResponse` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/api.rs:51:1 [INFO] [stdout] | [INFO] [stdout] 51 | struct ObjectResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `CommonPrefix` is more private than the item `ListObjectsResponse::common_prefixes` [INFO] [stdout] --> src/api.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | pub(crate) common_prefixes: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `ListObjectsResponse::common_prefixes` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `CommonPrefix` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/api.rs:61:1 [INFO] [stdout] | [INFO] [stdout] 61 | struct CommonPrefix { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `put_object` is never used [INFO] [stdout] --> src/api.rs:116:14 [INFO] [stdout] | [INFO] [stdout] 116 | pub async fn put_object( [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 `get_object` is never used [INFO] [stdout] --> src/api.rs:157:14 [INFO] [stdout] | [INFO] [stdout] 157 | pub async fn get_object( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `delete_object` is never used [INFO] [stdout] --> src/api.rs:204:14 [INFO] [stdout] | [INFO] [stdout] 204 | pub async fn delete_object( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `head_object` is never used [INFO] [stdout] --> src/api.rs:224:14 [INFO] [stdout] | [INFO] [stdout] 224 | pub async fn head_object( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `multipart_upload` is never used [INFO] [stdout] --> src/api.rs:259:14 [INFO] [stdout] | [INFO] [stdout] 259 | pub async fn multipart_upload( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_upload_part` is never used [INFO] [stdout] --> src/api.rs:283:10 [INFO] [stdout] | [INFO] [stdout] 283 | async fn handle_upload_part( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_range_header` is never used [INFO] [stdout] --> src/api.rs:315:4 [INFO] [stdout] | [INFO] [stdout] 315 | fn parse_range_header(range: &str) -> Option<(u64, u64)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BucketPolicy` is never constructed [INFO] [stdout] --> src/bucket.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BucketPolicy { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PolicyStatement` is never constructed [INFO] [stdout] --> src/bucket.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct PolicyStatement { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Principal` is never used [INFO] [stdout] --> src/bucket.rs:25:10 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum Principal { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BucketEncryption` is never constructed [INFO] [stdout] --> src/bucket.rs:32:12 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct BucketEncryption { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BucketVersioning` is never constructed [INFO] [stdout] --> src/bucket.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 38 | pub struct BucketVersioning { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BucketLifecycle` is never constructed [INFO] [stdout] --> src/bucket.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 44 | pub struct BucketLifecycle { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LifecycleRule` is never constructed [INFO] [stdout] --> src/bucket.rs:49:12 [INFO] [stdout] | [INFO] [stdout] 49 | pub struct LifecycleRule { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LifecycleFilter` is never constructed [INFO] [stdout] --> src/bucket.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct LifecycleFilter { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Transition` is never constructed [INFO] [stdout] --> src/bucket.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 67 | pub struct Transition { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Expiration` is never constructed [INFO] [stdout] --> src/bucket.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 73 | pub struct Expiration { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `NoncurrentVersionTransition` is never constructed [INFO] [stdout] --> src/bucket.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 79 | pub struct NoncurrentVersionTransition { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `NoncurrentVersionExpiration` is never constructed [INFO] [stdout] --> src/bucket.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 85 | pub struct NoncurrentVersionExpiration { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AbortIncompleteMultipartUpload` is never constructed [INFO] [stdout] --> src/bucket.rs:90:12 [INFO] [stdout] | [INFO] [stdout] 90 | pub struct AbortIncompleteMultipartUpload { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BucketManager` is never constructed [INFO] [stdout] --> src/bucket.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 94 | pub struct BucketManager { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `create_bucket`, and `delete_bucket` are never used [INFO] [stdout] --> src/bucket.rs:99:12 [INFO] [stdout] | [INFO] [stdout] 98 | impl BucketManager { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 99 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn create_bucket(&mut self, name: &str) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | pub fn delete_bucket(&mut self, name: &str) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Bucket` is never constructed [INFO] [stdout] --> src/bucket.rs:145:8 [INFO] [stdout] | [INFO] [stdout] 145 | struct Bucket { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_empty` is never used [INFO] [stdout] --> src/bucket.rs:158:8 [INFO] [stdout] | [INFO] [stdout] 157 | impl Bucket { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] 158 | fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BucketMetrics` is never constructed [INFO] [stdout] --> src/bucket.rs:166:8 [INFO] [stdout] | [INFO] [stdout] 166 | struct BucketMetrics { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/bucket.rs:173:8 [INFO] [stdout] | [INFO] [stdout] 172 | impl BucketMetrics { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 173 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CorsRule` is never constructed [INFO] [stdout] --> src/bucket.rs:183:12 [INFO] [stdout] | [INFO] [stdout] 183 | pub struct CorsRule { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `base_path`, `buckets`, `objects`, `version_index`, and `config` are never read [INFO] [stdout] --> src/metadata.rs:66:16 [INFO] [stdout] | [INFO] [stdout] 65 | pub struct MetadataStore { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 66 | pub(crate) base_path: PathBuf, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 67 | pub(crate) buckets: Arc>>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 68 | pub(crate) objects: Arc>>>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 69 | pub(crate) version_index: Arc>>>, // bucket/key -> list of version IDs [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 70 | pub(crate) config: MedataConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/metadata.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 73 | impl MetadataStore { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn load_from_disk(&self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn save_bucket_metadata( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn put_object_metadata( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | pub fn get_object_metadata( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 205 | pub fn get_object_version( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 232 | fn is_versioning_enabled(&self, bucket: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | fn save_object_metadata_to_disk( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MultipartUpload` is never constructed [INFO] [stdout] --> src/multipart.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct MultipartUpload { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Part` is never constructed [INFO] [stdout] --> src/multipart.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 27 | pub struct Part { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MultipartManager` is never constructed [INFO] [stdout] --> src/multipart.rs:35:12 [INFO] [stdout] | [INFO] [stdout] 35 | pub struct MultipartManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/multipart.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl MultipartManager { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 41 | pub fn new(data_dir: &Path) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn create_multipart_upload( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn upload_part( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn complete_multipart_upload( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn abort_multipart_upload(&self, upload_id: &str) -> Result<(), io::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 212 | pub fn list_parts( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | fn get_upload_dir(&self, upload_id: &str) -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 246 | fn save_upload_metadata(&self, upload: &MultipartUpload) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ReplicationError` is never used [INFO] [stdout] --> src/replication.rs:11:10 [INFO] [stdout] | [INFO] [stdout] 11 | pub enum ReplicationError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `client`, `tasks`, `semaphore`, `replication_factor`, `nodes`, and `max_retries` are never read [INFO] [stdout] --> src/replication.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct ReplicationManager { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 42 | client: Client, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 43 | tasks: Arc>>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 44 | semaphore: Arc, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 45 | replication_factor: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 46 | nodes: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 47 | max_retries: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `add_nodes`, `replicate_object`, `replicate_to_nodes`, `check_consistency`, and `repair_object` are never used [INFO] [stdout] --> src/replication.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 50 | impl ReplicationManager { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn add_nodes(&mut self, nodes: Vec) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | pub async fn replicate_object( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | async fn replicate_to_nodes( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | pub async fn check_consistency( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 294 | pub async fn repair_object(&self, bucket: &str, key: &str) -> Result<(), ReplicationError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConsistencyReport` is never constructed [INFO] [stdout] --> src/replication.rs:346:12 [INFO] [stdout] | [INFO] [stdout] 346 | pub struct ConsistencyReport { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `NotFound`, `BucketNotFound`, `ObjectTooLarge`, `ChecksumMismatch`, `ConcurrentModification`, and `InvalidRange` are never constructed [INFO] [stdout] --> src/storage.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 19 | pub enum StorageError { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] 20 | #[error("Object not found: {0}")] [INFO] [stdout] 21 | NotFound(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 22 | #[error("Bucket not found: {0}")] [INFO] [stdout] 23 | BucketNotFound(String), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | ObjectTooLarge(u64), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 30 | #[error("Checksum mismatch")] [INFO] [stdout] 31 | ChecksumMismatch, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 32 | #[error("Concurrent modification")] [INFO] [stdout] 33 | ConcurrentModification, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 34 | #[error("Invalid range")] [INFO] [stdout] 35 | InvalidRange, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StorageError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `node_id`, `metadata_store`, `replication_manager`, and `write_semaphore` are never read [INFO] [stdout] --> src/storage.rs:67:5 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct StorageNode { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 67 | node_id: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 68 | data_dir: PathBuf, [INFO] [stdout] 69 | metadata_store: MetadataStore, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 70 | replication_manager: ReplicationManager, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 71 | write_semaphore: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `object_index` and `config` are never read [INFO] [stdout] --> src/storage.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 74 | pub struct DistributedStorage { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 77 | object_index: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 78 | config: StorageConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `bucket`, `key`, `nodes`, and `primary_node` are never read [INFO] [stdout] --> src/storage.rs:83:5 [INFO] [stdout] | [INFO] [stdout] 82 | struct ObjectLocation { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 83 | bucket: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 84 | key: String, [INFO] [stdout] | ^^^ [INFO] [stdout] 85 | nodes: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 86 | primary_node: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ObjectLocation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/storage.rs:103:18 [INFO] [stdout] | [INFO] [stdout] 89 | impl StorageNode { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 103 | pub async fn put_object( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub async fn get_object( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 196 | pub async fn delete_object(&self, bucket: &str, key: &str) -> Result<(), StorageError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | fn compress_data(&self, data: &[u8]) -> Result, StorageError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 215 | fn decompress_data(&self, data: &[u8]) -> Result, StorageError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 223 | fn encrypt_data(&self, data: &[u8]) -> Result, StorageError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 233 | fn decrypt_data(&self, data: &[u8]) -> Result, StorageError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | fn get_object_path(&self, object_id: &str) -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `put_object`, `get_object`, and `select_nodes_for_object` are never used [INFO] [stdout] --> src/storage.rs:299:18 [INFO] [stdout] | [INFO] [stdout] 251 | impl DistributedStorage { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 299 | pub async fn put_object( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 374 | pub async fn get_object( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 411 | fn select_nodes_for_object(&self, bucket: &str, key: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PutObjectResult` is never constructed [INFO] [stdout] --> src/storage.rs:429:12 [INFO] [stdout] | [INFO] [stdout] 429 | pub struct PutObjectResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_etag` is never used [INFO] [stdout] --> src/utils.rs:4:8 [INFO] [stdout] | [INFO] [stdout] 4 | pub fn generate_etag(data: &[u8]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_multipart_etag` is never used [INFO] [stdout] --> src/utils.rs:11:8 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn generate_multipart_etag(part_etags: &[&str]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_sha256` is never used [INFO] [stdout] --> src/utils.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn calculate_sha256(data: &[u8]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_crc32` is never used [INFO] [stdout] --> src/utils.rs:29:8 [INFO] [stdout] | [INFO] [stdout] 29 | pub fn calculate_crc32(data: &[u8]) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_presigned_url` is never used [INFO] [stdout] --> src/utils.rs:35:8 [INFO] [stdout] | [INFO] [stdout] 35 | pub fn generate_presigned_url( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `BucketResponse` is more private than the item `ListBucketsResponse::buckets` [INFO] [stdout] --> src/api.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | pub(crate) buckets: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `ListBucketsResponse::buckets` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `BucketResponse` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/api.rs:32:1 [INFO] [stdout] | [INFO] [stdout] 32 | struct BucketResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `ObjectResponse` is more private than the item `ListObjectsResponse::contents` [INFO] [stdout] --> src/api.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | pub(crate) contents: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `ListObjectsResponse::contents` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `ObjectResponse` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/api.rs:51:1 [INFO] [stdout] | [INFO] [stdout] 51 | struct ObjectResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `CommonPrefix` is more private than the item `ListObjectsResponse::common_prefixes` [INFO] [stdout] --> src/api.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | pub(crate) common_prefixes: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `ListObjectsResponse::common_prefixes` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `CommonPrefix` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/api.rs:61:1 [INFO] [stdout] | [INFO] [stdout] 61 | struct CommonPrefix { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `put_object` is never used [INFO] [stdout] --> src/api.rs:116:14 [INFO] [stdout] | [INFO] [stdout] 116 | pub async fn put_object( [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 `get_object` is never used [INFO] [stdout] --> src/api.rs:157:14 [INFO] [stdout] | [INFO] [stdout] 157 | pub async fn get_object( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `delete_object` is never used [INFO] [stdout] --> src/api.rs:204:14 [INFO] [stdout] | [INFO] [stdout] 204 | pub async fn delete_object( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `head_object` is never used [INFO] [stdout] --> src/api.rs:224:14 [INFO] [stdout] | [INFO] [stdout] 224 | pub async fn head_object( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `multipart_upload` is never used [INFO] [stdout] --> src/api.rs:259:14 [INFO] [stdout] | [INFO] [stdout] 259 | pub async fn multipart_upload( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_upload_part` is never used [INFO] [stdout] --> src/api.rs:283:10 [INFO] [stdout] | [INFO] [stdout] 283 | async fn handle_upload_part( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_range_header` is never used [INFO] [stdout] --> src/api.rs:315:4 [INFO] [stdout] | [INFO] [stdout] 315 | fn parse_range_header(range: &str) -> Option<(u64, u64)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BucketPolicy` is never constructed [INFO] [stdout] --> src/bucket.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BucketPolicy { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PolicyStatement` is never constructed [INFO] [stdout] --> src/bucket.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct PolicyStatement { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Principal` is never used [INFO] [stdout] --> src/bucket.rs:25:10 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum Principal { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BucketEncryption` is never constructed [INFO] [stdout] --> src/bucket.rs:32:12 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct BucketEncryption { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BucketVersioning` is never constructed [INFO] [stdout] --> src/bucket.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 38 | pub struct BucketVersioning { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BucketLifecycle` is never constructed [INFO] [stdout] --> src/bucket.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 44 | pub struct BucketLifecycle { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LifecycleRule` is never constructed [INFO] [stdout] --> src/bucket.rs:49:12 [INFO] [stdout] | [INFO] [stdout] 49 | pub struct LifecycleRule { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LifecycleFilter` is never constructed [INFO] [stdout] --> src/bucket.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct LifecycleFilter { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Transition` is never constructed [INFO] [stdout] --> src/bucket.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 67 | pub struct Transition { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Expiration` is never constructed [INFO] [stdout] --> src/bucket.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 73 | pub struct Expiration { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `NoncurrentVersionTransition` is never constructed [INFO] [stdout] --> src/bucket.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 79 | pub struct NoncurrentVersionTransition { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `NoncurrentVersionExpiration` is never constructed [INFO] [stdout] --> src/bucket.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 85 | pub struct NoncurrentVersionExpiration { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AbortIncompleteMultipartUpload` is never constructed [INFO] [stdout] --> src/bucket.rs:90:12 [INFO] [stdout] | [INFO] [stdout] 90 | pub struct AbortIncompleteMultipartUpload { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BucketManager` is never constructed [INFO] [stdout] --> src/bucket.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 94 | pub struct BucketManager { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `create_bucket`, and `delete_bucket` are never used [INFO] [stdout] --> src/bucket.rs:99:12 [INFO] [stdout] | [INFO] [stdout] 98 | impl BucketManager { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 99 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn create_bucket(&mut self, name: &str) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | pub fn delete_bucket(&mut self, name: &str) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Bucket` is never constructed [INFO] [stdout] --> src/bucket.rs:145:8 [INFO] [stdout] | [INFO] [stdout] 145 | struct Bucket { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_empty` is never used [INFO] [stdout] --> src/bucket.rs:158:8 [INFO] [stdout] | [INFO] [stdout] 157 | impl Bucket { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] 158 | fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BucketMetrics` is never constructed [INFO] [stdout] --> src/bucket.rs:166:8 [INFO] [stdout] | [INFO] [stdout] 166 | struct BucketMetrics { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/bucket.rs:173:8 [INFO] [stdout] | [INFO] [stdout] 172 | impl BucketMetrics { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 173 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CorsRule` is never constructed [INFO] [stdout] --> src/bucket.rs:183:12 [INFO] [stdout] | [INFO] [stdout] 183 | pub struct CorsRule { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `base_path`, `buckets`, `objects`, `version_index`, and `config` are never read [INFO] [stdout] --> src/metadata.rs:66:16 [INFO] [stdout] | [INFO] [stdout] 65 | pub struct MetadataStore { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 66 | pub(crate) base_path: PathBuf, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 67 | pub(crate) buckets: Arc>>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 68 | pub(crate) objects: Arc>>>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 69 | pub(crate) version_index: Arc>>>, // bucket/key -> list of version IDs [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 70 | pub(crate) config: MedataConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/metadata.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 73 | impl MetadataStore { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn load_from_disk(&self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn save_bucket_metadata( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn put_object_metadata( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | pub fn get_object_metadata( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 205 | pub fn get_object_version( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 232 | fn is_versioning_enabled(&self, bucket: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | fn save_object_metadata_to_disk( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MultipartUpload` is never constructed [INFO] [stdout] --> src/multipart.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct MultipartUpload { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Part` is never constructed [INFO] [stdout] --> src/multipart.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 27 | pub struct Part { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MultipartManager` is never constructed [INFO] [stdout] --> src/multipart.rs:35:12 [INFO] [stdout] | [INFO] [stdout] 35 | pub struct MultipartManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/multipart.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl MultipartManager { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 41 | pub fn new(data_dir: &Path) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn create_multipart_upload( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn upload_part( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn complete_multipart_upload( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn abort_multipart_upload(&self, upload_id: &str) -> Result<(), io::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 212 | pub fn list_parts( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | fn get_upload_dir(&self, upload_id: &str) -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 246 | fn save_upload_metadata(&self, upload: &MultipartUpload) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ReplicationError` is never used [INFO] [stdout] --> src/replication.rs:11:10 [INFO] [stdout] | [INFO] [stdout] 11 | pub enum ReplicationError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `client`, `tasks`, `semaphore`, `replication_factor`, `nodes`, and `max_retries` are never read [INFO] [stdout] --> src/replication.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct ReplicationManager { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 42 | client: Client, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 43 | tasks: Arc>>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 44 | semaphore: Arc, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 45 | replication_factor: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 46 | nodes: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 47 | max_retries: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `add_nodes`, `replicate_object`, `replicate_to_nodes`, `check_consistency`, and `repair_object` are never used [INFO] [stdout] --> src/replication.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 50 | impl ReplicationManager { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn add_nodes(&mut self, nodes: Vec) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | pub async fn replicate_object( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | async fn replicate_to_nodes( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | pub async fn check_consistency( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 294 | pub async fn repair_object(&self, bucket: &str, key: &str) -> Result<(), ReplicationError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConsistencyReport` is never constructed [INFO] [stdout] --> src/replication.rs:346:12 [INFO] [stdout] | [INFO] [stdout] 346 | pub struct ConsistencyReport { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `NotFound`, `BucketNotFound`, `ObjectTooLarge`, `ChecksumMismatch`, `ConcurrentModification`, and `InvalidRange` are never constructed [INFO] [stdout] --> src/storage.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 19 | pub enum StorageError { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] 20 | #[error("Object not found: {0}")] [INFO] [stdout] 21 | NotFound(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 22 | #[error("Bucket not found: {0}")] [INFO] [stdout] 23 | BucketNotFound(String), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | ObjectTooLarge(u64), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 30 | #[error("Checksum mismatch")] [INFO] [stdout] 31 | ChecksumMismatch, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 32 | #[error("Concurrent modification")] [INFO] [stdout] 33 | ConcurrentModification, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 34 | #[error("Invalid range")] [INFO] [stdout] 35 | InvalidRange, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StorageError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `node_id`, `metadata_store`, `replication_manager`, and `write_semaphore` are never read [INFO] [stdout] --> src/storage.rs:67:5 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct StorageNode { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 67 | node_id: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 68 | data_dir: PathBuf, [INFO] [stdout] 69 | metadata_store: MetadataStore, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 70 | replication_manager: ReplicationManager, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 71 | write_semaphore: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `object_index` and `config` are never read [INFO] [stdout] --> src/storage.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 74 | pub struct DistributedStorage { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 77 | object_index: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 78 | config: StorageConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `bucket`, `key`, `nodes`, and `primary_node` are never read [INFO] [stdout] --> src/storage.rs:83:5 [INFO] [stdout] | [INFO] [stdout] 82 | struct ObjectLocation { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 83 | bucket: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 84 | key: String, [INFO] [stdout] | ^^^ [INFO] [stdout] 85 | nodes: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 86 | primary_node: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ObjectLocation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/storage.rs:103:18 [INFO] [stdout] | [INFO] [stdout] 89 | impl StorageNode { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 103 | pub async fn put_object( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub async fn get_object( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 196 | pub async fn delete_object(&self, bucket: &str, key: &str) -> Result<(), StorageError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | fn compress_data(&self, data: &[u8]) -> Result, StorageError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 215 | fn decompress_data(&self, data: &[u8]) -> Result, StorageError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 223 | fn encrypt_data(&self, data: &[u8]) -> Result, StorageError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 233 | fn decrypt_data(&self, data: &[u8]) -> Result, StorageError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | fn get_object_path(&self, object_id: &str) -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `put_object`, `get_object`, and `select_nodes_for_object` are never used [INFO] [stdout] --> src/storage.rs:299:18 [INFO] [stdout] | [INFO] [stdout] 251 | impl DistributedStorage { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 299 | pub async fn put_object( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 374 | pub async fn get_object( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 411 | fn select_nodes_for_object(&self, bucket: &str, key: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PutObjectResult` is never constructed [INFO] [stdout] --> src/storage.rs:429:12 [INFO] [stdout] | [INFO] [stdout] 429 | pub struct PutObjectResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_sha256` is never used [INFO] [stdout] --> src/utils.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn calculate_sha256(data: &[u8]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_crc32` is never used [INFO] [stdout] --> src/utils.rs:29:8 [INFO] [stdout] | [INFO] [stdout] 29 | pub fn calculate_crc32(data: &[u8]) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_presigned_url` is never used [INFO] [stdout] --> src/utils.rs:35:8 [INFO] [stdout] | [INFO] [stdout] 35 | pub fn generate_presigned_url( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.22s [INFO] running `Command { std: "docker" "inspect" "837a0cd770607726ca0c0b46d7538c18cfb07cb5eb43e98d3aedba927c0005f7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "837a0cd770607726ca0c0b46d7538c18cfb07cb5eb43e98d3aedba927c0005f7", kill_on_drop: false }` [INFO] [stdout] 837a0cd770607726ca0c0b46d7538c18cfb07cb5eb43e98d3aedba927c0005f7