[INFO] fetching crate naru-config 0.7.0... [INFO] testing naru-config-0.7.0 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-2 [INFO] extracting crate naru-config 0.7.0 into /workspace/builds/worker-2-tc1/source [INFO] started tweaking crates.io crate naru-config 0.7.0 [INFO] finished tweaking crates.io crate naru-config 0.7.0 [INFO] tweaked toml for crates.io crate naru-config 0.7.0 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate naru-config 0.7.0 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate naru-config 0.7.0 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" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded argon2 v0.5.3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 20d027ac091ac80cbc5774867a3a32edf6cf6fc5a181b652c2b47497b33e3a42 [INFO] running `Command { std: "docker" "start" "-a" "20d027ac091ac80cbc5774867a3a32edf6cf6fc5a181b652c2b47497b33e3a42", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "20d027ac091ac80cbc5774867a3a32edf6cf6fc5a181b652c2b47497b33e3a42", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "20d027ac091ac80cbc5774867a3a32edf6cf6fc5a181b652c2b47497b33e3a42", kill_on_drop: false }` [INFO] [stdout] 20d027ac091ac80cbc5774867a3a32edf6cf6fc5a181b652c2b47497b33e3a42 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 88798d264bd2e53d488ce74ca40903264fee0e9eabec2595e43de06eb952de3d [INFO] running `Command { std: "docker" "start" "-a" "88798d264bd2e53d488ce74ca40903264fee0e9eabec2595e43de06eb952de3d", kill_on_drop: false }` [INFO] [stderr] Compiling unicode-ident v1.0.22 [INFO] [stderr] Compiling zerocopy v0.8.33 [INFO] [stderr] Compiling memchr v2.7.6 [INFO] [stderr] Compiling bitflags v2.10.0 [INFO] [stderr] Compiling opaque-debug v0.3.1 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling anyhow v1.0.102 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling inout v0.1.4 [INFO] [stderr] Compiling base64ct v1.8.3 [INFO] [stderr] Compiling console v0.16.3 [INFO] [stderr] Compiling shell-words v1.1.1 [INFO] [stderr] Compiling fs2 v0.4.3 [INFO] [stderr] Compiling universal-hash v0.5.1 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling aead v0.5.2 [INFO] [stderr] Compiling cipher v0.4.4 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling blake2 v0.10.6 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling polyval v0.6.2 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling aes v0.8.4 [INFO] [stderr] Compiling ctr v0.9.2 [INFO] [stderr] Compiling password-hash v0.5.0 [INFO] [stderr] Compiling ghash v0.5.1 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling argon2 v0.5.3 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling aes-gcm v0.10.3 [INFO] [stderr] Compiling regex-automata v0.4.13 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling tempfile v3.24.0 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling dialoguer v0.12.0 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling regex v1.12.2 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling chrono v0.4.43 [INFO] [stderr] Compiling serde_yaml v0.9.34+deprecated [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling naru-config v0.7.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `verify_log_integrity` [INFO] [stdout] --> src/core/audit_log.rs:5:32 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::core::audit_chain::{verify_log_integrity, AuditChain}; [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: `crate::core::audit_chain::verify_log_integrity` [INFO] [stdout] --> src/core/audit.rs:1:9 [INFO] [stdout] | [INFO] [stdout] 1 | pub use crate::core::audit_chain::verify_log_integrity; [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: `get_recent_logs` [INFO] [stdout] --> src/core/audit.rs:3:34 [INFO] [stdout] | [INFO] [stdout] 3 | pub use crate::core::audit_log::{get_recent_logs, log_action}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `path_sanitizer::normalize_path` [INFO] [stdout] --> src/core/security.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use path_sanitizer::normalize_path; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `path_sanitizer::sanitize_file_path_internal` [INFO] [stdout] --> src/core/security.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub use path_sanitizer::sanitize_file_path_internal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `input_validator::is_valid_config_key` [INFO] [stdout] --> src/core/security.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub use input_validator::is_valid_config_key; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `input_validator::is_valid_environment_name` [INFO] [stdout] --> src/core/security.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub use input_validator::is_valid_environment_name; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `input_validator::normalize_config_key` [INFO] [stdout] --> src/core/security.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | pub use input_validator::normalize_config_key; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `input_validator::normalize_environment_name` [INFO] [stdout] --> src/core/security.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | pub use input_validator::normalize_environment_name; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `file_security::get_file_size` [INFO] [stdout] --> src/core/security.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub use file_security::get_file_size; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `file_security::is_file_readable` [INFO] [stdout] --> src/core/security.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | pub use file_security::is_file_readable; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `file_security::is_file_writable` [INFO] [stdout] --> src/core/security.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 28 | pub use file_security::is_file_writable; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::type_validator::*` [INFO] [stdout] --> src/core/validation.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | pub use crate::core::type_validator::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::string_validator::*` [INFO] [stdout] --> src/core/validation.rs:34:13 [INFO] [stdout] | [INFO] [stdout] 34 | pub use crate::core::string_validator::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `verify_log_integrity` [INFO] [stdout] --> src/core/audit_log.rs:5:32 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::core::audit_chain::{verify_log_integrity, AuditChain}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::audit_chain::verify_log_integrity as verify_audit_log` [INFO] [stdout] --> src/core/audit_log.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | pub use crate::core::audit_chain::verify_log_integrity as verify_audit_log; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error_kind::NaruError` [INFO] [stdout] --> src/core/mod.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | pub use error_kind::NaruError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error_kind::NaruResult` [INFO] [stdout] --> src/core/mod.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | pub use error_kind::NaruResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `config_model::ConfigFile` [INFO] [stdout] --> src/core/mod.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | pub use config_model::ConfigFile; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `config_model::ConfigValueEntry` [INFO] [stdout] --> src/core/mod.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | pub use config_model::ConfigValueEntry; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `config_model::EnvironmentConfig` [INFO] [stdout] --> src/core/mod.rs:56:9 [INFO] [stdout] | [INFO] [stdout] 56 | pub use config_model::EnvironmentConfig; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `schema_model::FieldDefinition` [INFO] [stdout] --> src/core/mod.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 58 | pub use schema_model::FieldDefinition; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `schema_model::SchemaFile` [INFO] [stdout] --> src/core/mod.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | pub use schema_model::SchemaFile; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `schema_model::ValidationRules` [INFO] [stdout] --> src/core/mod.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 60 | pub use schema_model::ValidationRules; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `backup_model::BackupData` [INFO] [stdout] --> src/core/mod.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | pub use backup_model::BackupData; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `format_trait::ConfigFormat` [INFO] [stdout] --> src/core/mod.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | pub use format_trait::ConfigFormat; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `json_format::JsonFormat` [INFO] [stdout] --> src/core/mod.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | pub use json_format::JsonFormat; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `properties_format::PropertiesFormat` [INFO] [stdout] --> src/core/mod.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | pub use properties_format::PropertiesFormat; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `toml_format::TomlFormat` [INFO] [stdout] --> src/core/mod.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | pub use toml_format::TomlFormat; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `validation::validate_value` [INFO] [stdout] --> src/core/mod.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | pub use validation::validate_value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_config_and_schema`, `validate`, `config`, `schema`, `timestamp`, and `backup_version` are never used [INFO] [stdout] --> src/core/backup_model.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl BackupData { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 25 | pub fn from_config_and_schema(config: ConfigFile, schema: SchemaFile) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | pub fn validate(&self) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | pub fn config(&self) -> &ConfigFile { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn schema(&self) -> &SchemaFile { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | pub fn timestamp(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn backup_version(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BackupMetadata` is never constructed [INFO] [stdout] --> src/core/backup_model.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct BackupMetadata { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_backup` is never used [INFO] [stdout] --> src/core/backup_model.rs:66:12 [INFO] [stdout] | [INFO] [stdout] 65 | impl BackupMetadata { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] 66 | pub fn from_backup(backup: &BackupData) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `add_environment`, `get_environment`, and `get_environment_mut` are never used [INFO] [stdout] --> src/core/config_model.rs:45:12 [INFO] [stdout] | [INFO] [stdout] 44 | impl ConfigFile { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 45 | pub fn new(project_name: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn add_environment(&mut self, name: &str) -> &mut EnvironmentConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | pub fn get_environment(&self, name: &str) -> Option<&EnvironmentConfig> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn get_environment_mut(&mut self, name: &str) -> Option<&mut EnvironmentConfig> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/config_model.rs:70:12 [INFO] [stdout] | [INFO] [stdout] 69 | impl EnvironmentConfig { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 70 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn with_parent(parent: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn set_value(&mut self, key: &str, value: ConfigValueEntry) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn get_value(&self, key: &str) -> Option<&ConfigValueEntry> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn remove_value(&mut self, key: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn keys(&self) -> impl Iterator { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn values(&self) -> impl Iterator { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/schema_model.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 27 | impl SchemaFile { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 28 | pub fn new(version: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn add_field(&mut self, field: FieldDefinition) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | pub fn get_field(&self, key: &str) -> Option<&FieldDefinition> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn get_field_mut(&mut self, key: &str) -> Option<&mut FieldDefinition> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | pub fn remove_field(&mut self, key: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn iter(&self) -> impl Iterator { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/schema_model.rs:69:12 [INFO] [stdout] | [INFO] [stdout] 68 | impl FieldDefinition { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 69 | pub fn new(key: &str, r#type: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn with_description(mut self, description: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn with_validation(mut self, validation: ValidationRules) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn secret(mut self) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn is_string(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn is_integer(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn is_boolean(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/core/schema_model.rs:118:12 [INFO] [stdout] | [INFO] [stdout] 107 | impl ValidationRules { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn with_min_length(mut self, min: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | pub fn with_max_length(mut self, max: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 128 | pub fn with_length_range(mut self, min: usize, max: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub fn with_min_value(mut self, min: i64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn with_max_value(mut self, max: i64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn with_value_range(mut self, min: i64, max: i64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn with_pattern(mut self, pattern: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_empty_string` is never used [INFO] [stdout] --> src/core/string_validator.rs:42:8 [INFO] [stdout] | [INFO] [stdout] 42 | pub fn is_empty_string(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_whitespace_only` is never used [INFO] [stdout] --> src/core/string_validator.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn is_whitespace_only(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_valid_string_length` is never used [INFO] [stdout] --> src/core/string_validator.rs:50:8 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn is_valid_string_length(value: &str, min: usize, max: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `contains_control_characters` is never used [INFO] [stdout] --> src/core/string_validator.rs:55:8 [INFO] [stdout] | [INFO] [stdout] 55 | pub fn contains_control_characters(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `contains_null_byte` is never used [INFO] [stdout] --> src/core/string_validator.rs:59:8 [INFO] [stdout] | [INFO] [stdout] 59 | pub fn contains_null_byte(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `count_characters` is never used [INFO] [stdout] --> src/core/string_validator.rs:63:8 [INFO] [stdout] | [INFO] [stdout] 63 | pub fn count_characters(value: &str) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `count_bytes` is never used [INFO] [stdout] --> src/core/string_validator.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn count_bytes(value: &str) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `validate_boolean_strict` is never used [INFO] [stdout] --> src/core/type_validator.rs:35:8 [INFO] [stdout] | [INFO] [stdout] 35 | pub fn validate_boolean_strict(value: &str) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_valid_integer` is never used [INFO] [stdout] --> src/core/type_validator.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn is_valid_integer(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_valid_boolean` is never used [INFO] [stdout] --> src/core/type_validator.rs:50:8 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn is_valid_boolean(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_hex_string` is never used [INFO] [stdout] --> src/core/type_validator.rs:54:8 [INFO] [stdout] | [INFO] [stdout] 54 | pub fn is_hex_string(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_octal_string` is never used [INFO] [stdout] --> src/core/type_validator.rs:58:8 [INFO] [stdout] | [INFO] [stdout] 58 | pub fn is_octal_string(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_binary_string` is never used [INFO] [stdout] --> src/core/type_validator.rs:62:8 [INFO] [stdout] | [INFO] [stdout] 62 | pub fn is_binary_string(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_scientific_notation` is never used [INFO] [stdout] --> src/core/type_validator.rs:66:8 [INFO] [stdout] | [INFO] [stdout] 66 | pub fn is_scientific_notation(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `has_leading_plus` is never used [INFO] [stdout] --> src/core/type_validator.rs:70:8 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn has_leading_plus(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `has_leading_zeros` is never used [INFO] [stdout] --> src/core/type_validator.rs:74:8 [INFO] [stdout] | [INFO] [stdout] 74 | pub fn has_leading_zeros(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_valid_value` is never used [INFO] [stdout] --> src/core/validator.rs:35:8 [INFO] [stdout] | [INFO] [stdout] 35 | pub fn is_valid_value(value: &str, field: &FieldDefinition) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_validation_error` is never used [INFO] [stdout] --> src/core/validator.rs:39:8 [INFO] [stdout] | [INFO] [stdout] 39 | pub fn get_validation_error(value: &str, field: &FieldDefinition) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `name` and `extension` are never used [INFO] [stdout] --> src/core/format_trait.rs:5:8 [INFO] [stdout] | [INFO] [stdout] 4 | pub trait ConfigFormat: Send + Sync { [INFO] [stdout] | ------------ methods in this trait [INFO] [stdout] 5 | fn name(&self) -> &str; [INFO] [stdout] | ^^^^ [INFO] [stdout] 6 | fn extension(&self) -> &str; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `FormatDetector` is never used [INFO] [stdout] --> src/core/format_trait.rs:11:11 [INFO] [stdout] | [INFO] [stdout] 11 | pub trait FormatDetector { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `detect_format_from_extension` is never used [INFO] [stdout] --> src/core/format_trait.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn detect_format_from_extension(extension: &str) -> Option<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `detect_format_from_content` is never used [INFO] [stdout] --> src/core/format_trait.rs:26:8 [INFO] [stdout] | [INFO] [stdout] 26 | pub fn detect_format_from_content(content: &str) -> Option<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `serialize_json` is never used [INFO] [stdout] --> src/core/json_format.rs:38:8 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn serialize_json(config: &ConfigFile) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_json` is never used [INFO] [stdout] --> src/core/json_format.rs:42:8 [INFO] [stdout] | [INFO] [stdout] 42 | pub fn deserialize_json(data: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `serialize_json_pretty` is never used [INFO] [stdout] --> src/core/json_format.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn serialize_json_pretty(config: &ConfigFile) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `serialize_properties` is never used [INFO] [stdout] --> src/core/properties_format.rs:78:8 [INFO] [stdout] | [INFO] [stdout] 78 | pub fn serialize_properties(config: &ConfigFile) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_properties` is never used [INFO] [stdout] --> src/core/properties_format.rs:82:8 [INFO] [stdout] | [INFO] [stdout] 82 | pub fn deserialize_properties(data: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `serialize_toml` is never used [INFO] [stdout] --> src/core/toml_format.rs:38:8 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn serialize_toml(config: &ConfigFile) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_toml` is never used [INFO] [stdout] --> src/core/toml_format.rs:42:8 [INFO] [stdout] | [INFO] [stdout] 42 | pub fn deserialize_toml(data: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_file_readable` is never used [INFO] [stdout] --> src/core/file_security.rs:49:8 [INFO] [stdout] | [INFO] [stdout] 49 | pub fn is_file_readable(path: &Path) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_file_writable` is never used [INFO] [stdout] --> src/core/file_security.rs:53:8 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn is_file_writable(path: &Path) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_file_size` is never used [INFO] [stdout] --> src/core/file_security.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn get_file_size(path: &Path) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `normalize_environment_name` is never used [INFO] [stdout] --> src/core/input_validator.rs:61:8 [INFO] [stdout] | [INFO] [stdout] 61 | pub fn normalize_environment_name(name: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `normalize_config_key` is never used [INFO] [stdout] --> src/core/input_validator.rs:65:8 [INFO] [stdout] | [INFO] [stdout] 65 | pub fn normalize_config_key(key: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_valid_environment_name` is never used [INFO] [stdout] --> src/core/input_validator.rs:73:8 [INFO] [stdout] | [INFO] [stdout] 73 | pub fn is_valid_environment_name(name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_valid_config_key` is never used [INFO] [stdout] --> src/core/input_validator.rs:77:8 [INFO] [stdout] | [INFO] [stdout] 77 | pub fn is_valid_config_key(key: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_path_traversal` is never used [INFO] [stdout] --> src/core/path_sanitizer.rs:77:8 [INFO] [stdout] | [INFO] [stdout] 77 | pub fn is_path_traversal(path: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_absolute_path` is never used [INFO] [stdout] --> src/core/path_sanitizer.rs:91:8 [INFO] [stdout] | [INFO] [stdout] 91 | pub fn is_absolute_path(path: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `has_null_byte` is never used [INFO] [stdout] --> src/core/path_sanitizer.rs:96:8 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn has_null_byte(path: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `encrypt_file` is never used [INFO] [stdout] --> src/core/file_crypto.rs:4:8 [INFO] [stdout] | [INFO] [stdout] 4 | pub fn encrypt_file( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `decrypt_file` is never used [INFO] [stdout] --> src/core/file_crypto.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn decrypt_file( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `derive_key` is never used [INFO] [stdout] --> src/core/key_derivation.rs:12:8 [INFO] [stdout] | [INFO] [stdout] 12 | pub fn derive_key(password: &str, salt: &[u8]) -> Result<[u8; 32], Box> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `KeyRotation` is never constructed [INFO] [stdout] --> src/core/key_rotation.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct KeyRotation { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `rotate_value`, and `rotate_config` are never used [INFO] [stdout] --> src/core/key_rotation.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl KeyRotation { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 10 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub fn rotate_value( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn rotate_config( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_encryption_key` is never used [INFO] [stdout] --> src/core/key_rotation.rs:57:8 [INFO] [stdout] | [INFO] [stdout] 57 | pub fn generate_encryption_key() -> [u8; 32] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `key_to_hex` is never used [INFO] [stdout] --> src/core/key_rotation.rs:65:8 [INFO] [stdout] | [INFO] [stdout] 65 | pub fn key_to_hex(key: &[u8; 32]) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `hex_to_key` is never used [INFO] [stdout] --> src/core/key_rotation.rs:69:8 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn hex_to_key(hex_str: &str) -> Result<[u8; 32], Box> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `verify_chain` and `verify_integrity` are never used [INFO] [stdout] --> src/core/audit_chain.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 7 | impl AuditChain { [INFO] [stdout] | --------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 13 | pub fn verify_chain(entries: &[AuditLogEntry]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn verify_integrity(entries: &[AuditLogEntry]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_log_integrity` is never used [INFO] [stdout] --> src/core/audit_chain.rs:41:8 [INFO] [stdout] | [INFO] [stdout] 41 | pub fn verify_log_integrity(log_path: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_recent_logs` is never used [INFO] [stdout] --> src/core/audit_log.rs:98:8 [INFO] [stdout] | [INFO] [stdout] 98 | pub fn get_recent_logs( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AtomicWriter` is never constructed [INFO] [stdout] --> src/core/atomic_ops.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct AtomicWriter { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `write`, `write_with_content`, `commit`, and `rollback` are never used [INFO] [stdout] --> src/core/atomic_ops.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl AtomicWriter { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 13 | pub fn new(target_path: &Path) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn write(target_path: &Path, mut f: F) -> Result<(), std::io::Error> [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn write_with_content(&self, content: &str) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn commit(self) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn rollback(self) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `atomic_write` is never used [INFO] [stdout] --> src/core/atomic_ops.rs:59:8 [INFO] [stdout] | [INFO] [stdout] 59 | pub fn atomic_write>(path: P, content: &str) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `atomic_read` is never used [INFO] [stdout] --> src/core/atomic_ops.rs:64:8 [INFO] [stdout] | [INFO] [stdout] 64 | pub fn atomic_read>(path: P) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `atomic_update` is never used [INFO] [stdout] --> src/core/atomic_ops.rs:68:8 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn atomic_update, F>(path: P, mut f: F) -> Result<(), std::io::Error> [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_json_file` is never used [INFO] [stdout] --> src/core/file_io.rs:4:8 [INFO] [stdout] | [INFO] [stdout] 4 | pub fn read_json_file>(path: P) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `write_json_file` is never used [INFO] [stdout] --> src/core/file_io.rs:8:8 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn write_json_file>(path: P, content: &str) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_json_file_or_default` is never used [INFO] [stdout] --> src/core/file_io.rs:12:8 [INFO] [stdout] | [INFO] [stdout] 12 | pub fn read_json_file_or_default, T: serde::de::DeserializeOwned + Default>( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `file_exists` is never used [INFO] [stdout] --> src/core/file_io.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn file_exists>(path: P) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_directory` is never used [INFO] [stdout] --> src/core/file_io.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | pub fn create_directory>(path: P) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `delete_file` is never used [INFO] [stdout] --> src/core/file_io.rs:29:8 [INFO] [stdout] | [INFO] [stdout] 29 | pub fn delete_file>(path: P) -> Result<(), std::io::Error> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_directory` is never used [INFO] [stdout] --> src/core/file_io.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 33 | pub fn read_directory>(path: P) -> Result, std::io::Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RateLimitMiddleware` is never constructed [INFO] [stdout] --> src/core/command_middleware.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct RateLimitMiddleware { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `new`, `with_default`, `strict`, and `lenient` are never used [INFO] [stdout] --> src/core/command_middleware.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl RateLimitMiddleware { [INFO] [stdout] | ------------------------ associated functions in this implementation [INFO] [stdout] 10 | pub fn new(config: RateLimitConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 16 | pub fn with_default() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub fn strict() -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn lenient() -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AuditMiddleware` is never constructed [INFO] [stdout] --> src/core/command_middleware.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 55 | pub struct AuditMiddleware { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/core/command_middleware.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 60 | impl AuditMiddleware { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] 61 | pub fn new(log_path: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ValidationMiddleware` is never constructed [INFO] [stdout] --> src/core/command_middleware.rs:76:12 [INFO] [stdout] | [INFO] [stdout] 76 | pub struct ValidationMiddleware { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/core/command_middleware.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 81 | impl ValidationMiddleware { [INFO] [stdout] | ------------------------- associated function in this implementation [INFO] [stdout] 82 | pub fn new(strict: bool) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `CommandMiddleware` is never used [INFO] [stdout] --> src/core/middleware.rs:3:11 [INFO] [stdout] | [INFO] [stdout] 3 | pub trait CommandMiddleware: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandContext` is never constructed [INFO] [stdout] --> src/core/middleware.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct CommandContext { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `with_environment`, and `rate_limit_key` are never used [INFO] [stdout] --> src/core/middleware.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl CommandContext { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 18 | pub fn new(command_name: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn with_environment(mut self, env: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn rate_limit_key(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `MiddlewareError` is never used [INFO] [stdout] --> src/core/middleware.rs:41:10 [INFO] [stdout] | [INFO] [stdout] 41 | pub enum MiddlewareError { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MiddlewareChain` is never constructed [INFO] [stdout] --> src/core/middleware.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 67 | pub struct MiddlewareChain { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `add`, `before_execute`, and `execute` are never used [INFO] [stdout] --> src/core/middleware.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 71 | impl MiddlewareChain { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 72 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn add(mut self, middleware: M) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | pub fn before_execute(&self, context: &CommandContext) -> Result<(), MiddlewareError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn execute(&self, context: &CommandContext, mut f: F) -> Result [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 40.80s [INFO] running `Command { std: "docker" "inspect" "88798d264bd2e53d488ce74ca40903264fee0e9eabec2595e43de06eb952de3d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "88798d264bd2e53d488ce74ca40903264fee0e9eabec2595e43de06eb952de3d", kill_on_drop: false }` [INFO] [stdout] 88798d264bd2e53d488ce74ca40903264fee0e9eabec2595e43de06eb952de3d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] b1ba5d16237cb4f8e995b8e5713ba17f39780d2bd93e04ff2904a81064226388 [INFO] running `Command { std: "docker" "start" "-a" "b1ba5d16237cb4f8e995b8e5713ba17f39780d2bd93e04ff2904a81064226388", kill_on_drop: false }` [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling serial_test_derive v3.3.1 [INFO] [stdout] warning: unused import: `verify_log_integrity` [INFO] [stdout] --> src/core/audit_log.rs:5:32 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::core::audit_chain::{verify_log_integrity, AuditChain}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling futures-executor v0.3.31 [INFO] [stderr] Compiling serial_test v3.3.1 [INFO] [stderr] Compiling naru-config v0.7.0 (/opt/rustwide/workdir) [INFO] [stdout] error[E0432]: unresolved import `file_crypto` [INFO] [stdout] --> src/core/crypto.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | use file_crypto::{decrypt_file, encrypt_file}; [INFO] [stdout] | ^^^^^^^^^^^ use of unresolved module or unlinked crate `file_crypto` [INFO] [stdout] | [INFO] [stdout] help: to make use of source file src/core/file_crypto.rs, use `mod file_crypto` in this file to declare the module [INFO] [stdout] --> src/lib.rs:22:1 [INFO] [stdout] | [INFO] [stdout] 22 + mod file_crypto; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/core/backup_model.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 87 | use std::collections::HashMap; [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: `std::collections::HashMap` [INFO] [stdout] --> src/core/json_format.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tempfile::TempDir` [INFO] [stdout] --> src/core/audit_chain.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 68 | use tempfile::TempDir; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::save_json`: Use atomic_update_config for config files to prevent race conditions. This function is not atomic and can cause data loss in concurrent scenarios. [INFO] [stdout] --> src/core/persistence.rs:919:22 [INFO] [stdout] | [INFO] [stdout] 919 | let result = save_json("../traversal.json", &"data"); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:930:45 [INFO] [stdout] | [INFO] [stdout] 930 | let result: Result = load_json("non_existent.json"); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:992:45 [INFO] [stdout] | [INFO] [stdout] 992 | let result: Result = load_json("some_dir"); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:1128:38 [INFO] [stdout] | [INFO] [stdout] 1128 | let mut config: ConfigFile = load_json(CONFIG_FILE).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:1260:38 [INFO] [stdout] | [INFO] [stdout] 1260 | let mut config: ConfigFile = load_json(CONFIG_FILE).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::save_json`: Use atomic_update_config for config files to prevent race conditions. This function is not atomic and can cause data loss in concurrent scenarios. [INFO] [stdout] --> src/core/persistence.rs:1266:9 [INFO] [stdout] | [INFO] [stdout] 1266 | save_json(CONFIG_FILE, &config).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:1436:38 [INFO] [stdout] | [INFO] [stdout] 1436 | let mut config: ConfigFile = load_json(CONFIG_FILE).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::save_json`: Use atomic_update_config for config files to prevent race conditions. This function is not atomic and can cause data loss in concurrent scenarios. [INFO] [stdout] --> src/core/persistence.rs:1520:9 [INFO] [stdout] | [INFO] [stdout] 1520 | save_json(CONFIG_FILE, &large_config).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:1521:41 [INFO] [stdout] | [INFO] [stdout] 1521 | let loaded_config: ConfigFile = load_json(CONFIG_FILE).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:1730:38 [INFO] [stdout] | [INFO] [stdout] 1730 | let mut config: ConfigFile = load_json(CONFIG_FILE).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `file_crypto` [INFO] [stdout] --> src/core/crypto.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | use file_crypto::{decrypt_file, encrypt_file}; [INFO] [stdout] | ^^^^^^^^^^^ use of unresolved module or unlinked crate `file_crypto` [INFO] [stdout] | [INFO] [stdout] help: to make use of source file src/core/file_crypto.rs, use `mod file_crypto` in this file to declare the module [INFO] [stdout] --> src/main.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 + mod file_crypto; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `path_sanitizer::normalize_path` [INFO] [stdout] --> src/core/security.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use path_sanitizer::normalize_path; [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: `path_sanitizer::sanitize_file_path_internal` [INFO] [stdout] --> src/core/security.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub use path_sanitizer::sanitize_file_path_internal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `input_validator::is_valid_config_key` [INFO] [stdout] --> src/core/security.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub use input_validator::is_valid_config_key; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `input_validator::is_valid_environment_name` [INFO] [stdout] --> src/core/security.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub use input_validator::is_valid_environment_name; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `input_validator::normalize_config_key` [INFO] [stdout] --> src/core/security.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | pub use input_validator::normalize_config_key; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `input_validator::normalize_environment_name` [INFO] [stdout] --> src/core/security.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | pub use input_validator::normalize_environment_name; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `file_security::get_file_size` [INFO] [stdout] --> src/core/security.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub use file_security::get_file_size; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `file_security::is_file_readable` [INFO] [stdout] --> src/core/security.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | pub use file_security::is_file_readable; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `file_security::is_file_writable` [INFO] [stdout] --> src/core/security.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 28 | pub use file_security::is_file_writable; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::type_validator::*` [INFO] [stdout] --> src/core/validation.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | pub use crate::core::type_validator::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::string_validator::*` [INFO] [stdout] --> src/core/validation.rs:34:13 [INFO] [stdout] | [INFO] [stdout] 34 | pub use crate::core::string_validator::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/core/backup_model.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 87 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/core/json_format.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tempfile::TempDir` [INFO] [stdout] --> src/core/audit_chain.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 68 | use tempfile::TempDir; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::audit_chain::verify_log_integrity as verify_audit_log` [INFO] [stdout] --> src/core/audit_log.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | pub use crate::core::audit_chain::verify_log_integrity as verify_audit_log; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error_kind::NaruError` [INFO] [stdout] --> src/core/mod.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | pub use error_kind::NaruError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error_kind::NaruResult` [INFO] [stdout] --> src/core/mod.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | pub use error_kind::NaruResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `config_model::ConfigFile` [INFO] [stdout] --> src/core/mod.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | pub use config_model::ConfigFile; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `config_model::ConfigValueEntry` [INFO] [stdout] --> src/core/mod.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | pub use config_model::ConfigValueEntry; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `config_model::EnvironmentConfig` [INFO] [stdout] --> src/core/mod.rs:56:9 [INFO] [stdout] | [INFO] [stdout] 56 | pub use config_model::EnvironmentConfig; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `schema_model::FieldDefinition` [INFO] [stdout] --> src/core/mod.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 58 | pub use schema_model::FieldDefinition; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `schema_model::SchemaFile` [INFO] [stdout] --> src/core/mod.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | pub use schema_model::SchemaFile; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `schema_model::ValidationRules` [INFO] [stdout] --> src/core/mod.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 60 | pub use schema_model::ValidationRules; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `backup_model::BackupData` [INFO] [stdout] --> src/core/mod.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | pub use backup_model::BackupData; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `format_trait::ConfigFormat` [INFO] [stdout] --> src/core/mod.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | pub use format_trait::ConfigFormat; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `json_format::JsonFormat` [INFO] [stdout] --> src/core/mod.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | pub use json_format::JsonFormat; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `properties_format::PropertiesFormat` [INFO] [stdout] --> src/core/mod.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | pub use properties_format::PropertiesFormat; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `toml_format::TomlFormat` [INFO] [stdout] --> src/core/mod.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | pub use toml_format::TomlFormat; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `validation::validate_value` [INFO] [stdout] --> src/core/mod.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | pub use validation::validate_value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::save_json`: Use atomic_update_config for config files to prevent race conditions. This function is not atomic and can cause data loss in concurrent scenarios. [INFO] [stdout] --> src/core/persistence.rs:919:22 [INFO] [stdout] | [INFO] [stdout] 919 | let result = save_json("../traversal.json", &"data"); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:930:45 [INFO] [stdout] | [INFO] [stdout] 930 | let result: Result = load_json("non_existent.json"); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:992:45 [INFO] [stdout] | [INFO] [stdout] 992 | let result: Result = load_json("some_dir"); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:1128:38 [INFO] [stdout] | [INFO] [stdout] 1128 | let mut config: ConfigFile = load_json(CONFIG_FILE).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:1260:38 [INFO] [stdout] | [INFO] [stdout] 1260 | let mut config: ConfigFile = load_json(CONFIG_FILE).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::save_json`: Use atomic_update_config for config files to prevent race conditions. This function is not atomic and can cause data loss in concurrent scenarios. [INFO] [stdout] --> src/core/persistence.rs:1266:9 [INFO] [stdout] | [INFO] [stdout] 1266 | save_json(CONFIG_FILE, &config).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:1436:38 [INFO] [stdout] | [INFO] [stdout] 1436 | let mut config: ConfigFile = load_json(CONFIG_FILE).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::save_json`: Use atomic_update_config for config files to prevent race conditions. This function is not atomic and can cause data loss in concurrent scenarios. [INFO] [stdout] --> src/core/persistence.rs:1520:9 [INFO] [stdout] | [INFO] [stdout] 1520 | save_json(CONFIG_FILE, &large_config).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:1521:41 [INFO] [stdout] | [INFO] [stdout] 1521 | let loaded_config: ConfigFile = load_json(CONFIG_FILE).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/core/persistence.rs:1730:38 [INFO] [stdout] | [INFO] [stdout] 1730 | let mut config: ConfigFile = load_json(CONFIG_FILE).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/deep_security_tests.rs:161:53 [INFO] [stdout] | [INFO] [stdout] 161 | match crate::core::persistence::load_json(crate::core::constants::CONFIG_FILE) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::save_json`: Use atomic_update_config for config files to prevent race conditions. This function is not atomic and can cause data loss in concurrent scenarios. [INFO] [stdout] --> src/deep_security_tests.rs:175:43 [INFO] [stdout] | [INFO] [stdout] 175 | crate::core::persistence::save_json(crate::core::constants::CONFIG_FILE, &config) [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `core::persistence::load_json`: Use atomic_read_config or lock_file for safer concurrent access patterns. [INFO] [stdout] --> src/deep_security_tests.rs:184:45 [INFO] [stdout] | [INFO] [stdout] 184 | match crate::core::persistence::load_json(crate::core::constants::CONFIG_FILE) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `file_io::tests::test_read_json_file_or_default::Data` doesn't implement `Debug` [INFO] [stdout] --> src/core/file_io.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | assert_eq!(data, Data::default()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Debug` is not implemented for `file_io::tests::test_read_json_file_or_default::Data` [INFO] [stdout] | [INFO] [stdout] = note: add `#[derive(Debug)]` to `file_io::tests::test_read_json_file_or_default::Data` or manually `impl Debug for file_io::tests::test_read_json_file_or_default::Data` [INFO] [stdout] help: consider annotating `file_io::tests::test_read_json_file_or_default::Data` with `#[derive(Debug)]` [INFO] [stdout] | [INFO] [stdout] 85 + #[derive(Debug)] [INFO] [stdout] 86 | struct Data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `file_io::tests::test_read_json_file_or_default::Data` doesn't implement `Debug` [INFO] [stdout] --> src/core/file_io.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | assert_eq!(data, Data::default()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Debug` is not implemented for `file_io::tests::test_read_json_file_or_default::Data` [INFO] [stdout] | [INFO] [stdout] = note: add `#[derive(Debug)]` to `file_io::tests::test_read_json_file_or_default::Data` or manually `impl Debug for file_io::tests::test_read_json_file_or_default::Data` [INFO] [stdout] help: consider annotating `file_io::tests::test_read_json_file_or_default::Data` with `#[derive(Debug)]` [INFO] [stdout] | [INFO] [stdout] 85 + #[derive(Debug)] [INFO] [stdout] 86 | struct Data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/core/backup_model.rs:121:13 [INFO] [stdout] | [INFO] [stdout] 121 | let mut env = config.add_environment("production"); [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/core/backup_model.rs:147:13 [INFO] [stdout] | [INFO] [stdout] 147 | let mut env = config.add_environment("production"); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `file_io::tests::test_read_json_file_or_default::Data` doesn't implement `Debug` [INFO] [stdout] --> src/core/file_io.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | assert_eq!(data, Data::default()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Debug` is not implemented for `file_io::tests::test_read_json_file_or_default::Data` [INFO] [stdout] | [INFO] [stdout] = note: add `#[derive(Debug)]` to `file_io::tests::test_read_json_file_or_default::Data` or manually `impl Debug for file_io::tests::test_read_json_file_or_default::Data` [INFO] [stdout] help: consider annotating `file_io::tests::test_read_json_file_or_default::Data` with `#[derive(Debug)]` [INFO] [stdout] | [INFO] [stdout] 85 + #[derive(Debug)] [INFO] [stdout] 86 | struct Data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `file_io::tests::test_read_json_file_or_default::Data` doesn't implement `Debug` [INFO] [stdout] --> src/core/file_io.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | assert_eq!(data, Data::default()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Debug` is not implemented for `file_io::tests::test_read_json_file_or_default::Data` [INFO] [stdout] | [INFO] [stdout] = note: add `#[derive(Debug)]` to `file_io::tests::test_read_json_file_or_default::Data` or manually `impl Debug for file_io::tests::test_read_json_file_or_default::Data` [INFO] [stdout] help: consider annotating `file_io::tests::test_read_json_file_or_default::Data` with `#[derive(Debug)]` [INFO] [stdout] | [INFO] [stdout] 85 + #[derive(Debug)] [INFO] [stdout] 86 | struct Data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/core/audit_entry.rs:232:13 [INFO] [stdout] | [INFO] [stdout] 232 | let mut entry = AuditLogEntry::new( [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0277, E0432. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0277`. [INFO] [stdout] [INFO] [stderr] error: could not compile `naru-config` (lib test) due to 3 previous errors; 16 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/core/backup_model.rs:121:13 [INFO] [stdout] | [INFO] [stdout] 121 | let mut env = config.add_environment("production"); [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/core/backup_model.rs:147:13 [INFO] [stdout] | [INFO] [stdout] 147 | let mut env = config.add_environment("production"); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/core/audit_entry.rs:232:13 [INFO] [stdout] | [INFO] [stdout] 232 | let mut entry = AuditLogEntry::new( [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0277, E0432. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0277`. [INFO] [stdout] [INFO] [stderr] error: could not compile `naru-config` (bin "naru" test) due to 3 previous errors; 45 warnings emitted [INFO] running `Command { std: "docker" "inspect" "b1ba5d16237cb4f8e995b8e5713ba17f39780d2bd93e04ff2904a81064226388", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b1ba5d16237cb4f8e995b8e5713ba17f39780d2bd93e04ff2904a81064226388", kill_on_drop: false }` [INFO] [stdout] b1ba5d16237cb4f8e995b8e5713ba17f39780d2bd93e04ff2904a81064226388