[INFO] cloning repository https://github.com/bentonmize/aws_creds_setup
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bentonmize/aws_creds_setup" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbentonmize%2Faws_creds_setup", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbentonmize%2Faws_creds_setup'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 47e57a4b90bcdc7e4fec5ad8d4db3df605b41d59
[INFO] checking bentonmize/aws_creds_setup against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbentonmize%2Faws_creds_setup" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/bentonmize/aws_creds_setup
[INFO] finished tweaking git repo https://github.com/bentonmize/aws_creds_setup
[INFO] tweaked toml for git repo https://github.com/bentonmize/aws_creds_setup written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/bentonmize/aws_creds_setup on toolchain 779e19d8baa3e3625bd4fc5c85cbb2ad47b43155
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/bentonmize/aws_creds_setup 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" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded keyring v2.3.3
[INFO] [stderr]   Downloaded secret-service v3.1.0
[INFO] [stderr]   Downloaded aws-credential-types v1.2.5
[INFO] [stderr]   Downloaded linux-keyutils v0.2.4
[INFO] [stderr]   Downloaded aws-types v1.3.8
[INFO] [stderr]   Downloaded aws-smithy-http v0.62.3
[INFO] [stderr]   Downloaded aws-smithy-runtime v1.9.0
[INFO] [stderr]   Downloaded aws-smithy-runtime-api v1.9.0
[INFO] [stderr]   Downloaded aws-runtime v1.5.10
[INFO] [stderr]   Downloaded aws-sdk-sso v1.81.0
[INFO] [stderr]   Downloaded aws-sigv4 v1.3.4
[INFO] [stderr]   Downloaded aws-sdk-ssooidc v1.83.0
[INFO] [stderr]   Downloaded aws-config v1.8.5
[INFO] [stderr]   Downloaded aws-smithy-http-client v1.1.0
[INFO] [stderr]   Downloaded aws-lc-rs v1.13.3
[INFO] [stderr]   Downloaded aws-sdk-sts v1.84.0
[INFO] [stderr]   Downloaded aws-lc-sys v0.30.0
[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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 857e82d0e7b067141a19f81cdabf4f84c48612390a60b9bc76e3b3c0b28797eb
[INFO] running `Command { std: "docker" "start" "-a" "857e82d0e7b067141a19f81cdabf4f84c48612390a60b9bc76e3b3c0b28797eb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "857e82d0e7b067141a19f81cdabf4f84c48612390a60b9bc76e3b3c0b28797eb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "857e82d0e7b067141a19f81cdabf4f84c48612390a60b9bc76e3b3c0b28797eb", kill_on_drop: false }`
[INFO] [stdout] 857e82d0e7b067141a19f81cdabf4f84c48612390a60b9bc76e3b3c0b28797eb
[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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6aa0c0de59a4e6342767296dbb929fd974ba38ae6fd6eaf678b62fa844582f07
[INFO] running `Command { std: "docker" "start" "-a" "6aa0c0de59a4e6342767296dbb929fd974ba38ae6fd6eaf678b62fa844582f07", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking socket2 v0.6.0
[INFO] [stderr]     Checking bytes-utils v0.1.4
[INFO] [stderr]    Compiling aws-lc-rs v1.13.3
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]    Compiling rustls v0.23.31
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking rustls-native-certs v0.8.1
[INFO] [stderr]    Compiling aws-types v1.3.8
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking uuid v1.18.0
[INFO] [stderr]     Checking regex-lite v0.1.7
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]     Checking rustix v1.0.8
[INFO] [stderr]     Checking aws-smithy-xml v0.60.10
[INFO] [stderr]     Checking toml_write v0.1.2
[INFO] [stderr]     Checking winnow v0.7.13
[INFO] [stderr]     Checking clap_builder v4.5.46
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking predicates-core v1.0.9
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking difflib v0.4.0
[INFO] [stderr]     Checking termtree v0.5.1
[INFO] [stderr]     Checking normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling assert_cmd v2.0.17
[INFO] [stderr]     Checking wait-timeout v0.2.1
[INFO] [stderr]     Checking predicates-tree v1.0.12
[INFO] [stderr]     Checking indexmap v2.11.0
[INFO] [stderr]     Checking regex-automata v0.4.10
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking float-cmp v0.10.0
[INFO] [stderr]    Compiling cc v1.2.34
[INFO] [stderr]     Checking tempfile v3.21.0
[INFO] [stderr]    Compiling cmake v0.1.54
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling aws-lc-sys v0.30.0
[INFO] [stderr]     Checking regex v1.11.2
[INFO] [stderr]     Checking bstr v1.12.0
[INFO] [stderr]     Checking predicates v3.1.3
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling clap_derive v4.5.45
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking zerovec v0.11.4
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking dialoguer v0.11.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]     Checking clap v4.5.46
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking serde_json v1.0.143
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking tokio-util v0.7.16
[INFO] [stderr]     Checking aws-smithy-async v1.2.5
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]     Checking tokio-test v0.4.4
[INFO] [stderr]     Checking aws-smithy-types v1.3.2
[INFO] [stderr]     Checking h2 v0.4.12
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking rustls-webpki v0.103.4
[INFO] [stderr]     Checking aws-smithy-runtime-api v1.9.0
[INFO] [stderr]     Checking aws-smithy-json v0.61.4
[INFO] [stderr]     Checking aws-smithy-query v0.60.7
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking aws-smithy-http v0.62.3
[INFO] [stderr]     Checking aws-credential-types v1.2.5
[INFO] [stderr]     Checking aws-smithy-observability v0.1.3
[INFO] [stderr]     Checking aws-sigv4 v1.3.4
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking hyper v1.7.0
[INFO] [stderr]     Checking hyper-util v0.1.16
[INFO] [stderr]     Checking tokio-rustls v0.26.2
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking hyper-rustls v0.24.2
[INFO] [stderr]     Checking aws-smithy-http-client v1.1.0
[INFO] [stderr]     Checking aws-smithy-runtime v1.9.0
[INFO] [stderr]     Checking aws-runtime v1.5.10
[INFO] [stderr]     Checking aws-sdk-ssooidc v1.83.0
[INFO] [stderr]     Checking aws-sdk-sso v1.81.0
[INFO] [stderr]     Checking aws-sdk-sts v1.84.0
[INFO] [stderr]     Checking aws-config v1.8.5
[INFO] [stderr]     Checking aws-switcher v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `AuthSource` and `RefreshStrategy`
[INFO] [stdout]    --> src/storage/profile_manager.rs:204:32
[INFO] [stdout]     |
[INFO] [stdout] 204 |     use crate::core::profile::{AuthSource, RefreshStrategy};
[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: `tempfile::TempDir`
[INFO] [stdout]    --> src/storage/sso_cache.rs:200:9
[INFO] [stdout]     |
[INFO] [stdout] 200 |     use tempfile::TempDir;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AuthSource` and `RefreshStrategy`
[INFO] [stdout]    --> src/storage/profile_manager.rs:204:32
[INFO] [stdout]     |
[INFO] [stdout] 204 |     use crate::core::profile::{AuthSource, RefreshStrategy};
[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: `tempfile::TempDir`
[INFO] [stdout]    --> src/storage/sso_cache.rs:200:9
[INFO] [stdout]     |
[INFO] [stdout] 200 |     use tempfile::TempDir;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `credentials_file::CredentialsFile`
[INFO] [stdout]  --> src/storage/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use credentials_file::CredentialsFile;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ProfileInfo`
[INFO] [stdout]   --> src/storage/mod.rs:10:43
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use profile_manager::{ProfileManager, ProfileInfo};
[INFO] [stdout]    |                                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `credentials_file::CredentialsFile`
[INFO] [stdout]  --> src/storage/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use credentials_file::CredentialsFile;
[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: `ProfileInfo`
[INFO] [stdout]   --> src/storage/mod.rs:10:43
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use profile_manager::{ProfileManager, ProfileInfo};
[INFO] [stdout]    |                                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validate`, `supports_auto_refresh`, and `profile_type` are never used
[INFO] [stdout]    --> src/core/profile.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl ProfileConfig {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn validate(&self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn supports_auto_refresh(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn profile_type(&self) -> &'static 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 `ProfileRegistry` is never constructed
[INFO] [stdout]    --> src/core/profile.rs:164:12
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub struct ProfileRegistry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/profile.rs:171:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | impl ProfileRegistry {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 170 |     /// Create new empty registry
[INFO] [stdout] 171 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn add_profile(&mut self, profile: ProfileConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn get_profile(&self, name: &str) -> Option<&ProfileConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn remove_profile(&mut self, name: &str) -> Option<ProfileConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn profile_names(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn set_default_profile(&mut self, name: String) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn get_default_profile(&self) -> Option<&ProfileConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_expired`, `time_until_expiration`, `is_temporary`, and `validate` are never used
[INFO] [stdout]   --> src/core/credentials.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl AwsCredentials {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn is_expired(&self, threshold_seconds: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn time_until_expiration(&self) -> Option<chrono::Duration> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn is_temporary(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn validate(&self) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CachedToken` is never constructed
[INFO] [stdout]   --> src/core/credentials.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct CachedToken {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `needs_refresh`, and `is_valid` are never used
[INFO] [stdout]   --> src/core/credentials.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | impl CachedToken {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 80 |     /// Create new cached token
[INFO] [stdout] 81 |     pub fn new(credentials: AwsCredentials, refresh_threshold_seconds: i64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn needs_refresh(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ToolConfig` is never constructed
[INFO] [stdout]   --> src/core/config.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct ToolConfig {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/config.rs:56:12
[INFO] [stdout]     |
[INFO] [stdout]  54 | impl ToolConfig {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  55 |     /// Create new tool configuration
[INFO] [stdout]  56 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn from_toml(content: &str) -> Result<Self, toml::de::Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn to_toml(&self) -> Result<String, toml::ser::Error> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn add_profile(&mut self, profile: super::profile::ProfileConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn get_profile(&self, name: &str) -> Option<&super::profile::ProfileConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn remove_profile(&mut self, name: &str) -> Option<super::profile::ProfileConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn profile_names(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn set_default_profile(&mut self, name: String) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn get_default_profile(&self) -> Option<&super::profile::ProfileConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn validate(&self) -> Result<(), Vec<String>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `update_profile`, `remove_profile`, `default_path`, `cleanup_old_backups`, `exists`, and `path` are never used
[INFO] [stdout]    --> src/storage/credentials_file.rs:75:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl CredentialsFile {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn update_profile(&self, profile_name: &str, credentials: AwsCredentials) -> SwitcherResult<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn remove_profile(&self, profile_name: &str) -> SwitcherResult<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn default_path() -> SwitcherResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub fn cleanup_old_backups(&self, keep_count: usize) -> SwitcherResult<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn exists(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 302 |     pub fn path(&self) -> &PathBuf {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `exists` is never used
[INFO] [stdout]    --> src/storage/config_file.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl ConfigFile {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn exists(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/storage/profile_manager.rs:26:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl ProfileManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub fn with_files(config_file: ConfigFile, credentials_file: CredentialsFile) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn remove_credentials(&self, profile_name: &str) -> SwitcherResult<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn copy_credentials(&self, from_profile: &str, to_profile: &str) -> SwitcherResult<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn override_default(&self, source_profile: &str) -> SwitcherResult<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn credentials_file_exists(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn config_file_exists(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn has_valid_credentials(&self, profile_name: &str) -> SwitcherResult<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `output` is never used
[INFO] [stdout]    --> src/storage/profile_manager.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl ProfileInfo {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn output(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SsoRoleCredentials` is never constructed
[INFO] [stdout]   --> src/storage/sso_cache.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct SsoRoleCredentials {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SsoRoleCredentialsResponse` is never constructed
[INFO] [stdout]   --> src/storage/sso_cache.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct SsoRoleCredentialsResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `FilePermission` is never constructed
[INFO] [stdout]   --> src/errors/mod.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum SwitcherError {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 45 |     FilePermission { message: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SwitcherError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `SsoTokenExpired`, `AssumeRoleFailed`, and `MfaRequired` are never constructed
[INFO] [stdout]   --> src/errors/mod.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub enum RefreshError {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 53 |     #[error("SSO token expired and refresh failed")]
[INFO] [stdout] 54 |     SsoTokenExpired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     AssumeRoleFailed { role_arn: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     MfaRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RefreshError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ProfileNotFound` is never constructed
[INFO] [stdout]   --> src/errors/mod.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub enum CredentialsFileError {
[INFO] [stdout]    |          -------------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 84 |     ProfileNotFound { profile: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CredentialsFileError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `user_message` and `suggested_action` are never used
[INFO] [stdout]    --> src/errors/mod.rs:92:12
[INFO] [stdout]     |
[INFO] [stdout]  90 | impl SwitcherError {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout]  91 |     /// Get a user-friendly error message with suggested actions
[INFO] [stdout]  92 |     pub fn user_message(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn suggested_action(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/utils/paths.rs:34:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl AwsPaths {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn switcher_config_dir() -> SwitcherResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  44 |     pub fn switcher_config_file() -> SwitcherResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn switcher_cache_dir() -> SwitcherResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn ensure_aws_dir() -> SwitcherResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn ensure_switcher_config_dir() -> SwitcherResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn ensure_switcher_cache_dir() -> SwitcherResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn is_readable(path: &PathBuf) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn is_writable(path: &PathBuf) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validate`, `supports_auto_refresh`, and `profile_type` are never used
[INFO] [stdout]    --> src/core/profile.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl ProfileConfig {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn validate(&self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn supports_auto_refresh(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn profile_type(&self) -> &'static 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 `ProfileRegistry` is never constructed
[INFO] [stdout]    --> src/core/profile.rs:164:12
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub struct ProfileRegistry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/profile.rs:171:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | impl ProfileRegistry {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 170 |     /// Create new empty registry
[INFO] [stdout] 171 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn add_profile(&mut self, profile: ProfileConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn get_profile(&self, name: &str) -> Option<&ProfileConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn remove_profile(&mut self, name: &str) -> Option<ProfileConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn profile_names(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn set_default_profile(&mut self, name: String) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn get_default_profile(&self) -> Option<&ProfileConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_expired`, `time_until_expiration`, `is_temporary`, and `validate` are never used
[INFO] [stdout]   --> src/core/credentials.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl AwsCredentials {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn is_expired(&self, threshold_seconds: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn time_until_expiration(&self) -> Option<chrono::Duration> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn is_temporary(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn validate(&self) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CachedToken` is never constructed
[INFO] [stdout]   --> src/core/credentials.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct CachedToken {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `needs_refresh`, and `is_valid` are never used
[INFO] [stdout]   --> src/core/credentials.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | impl CachedToken {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 80 |     /// Create new cached token
[INFO] [stdout] 81 |     pub fn new(credentials: AwsCredentials, refresh_threshold_seconds: i64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn needs_refresh(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ToolConfig` is never constructed
[INFO] [stdout]   --> src/core/config.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct ToolConfig {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/config.rs:56:12
[INFO] [stdout]     |
[INFO] [stdout]  54 | impl ToolConfig {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  55 |     /// Create new tool configuration
[INFO] [stdout]  56 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn from_toml(content: &str) -> Result<Self, toml::de::Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn to_toml(&self) -> Result<String, toml::ser::Error> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn add_profile(&mut self, profile: super::profile::ProfileConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn get_profile(&self, name: &str) -> Option<&super::profile::ProfileConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn remove_profile(&mut self, name: &str) -> Option<super::profile::ProfileConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn profile_names(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn set_default_profile(&mut self, name: String) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn get_default_profile(&self) -> Option<&super::profile::ProfileConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn validate(&self) -> Result<(), Vec<String>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `update_profile`, `remove_profile`, `default_path`, `cleanup_old_backups`, `exists`, and `path` are never used
[INFO] [stdout]    --> src/storage/credentials_file.rs:75:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl CredentialsFile {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn update_profile(&self, profile_name: &str, credentials: AwsCredentials) -> SwitcherResult<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn remove_profile(&self, profile_name: &str) -> SwitcherResult<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn default_path() -> SwitcherResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub fn cleanup_old_backups(&self, keep_count: usize) -> SwitcherResult<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn exists(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 302 |     pub fn path(&self) -> &PathBuf {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `exists` is never used
[INFO] [stdout]    --> src/storage/config_file.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl ConfigFile {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn exists(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `remove_credentials`, `credentials_file_exists`, `config_file_exists`, and `has_valid_credentials` are never used
[INFO] [stdout]    --> src/storage/profile_manager.rs:93:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl ProfileManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn remove_credentials(&self, profile_name: &str) -> SwitcherResult<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn credentials_file_exists(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn config_file_exists(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn has_valid_credentials(&self, profile_name: &str) -> SwitcherResult<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `output` is never used
[INFO] [stdout]    --> src/storage/profile_manager.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl ProfileInfo {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn output(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SsoRoleCredentials` is never constructed
[INFO] [stdout]   --> src/storage/sso_cache.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct SsoRoleCredentials {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SsoRoleCredentialsResponse` is never constructed
[INFO] [stdout]   --> src/storage/sso_cache.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct SsoRoleCredentialsResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `FilePermission` is never constructed
[INFO] [stdout]   --> src/errors/mod.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum SwitcherError {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 45 |     FilePermission { message: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SwitcherError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `SsoTokenExpired`, `AssumeRoleFailed`, and `MfaRequired` are never constructed
[INFO] [stdout]   --> src/errors/mod.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub enum RefreshError {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 53 |     #[error("SSO token expired and refresh failed")]
[INFO] [stdout] 54 |     SsoTokenExpired,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     AssumeRoleFailed { role_arn: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     MfaRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RefreshError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `user_message` and `suggested_action` are never used
[INFO] [stdout]    --> src/errors/mod.rs:92:12
[INFO] [stdout]     |
[INFO] [stdout]  90 | impl SwitcherError {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout]  91 |     /// Get a user-friendly error message with suggested actions
[INFO] [stdout]  92 |     pub fn user_message(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn suggested_action(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `switcher_cache_dir`, `ensure_aws_dir`, `ensure_switcher_config_dir`, `ensure_switcher_cache_dir`, `is_readable`, and `is_writable` are never used
[INFO] [stdout]    --> src/utils/paths.rs:49:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl AwsPaths {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn switcher_cache_dir() -> SwitcherResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn ensure_aws_dir() -> SwitcherResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn ensure_switcher_config_dir() -> SwitcherResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn ensure_switcher_cache_dir() -> SwitcherResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn is_readable(path: &PathBuf) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn is_writable(path: &PathBuf) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 27s
[INFO] running `Command { std: "docker" "inspect" "6aa0c0de59a4e6342767296dbb929fd974ba38ae6fd6eaf678b62fa844582f07", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6aa0c0de59a4e6342767296dbb929fd974ba38ae6fd6eaf678b62fa844582f07", kill_on_drop: false }`
[INFO] [stdout] 6aa0c0de59a4e6342767296dbb929fd974ba38ae6fd6eaf678b62fa844582f07
