[INFO] fetching crate kotoba-security 0.1.21...
[INFO] testing kotoba-security-0.1.21 against beta-2025-09-21 for beta-1.91-3
[INFO] extracting crate kotoba-security 0.1.21 into /workspace/builds/worker-2-tc2/source
[INFO] started tweaking crates.io crate kotoba-security 0.1.21
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate kotoba-security 0.1.21
[INFO] tweaked toml for crates.io crate kotoba-security 0.1.21 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate kotoba-security 0.1.21 on toolchain beta-2025-09-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate kotoba-security 0.1.21 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-09-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 99016f3528a257f8012c1cdcfef5c64310559d5e92f5d84ae92938e797387b13
[INFO] running `Command { std: "docker" "start" "-a" "99016f3528a257f8012c1cdcfef5c64310559d5e92f5d84ae92938e797387b13", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "99016f3528a257f8012c1cdcfef5c64310559d5e92f5d84ae92938e797387b13", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "99016f3528a257f8012c1cdcfef5c64310559d5e92f5d84ae92938e797387b13", kill_on_drop: false }`
[INFO] [stdout] 99016f3528a257f8012c1cdcfef5c64310559d5e92f5d84ae92938e797387b13
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ce1848dd20584d30a8bb8b84c5ea70e03a70883d0fd4c2058bcfe4744446e802
[INFO] running `Command { std: "docker" "start" "-a" "ce1848dd20584d30a8bb8b84c5ea70e03a70883d0fd4c2058bcfe4744446e802", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling unicode-ident v1.0.19
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]    Compiling cfg-if v1.0.3
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.2
[INFO] [stderr]    Compiling serde_core v1.0.225
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling serde v1.0.225
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]    Compiling itoa v1.0.15
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling bytes v1.10.1
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling writeable v0.6.1
[INFO] [stderr]    Compiling litemap v0.8.0
[INFO] [stderr]    Compiling cc v1.2.38
[INFO] [stderr]    Compiling futures-core v0.3.31
[INFO] [stderr]    Compiling icu_properties_data v2.0.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling icu_normalizer_data v2.0.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling tracing-core v0.1.34
[INFO] [stderr]    Compiling http v0.2.12
[INFO] [stderr]    Compiling futures-io v0.3.31
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling log v0.4.28
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]    Compiling ryu v1.0.20
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling hashbrown v0.16.0
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling slab v0.4.11
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling strsim v0.10.0
[INFO] [stderr]    Compiling indexmap v2.11.4
[INFO] [stderr]    Compiling try-lock v0.2.5
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling socket2 v0.6.0
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling signal-hook-registry v1.4.6
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling http-body v0.4.6
[INFO] [stderr]    Compiling parking_lot v0.12.4
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling ring v0.16.20
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]    Compiling base64 v0.13.1
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling num-bigint v0.2.6
[INFO] [stderr]    Compiling num-rational v0.3.2
[INFO] [stderr]    Compiling untrusted v0.7.1
[INFO] [stderr]    Compiling base64 v0.21.7
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling regex-syntax v0.8.6
[INFO] [stderr]    Compiling spin v0.5.2
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling rustls-pemfile v1.0.4
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling bitflags v2.9.4
[INFO] [stderr]    Compiling sync_wrapper v0.1.2
[INFO] [stderr]    Compiling ipnet v2.11.0
[INFO] [stderr]    Compiling base64ct v1.8.0
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]    Compiling thiserror v2.0.16
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling webpki-roots v0.25.4
[INFO] [stderr]    Compiling password-hash v0.5.0
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling ordered-float v2.10.1
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling color_quant v1.1.0
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling bytemuck v1.23.2
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling rustls v0.20.9
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling image v0.23.14
[INFO] [stderr]    Compiling blowfish v0.9.1
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling blake2 v0.10.6
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling darling_core v0.13.4
[INFO] [stderr]    Compiling tempfile v3.22.0
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling regex-automata v0.4.10
[INFO] [stderr]    Compiling base64 v0.12.3
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling base32 v0.5.1
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling checked_int_cast v1.0.0
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling zeroize v1.8.1
[INFO] [stderr]    Compiling constant_time_eq v0.3.1
[INFO] [stderr]    Compiling totp-rs v5.7.0
[INFO] [stderr]    Compiling bcrypt v0.15.1
[INFO] [stderr]    Compiling qrcode v0.12.0
[INFO] [stderr]    Compiling argon2 v0.5.3
[INFO] [stderr]    Compiling pbkdf2 v0.12.2
[INFO] [stderr]    Compiling rustls-pemfile v0.3.0
[INFO] [stderr]    Compiling sct v0.7.1
[INFO] [stderr]    Compiling rustls-webpki v0.101.7
[INFO] [stderr]    Compiling webpki v0.22.4
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_macro v0.13.4
[INFO] [stderr]    Compiling darling v0.13.4
[INFO] [stderr]    Compiling serde_with_macros v1.5.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling serde_derive v1.0.225
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling thiserror-impl v2.0.16
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling tokio v1.47.1
[INFO] [stderr]    Compiling regex v1.11.2
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling pem v0.8.3
[INFO] [stderr]    Compiling yoke v0.8.0
[INFO] [stderr]    Compiling zerovec v0.11.4
[INFO] [stderr]    Compiling zerotrie v0.2.2
[INFO] [stderr]    Compiling tinystr v0.8.1
[INFO] [stderr]    Compiling potential_utf v0.1.3
[INFO] [stderr]    Compiling icu_collections v2.0.0
[INFO] [stderr]    Compiling icu_locale_core v2.0.0
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling serde_plain v1.0.2
[INFO] [stderr]    Compiling uuid v1.18.1
[INFO] [stderr]    Compiling serde_with v1.14.0
[INFO] [stderr]    Compiling serde-value v0.7.0
[INFO] [stderr]    Compiling icu_provider v2.0.0
[INFO] [stderr]    Compiling icu_normalizer v2.0.0
[INFO] [stderr]    Compiling icu_properties v2.0.1
[INFO] [stderr]    Compiling simple_asn1 v0.4.1
[INFO] [stderr]    Compiling jsonwebtoken v7.2.0
[INFO] [stderr]    Compiling tokio-util v0.7.16
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling tokio-rustls v0.24.1
[INFO] [stderr]    Compiling kotoba-storage v0.1.22
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.7
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling hyper-rustls v0.24.2
[INFO] [stderr]    Compiling reqwest v0.11.27
[INFO] [stderr]    Compiling oauth2 v4.4.2
[INFO] [stderr]    Compiling openidconnect v2.5.1
[INFO] [stderr]    Compiling kotoba-security v0.1.21 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/jwt.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AdditionalClaims`, `IdToken`, `IssuerUrl`, and `UserInfoClaims`
[INFO] [stdout]   --> src/oauth2.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     AdditionalClaims, IdToken, IssuerUrl, Nonce, UserInfoClaims};
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `url::Url`
[INFO] [stdout]   --> src/oauth2.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use url::Url;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Argon2Config` and `Pbkdf2Config`
[INFO] [stdout]  --> src/password.rs:4:56
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::config::{PasswordConfig, PasswordAlgorithm, Argon2Config, Pbkdf2Config};
[INFO] [stdout]   |                                                        ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pbkdf2::pbkdf2`
[INFO] [stdout]  --> src/password.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use pbkdf2::pbkdf2;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hmac::Hmac`
[INFO] [stdout]  --> src/password.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use hmac::Hmac;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sha2::Sha256`
[INFO] [stdout]  --> src/password.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use sha2::Sha256;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SecurityError`
[INFO] [stdout]  --> src/audit.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::error::{SecurityError, Result};
[INFO] [stdout]   |                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Utc`
[INFO] [stdout]   --> src/abac.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | use chrono::{Utc, Datelike, Timelike};
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EnvironmentAttributeProvider`, `ResourceAttributeProvider`, and `UserAttributeProvider`
[INFO] [stdout]   --> src/policy.rs:11:48
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::abac::{ABACService, PolicyDecision, UserAttributeProvider, ResourceAttributeProvider, EnvironmentAttributeProvider};
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/policy.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `provider`
[INFO] [stdout]    --> src/oauth2.rs:167:17
[INFO] [stdout]     |
[INFO] [stdout] 167 |             let provider = OAuth2Provider::from_str(name);
[INFO] [stdout]     |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_provider`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nonce`
[INFO] [stdout]    --> src/oauth2.rs:236:13
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let nonce = Nonce::new_random();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_nonce`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `provider_config`
[INFO] [stdout]    --> src/oauth2.rs:417:59
[INFO] [stdout]     |
[INFO] [stdout] 417 | ...ce: &OAuth2Service, provider_config: &OAuth2ProviderConfig, redirect_uri: &str) -> Result<CoreClient> {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_provider_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `redirect_uri`
[INFO] [stdout]    --> src/oauth2.rs:417:99
[INFO] [stdout]     |
[INFO] [stdout] 417 | ...&OAuth2ProviderConfig, redirect_uri: &str) -> Result<CoreClient> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_redirect_uri`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `issuer_url`
[INFO] [stdout]    --> src/oauth2.rs:420:13
[INFO] [stdout]     |
[INFO] [stdout] 420 |         let issuer_url = match OAuth2Provider::from_str("google") {
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_issuer_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `identifier`
[INFO] [stdout]    --> src/lib.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 163 |         identifier: &str,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_identifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `password`
[INFO] [stdout]    --> src/lib.rs:164:9
[INFO] [stdout]     |
[INFO] [stdout] 164 |         password: &str,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_password`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `provider`
[INFO] [stdout]    --> src/lib.rs:182:9
[INFO] [stdout]     |
[INFO] [stdout] 182 |         provider: OAuth2Provider,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_provider`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> src/lib.rs:183:9
[INFO] [stdout]     |
[INFO] [stdout] 183 |         code: &str,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/lib.rs:184:9
[INFO] [stdout]     |
[INFO] [stdout] 184 |         state: &str,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `password_hash::SaltString::b64_encode`: use `encode_b64` instead
[INFO] [stdout]    --> src/password.rs:210:32
[INFO] [stdout]     |
[INFO] [stdout] 210 |         let salt = SaltString::b64_encode(&salt_bytes)
[INFO] [stdout]     |                                ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `password_hash::SaltString::new`: use `from_b64` instead
[INFO] [stdout]    --> src/password.rs:254:32
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let salt = SaltString::new(&hash.salt)
[INFO] [stdout]     |                                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `salt`
[INFO] [stdout]    --> src/password.rs:254:13
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let salt = SaltString::new(&hash.salt)
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_salt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `role`
[INFO] [stdout]    --> src/rbac.rs:181:21
[INFO] [stdout]     |
[INFO] [stdout] 181 |         if let Some(role) = self.roles.get(role_id) {
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_role`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `session` is never read
[INFO] [stdout]    --> src/lib.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub struct SecurityService {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 126 |     session: SessionManager,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `provider` and `csrf_token` are never read
[INFO] [stdout]    --> src/oauth2.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 132 | struct OAuth2State {
[INFO] [stdout]     |        ----------- fields in this struct
[INFO] [stdout] 133 |     provider: OAuth2Provider,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 134 |     csrf_token: CsrfToken,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OAuth2State` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 03s
[INFO] running `Command { std: "docker" "inspect" "ce1848dd20584d30a8bb8b84c5ea70e03a70883d0fd4c2058bcfe4744446e802", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ce1848dd20584d30a8bb8b84c5ea70e03a70883d0fd4c2058bcfe4744446e802", kill_on_drop: false }`
[INFO] [stdout] ce1848dd20584d30a8bb8b84c5ea70e03a70883d0fd4c2058bcfe4744446e802
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 14d5a03cdb1044e1e9bb10fd90705865c81bf04e54fc0fd01a94b32e49e901da
[INFO] running `Command { std: "docker" "start" "-a" "14d5a03cdb1044e1e9bb10fd90705865c81bf04e54fc0fd01a94b32e49e901da", kill_on_drop: false }`
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling http v1.3.1
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling colored v3.0.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling icu_normalizer v2.0.0
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling tempfile v3.22.0
[INFO] [stderr]    Compiling uuid v1.18.1
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling parking_lot v0.12.4
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling tokio v1.47.1
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling url v2.5.7
[INFO] [stderr]    Compiling tokio-util v0.7.16
[INFO] [stderr]    Compiling tokio-rustls v0.24.1
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]    Compiling kotoba-storage v0.1.22
[INFO] [stderr]    Compiling tokio-test v0.4.4
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling h2 v0.4.12
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling hyper v1.7.0
[INFO] [stderr]    Compiling hyper-util v0.1.17
[INFO] [stderr]    Compiling mockito v1.7.0
[INFO] [stderr]    Compiling hyper-rustls v0.24.2
[INFO] [stderr]    Compiling reqwest v0.11.27
[INFO] [stderr]    Compiling oauth2 v4.4.2
[INFO] [stderr]    Compiling openidconnect v2.5.1
[INFO] [stderr]    Compiling kotoba-security v0.1.21 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/jwt.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AdditionalClaims`, `IdToken`, `IssuerUrl`, and `UserInfoClaims`
[INFO] [stdout]   --> src/oauth2.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     AdditionalClaims, IdToken, IssuerUrl, Nonce, UserInfoClaims};
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `url::Url`
[INFO] [stdout]   --> src/oauth2.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use url::Url;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Argon2Config` and `Pbkdf2Config`
[INFO] [stdout]  --> src/password.rs:4:56
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::config::{PasswordConfig, PasswordAlgorithm, Argon2Config, Pbkdf2Config};
[INFO] [stdout]   |                                                        ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pbkdf2::pbkdf2`
[INFO] [stdout]  --> src/password.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use pbkdf2::pbkdf2;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hmac::Hmac`
[INFO] [stdout]  --> src/password.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use hmac::Hmac;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sha2::Sha256`
[INFO] [stdout]  --> src/password.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use sha2::Sha256;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SecurityError`
[INFO] [stdout]  --> src/audit.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::error::{SecurityError, Result};
[INFO] [stdout]   |                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Utc`
[INFO] [stdout]   --> src/abac.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | use chrono::{Utc, Datelike, Timelike};
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EnvironmentAttributeProvider`, `ResourceAttributeProvider`, and `UserAttributeProvider`
[INFO] [stdout]   --> src/policy.rs:11:48
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::abac::{ABACService, PolicyDecision, UserAttributeProvider, ResourceAttributeProvider, EnvironmentAttributeProvider};
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/policy.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `provider`
[INFO] [stdout]    --> src/oauth2.rs:167:17
[INFO] [stdout]     |
[INFO] [stdout] 167 |             let provider = OAuth2Provider::from_str(name);
[INFO] [stdout]     |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_provider`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nonce`
[INFO] [stdout]    --> src/oauth2.rs:236:13
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let nonce = Nonce::new_random();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_nonce`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/jwt.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AdditionalClaims`, `IdToken`, `IssuerUrl`, and `UserInfoClaims`
[INFO] [stdout]   --> src/oauth2.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     AdditionalClaims, IdToken, IssuerUrl, Nonce, UserInfoClaims};
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `url::Url`
[INFO] [stdout]   --> src/oauth2.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use url::Url;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Argon2Config` and `Pbkdf2Config`
[INFO] [stdout]  --> src/password.rs:4:56
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::config::{PasswordConfig, PasswordAlgorithm, Argon2Config, Pbkdf2Config};
[INFO] [stdout]   |                                                        ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pbkdf2::pbkdf2`
[INFO] [stdout]  --> src/password.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use pbkdf2::pbkdf2;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hmac::Hmac`
[INFO] [stdout]  --> src/password.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use hmac::Hmac;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sha2::Sha256`
[INFO] [stdout]  --> src/password.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use sha2::Sha256;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]    --> src/session.rs:450:9
[INFO] [stdout]     |
[INFO] [stdout] 450 |     use std::time::Duration;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::time::sleep`
[INFO] [stdout]    --> src/session.rs:451:9
[INFO] [stdout]     |
[INFO] [stdout] 451 |     use tokio::time::sleep;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SecurityError`
[INFO] [stdout]  --> src/audit.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::error::{SecurityError, Result};
[INFO] [stdout]   |                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Utc`
[INFO] [stdout]   --> src/abac.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | use chrono::{Utc, Datelike, Timelike};
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EnvironmentAttributeProvider`, `ResourceAttributeProvider`, and `UserAttributeProvider`
[INFO] [stdout]   --> src/policy.rs:11:48
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::abac::{ABACService, PolicyDecision, UserAttributeProvider, ResourceAttributeProvider, EnvironmentAttributeProvider};
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/policy.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `provider_config`
[INFO] [stdout]    --> src/oauth2.rs:417:59
[INFO] [stdout]     |
[INFO] [stdout] 417 | ...ce: &OAuth2Service, provider_config: &OAuth2ProviderConfig, redirect_uri: &str) -> Result<CoreClient> {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_provider_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `redirect_uri`
[INFO] [stdout]    --> src/oauth2.rs:417:99
[INFO] [stdout]     |
[INFO] [stdout] 417 | ...&OAuth2ProviderConfig, redirect_uri: &str) -> Result<CoreClient> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_redirect_uri`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `issuer_url`
[INFO] [stdout]    --> src/oauth2.rs:420:13
[INFO] [stdout]     |
[INFO] [stdout] 420 |         let issuer_url = match OAuth2Provider::from_str("google") {
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_issuer_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `identifier`
[INFO] [stdout]    --> src/lib.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 163 |         identifier: &str,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_identifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `password`
[INFO] [stdout]    --> src/lib.rs:164:9
[INFO] [stdout]     |
[INFO] [stdout] 164 |         password: &str,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_password`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `provider`
[INFO] [stdout]    --> src/lib.rs:182:9
[INFO] [stdout]     |
[INFO] [stdout] 182 |         provider: OAuth2Provider,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_provider`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> src/lib.rs:183:9
[INFO] [stdout]     |
[INFO] [stdout] 183 |         code: &str,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/lib.rs:184:9
[INFO] [stdout]     |
[INFO] [stdout] 184 |         state: &str,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `provider`
[INFO] [stdout]    --> src/oauth2.rs:167:17
[INFO] [stdout]     |
[INFO] [stdout] 167 |             let provider = OAuth2Provider::from_str(name);
[INFO] [stdout]     |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_provider`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `password_hash::SaltString::b64_encode`: use `encode_b64` instead
[INFO] [stdout]    --> src/password.rs:210:32
[INFO] [stdout]     |
[INFO] [stdout] 210 |         let salt = SaltString::b64_encode(&salt_bytes)
[INFO] [stdout]     |                                ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `password_hash::SaltString::new`: use `from_b64` instead
[INFO] [stdout]    --> src/password.rs:254:32
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let salt = SaltString::new(&hash.salt)
[INFO] [stdout]     |                                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nonce`
[INFO] [stdout]    --> src/oauth2.rs:236:13
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let nonce = Nonce::new_random();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_nonce`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `provider_config`
[INFO] [stdout]    --> src/oauth2.rs:417:59
[INFO] [stdout]     |
[INFO] [stdout] 417 | ...ce: &OAuth2Service, provider_config: &OAuth2ProviderConfig, redirect_uri: &str) -> Result<CoreClient> {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_provider_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `redirect_uri`
[INFO] [stdout]    --> src/oauth2.rs:417:99
[INFO] [stdout]     |
[INFO] [stdout] 417 | ...&OAuth2ProviderConfig, redirect_uri: &str) -> Result<CoreClient> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_redirect_uri`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `issuer_url`
[INFO] [stdout]    --> src/oauth2.rs:420:13
[INFO] [stdout]     |
[INFO] [stdout] 420 |         let issuer_url = match OAuth2Provider::from_str("google") {
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_issuer_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `identifier`
[INFO] [stdout]    --> src/lib.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 163 |         identifier: &str,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_identifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `password`
[INFO] [stdout]    --> src/lib.rs:164:9
[INFO] [stdout]     |
[INFO] [stdout] 164 |         password: &str,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_password`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `provider`
[INFO] [stdout]    --> src/lib.rs:182:9
[INFO] [stdout]     |
[INFO] [stdout] 182 |         provider: OAuth2Provider,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_provider`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> src/lib.rs:183:9
[INFO] [stdout]     |
[INFO] [stdout] 183 |         code: &str,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/lib.rs:184:9
[INFO] [stdout]     |
[INFO] [stdout] 184 |         state: &str,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `salt`
[INFO] [stdout]    --> src/password.rs:254:13
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let salt = SaltString::new(&hash.salt)
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_salt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `password_hash::SaltString::b64_encode`: use `encode_b64` instead
[INFO] [stdout]    --> src/password.rs:210:32
[INFO] [stdout]     |
[INFO] [stdout] 210 |         let salt = SaltString::b64_encode(&salt_bytes)
[INFO] [stdout]     |                                ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `password_hash::SaltString::new`: use `from_b64` instead
[INFO] [stdout]    --> src/password.rs:254:32
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let salt = SaltString::new(&hash.salt)
[INFO] [stdout]     |                                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `role`
[INFO] [stdout]    --> src/rbac.rs:181:21
[INFO] [stdout]     |
[INFO] [stdout] 181 |         if let Some(role) = self.roles.get(role_id) {
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_role`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 3 arguments were supplied
[INFO] [stdout]    --> src/rbac.rs:615:26
[INFO] [stdout]     |
[INFO] [stdout] 615 |         assert!(all_caps.has_capability(&ResourceType::Graph, &Action::Read, None));
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^ --------------------  -------------  ---- unexpected argument #3 of type `std::option::Option<_>`
[INFO] [stdout]     |                                         |                     |
[INFO] [stdout]     |                                         |                     unexpected argument #2 of type `&capabilities::Action`
[INFO] [stdout]     |                                         expected `&Capability`, found `&ResourceType`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&capabilities::Capability`
[INFO] [stdout]                found reference `&capabilities::ResourceType`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/capabilities.rs:242:12
[INFO] [stdout]     |
[INFO] [stdout] 242 |     pub fn has_capability(&self, capability: &Capability) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^        -----------------------
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 615 -         assert!(all_caps.has_capability(&ResourceType::Graph, &Action::Read, None));
[INFO] [stdout] 615 +         assert!(all_caps.has_capability(/* &capabilities::Capability */));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 3 arguments were supplied
[INFO] [stdout]    --> src/rbac.rs:616:26
[INFO] [stdout]     |
[INFO] [stdout] 616 |         assert!(all_caps.has_capability(&ResourceType::Graph, &Action::Write, None));
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^ --------------------  --------------  ---- unexpected argument #3 of type `std::option::Option<_>`
[INFO] [stdout]     |                                         |                     |
[INFO] [stdout]     |                                         |                     unexpected argument #2 of type `&capabilities::Action`
[INFO] [stdout]     |                                         expected `&Capability`, found `&ResourceType`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&capabilities::Capability`
[INFO] [stdout]                found reference `&capabilities::ResourceType`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/capabilities.rs:242:12
[INFO] [stdout]     |
[INFO] [stdout] 242 |     pub fn has_capability(&self, capability: &Capability) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^        -----------------------
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 616 -         assert!(all_caps.has_capability(&ResourceType::Graph, &Action::Write, None));
[INFO] [stdout] 616 +         assert!(all_caps.has_capability(/* &capabilities::Capability */));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `session` is never read
[INFO] [stdout]    --> src/lib.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub struct SecurityService {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 126 |     session: SessionManager,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `provider` and `csrf_token` are never read
[INFO] [stdout]    --> src/oauth2.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 132 | struct OAuth2State {
[INFO] [stdout]     |        ----------- fields in this struct
[INFO] [stdout] 133 |     provider: OAuth2Provider,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 134 |     csrf_token: CsrfToken,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OAuth2State` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 0 arguments but 1 argument was supplied
[INFO] [stdout]    --> src/lib.rs:654:27
[INFO] [stdout]     |
[INFO] [stdout] 654 |             capabilities: CapabilitySet::new(vec![]),
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^ ------ unexpected argument of type `Vec<_>`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/capabilities.rs:213:12
[INFO] [stdout]     |
[INFO] [stdout] 213 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 654 -             capabilities: CapabilitySet::new(vec![]),
[INFO] [stdout] 654 +             capabilities: CapabilitySet::new(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 0 arguments but 1 argument was supplied
[INFO] [stdout]    --> src/lib.rs:760:27
[INFO] [stdout]     |
[INFO] [stdout] 760 |             capabilities: CapabilitySet::new(vec![]),
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^ ------ unexpected argument of type `Vec<_>`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/capabilities.rs:213:12
[INFO] [stdout]     |
[INFO] [stdout] 213 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 760 -             capabilities: CapabilitySet::new(vec![]),
[INFO] [stdout] 760 +             capabilities: CapabilitySet::new(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Principal: serde::Serialize` is not satisfied
[INFO] [stdout]     --> src/lib.rs:765:49
[INFO] [stdout]      |
[INFO] [stdout]  765 |         let json_result = serde_json::to_string(&principal);
[INFO] [stdout]      |                           --------------------- ^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout] help: the trait `_::_serde::Serialize` is not implemented for `Principal`
[INFO] [stdout]     --> src/lib.rs:71:1
[INFO] [stdout]      |
[INFO] [stdout]   71 | pub struct Principal {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for local types consider adding `#[derive(serde::Serialize)]` to your `Principal` type
[INFO] [stdout]      = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]      = help: the following other types implement trait `_::_serde::Serialize`:
[INFO] [stdout]                &'a T
[INFO] [stdout]                &'a mut T
[INFO] [stdout]                ()
[INFO] [stdout]                (T,)
[INFO] [stdout]                (T0, T1)
[INFO] [stdout]                (T0, T1, T2)
[INFO] [stdout]                (T0, T1, T2, T3)
[INFO] [stdout]                (T0, T1, T2, T3, T4)
[INFO] [stdout]              and 327 others
[INFO] [stdout] note: required by a bound in `serde_json::to_string`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/serde_json-1.0.145/src/ser.rs:2247:17
[INFO] [stdout]      |
[INFO] [stdout] 2245 | pub fn to_string<T>(value: &T) -> Result<String>
[INFO] [stdout]      |        --------- required by a bound in this function
[INFO] [stdout] 2246 | where
[INFO] [stdout] 2247 |     T: ?Sized + Serialize,
[INFO] [stdout]      |                 ^^^^^^^^^ required by this bound in `to_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `conditions` in initializer of `capabilities::Capability`
[INFO] [stdout]    --> src/lib.rs:850:26
[INFO] [stdout]     |
[INFO] [stdout] 850 |         let capability = Capability {
[INFO] [stdout]     |                          ^^^^^^^^^^ missing `conditions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `conditions` in initializer of `capabilities::Capability`
[INFO] [stdout]    --> src/lib.rs:864:13
[INFO] [stdout]     |
[INFO] [stdout] 864 |             Capability {
[INFO] [stdout]     |             ^^^^^^^^^^ missing `conditions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `conditions` in initializer of `capabilities::Capability`
[INFO] [stdout]    --> src/lib.rs:869:13
[INFO] [stdout]     |
[INFO] [stdout] 869 |             Capability {
[INFO] [stdout]     |             ^^^^^^^^^^ missing `conditions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 0 arguments but 1 argument was supplied
[INFO] [stdout]    --> src/lib.rs:876:30
[INFO] [stdout]     |
[INFO] [stdout] 876 |         let capability_set = CapabilitySet::new(capabilities);
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^ ------------ unexpected argument of type `Vec<capabilities::Capability>`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/capabilities.rs:213:12
[INFO] [stdout]     |
[INFO] [stdout] 213 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 876 -         let capability_set = CapabilitySet::new(capabilities);
[INFO] [stdout] 876 +         let capability_set = CapabilitySet::new();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `salt`
[INFO] [stdout]    --> src/password.rs:254:13
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let salt = SaltString::new(&hash.salt)
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_salt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `role`
[INFO] [stdout]    --> src/rbac.rs:181:21
[INFO] [stdout]     |
[INFO] [stdout] 181 |         if let Some(role) = self.roles.get(role_id) {
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_role`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/policy.rs:464:13
[INFO] [stdout]     |
[INFO] [stdout] 464 |         let mut engine = UnifiedPolicyEngine::new(config).with_rbac(rbac_service);
[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/policy.rs:506:13
[INFO] [stdout]     |
[INFO] [stdout] 506 |         let mut engine = UnifiedPolicyEngine::new(config).with_abac(abac_service);
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0063, E0277.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `kotoba-security` (lib test) due to 9 previous errors; 29 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] running `Command { std: "docker" "inspect" "14d5a03cdb1044e1e9bb10fd90705865c81bf04e54fc0fd01a94b32e49e901da", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "14d5a03cdb1044e1e9bb10fd90705865c81bf04e54fc0fd01a94b32e49e901da", kill_on_drop: false }`
[INFO] [stdout] 14d5a03cdb1044e1e9bb10fd90705865c81bf04e54fc0fd01a94b32e49e901da
