[INFO] cloning repository https://github.com/shardnetshadow/shadow-dnspy
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/shardnetshadow/shadow-dnspy" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshardnetshadow%2Fshadow-dnspy", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshardnetshadow%2Fshadow-dnspy'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d56af7681c9cd3c34c13f00ce7f86400a1d11c35
[INFO] checking shardnetshadow/shadow-dnspy against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshardnetshadow%2Fshadow-dnspy" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/shardnetshadow/shadow-dnspy
[INFO] finished tweaking git repo https://github.com/shardnetshadow/shadow-dnspy
[INFO] tweaked toml for git repo https://github.com/shardnetshadow/shadow-dnspy written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/shardnetshadow/shadow-dnspy 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/shardnetshadow/shadow-dnspy 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 bytecount v0.6.9
[INFO] [stderr]   Downloaded codepage v0.1.2
[INFO] [stderr]   Downloaded humantime v2.2.0
[INFO] [stderr]   Downloaded papergrid v0.11.0
[INFO] [stderr]   Downloaded calamine v0.22.1
[INFO] [stderr]   Downloaded prettyplease v0.2.35
[INFO] [stderr]   Downloaded xlsxwriter v0.6.1
[INFO] [stderr]   Downloaded widestring v1.2.0
[INFO] [stderr]   Downloaded resolv-conf v0.7.4
[INFO] [stderr]   Downloaded tabled_derive v0.7.0
[INFO] [stderr]   Downloaded tabled v0.15.0
[INFO] [stderr]   Downloaded quick-xml v0.30.0
[INFO] [stderr]   Downloaded libxlsxwriter-sys v1.1.7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 1f7e2c3a39f2ee8ec83ead9ee74057b921f8841ec5a9721dcc245c58247ac160
[INFO] running `Command { std: "docker" "start" "-a" "1f7e2c3a39f2ee8ec83ead9ee74057b921f8841ec5a9721dcc245c58247ac160", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1f7e2c3a39f2ee8ec83ead9ee74057b921f8841ec5a9721dcc245c58247ac160", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1f7e2c3a39f2ee8ec83ead9ee74057b921f8841ec5a9721dcc245c58247ac160", kill_on_drop: false }`
[INFO] [stdout] 1f7e2c3a39f2ee8ec83ead9ee74057b921f8841ec5a9721dcc245c58247ac160
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 20becc787a34ebe215530ebeb93d224544b2312caa1312338fbae327c89da2cb
[INFO] running `Command { std: "docker" "start" "-a" "20becc787a34ebe215530ebeb93d224544b2312caa1312338fbae327c89da2cb", kill_on_drop: false }`
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling cc v1.2.30
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]     Checking log v0.4.27
[INFO] [stderr]     Checking litemap v0.8.0
[INFO] [stderr]     Checking writeable v0.6.1
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]     Checking signal-hook-registry v1.4.5
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]    Compiling icu_properties_data v2.0.1
[INFO] [stderr]     Checking slab v0.4.10
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]    Compiling glob v0.3.2
[INFO] [stderr]    Compiling icu_normalizer_data v2.0.0
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling prettyplease v0.2.35
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling cfg-if v1.0.1
[INFO] [stderr]    Compiling zerocopy v0.8.26
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]    Compiling libloading v0.8.8
[INFO] [stderr]    Compiling home v0.5.11
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]     Checking weezl v0.1.10
[INFO] [stderr]    Compiling openssl v0.10.73
[INFO] [stderr]    Compiling bindgen v0.69.5
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]    Compiling pathfinder_simd v0.5.5
[INFO] [stderr]    Compiling itertools v0.12.1
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]    Compiling lazycell v1.3.0
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling rustc-hash v1.1.0
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking hashbrown v0.15.4
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking indexmap v2.10.0
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking bit_field v0.10.2
[INFO] [stderr]     Checking lebe v0.5.2
[INFO] [stderr]    Compiling serde_json v1.0.141
[INFO] [stderr]     Checking openssl-probe v0.1.6
[INFO] [stderr]     Checking bytemuck v1.23.1
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]     Checking exr v1.73.0
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking unicode-normalization v0.1.24
[INFO] [stderr]     Checking gif v0.13.3
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]    Compiling openssl-sys v0.9.109
[INFO] [stderr]    Compiling freetype-sys v0.20.1
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking httpdate v1.0.3
[INFO] [stderr]     Checking ipnet v2.11.0
[INFO] [stderr]     Checking unicode-bidi v0.3.18
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]    Compiling font-kit v0.14.3
[INFO] [stderr]     Checking tower-service v0.3.3
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]     Checking pathfinder_geometry v0.5.1
[INFO] [stderr]    Compiling cexpr v0.6.0
[INFO] [stderr]     Checking idna v0.4.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking yeslogic-fontconfig-sys v6.0.0
[INFO] [stderr]     Checking gif v0.12.0
[INFO] [stderr]     Checking bytecount v0.6.9
[INFO] [stderr]    Compiling which v4.4.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]     Checking linked-hash-map v0.5.6
[INFO] [stderr]     Checking data-encoding v2.9.0
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking base64 v0.21.7
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]     Checking clap_builder v4.5.41
[INFO] [stderr]     Checking rustls-pemfile v1.0.4
[INFO] [stderr]     Checking papergrid v0.11.0
[INFO] [stderr]     Checking lru-cache v0.1.2
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking codepage v0.1.2
[INFO] [stderr]     Checking quick-xml v0.30.0
[INFO] [stderr]     Checking zip v0.6.6
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]     Checking csv-core v0.1.12
[INFO] [stderr]     Checking number_prefix v0.4.0
[INFO] [stderr]     Checking humantime v2.2.0
[INFO] [stderr]     Checking termcolor v1.4.1
[INFO] [stderr]     Checking resolv-conf v0.7.4
[INFO] [stderr]     Checking comfy-table v7.1.4
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking uuid v1.17.0
[INFO] [stderr]    Compiling tabled_derive v0.7.0
[INFO] [stderr]     Checking colored v2.2.0
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]     Checking tabled v0.15.0
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking env_logger v0.10.2
[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 futures-macro v0.3.31
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling enum-as-inner v0.6.1
[INFO] [stderr]    Compiling clap_derive v4.5.41
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking tokio v1.46.1
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]    Compiling pest v2.8.1
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking zerovec v0.11.2
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking plotters-bitmap v0.3.7
[INFO] [stderr]     Checking clap v4.5.41
[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]    Compiling pest_meta v2.8.1
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]    Compiling pest_generator v2.8.1
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]    Compiling pest_derive v2.8.1
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking tokio-util v0.7.15
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking trust-dns-proto v0.23.2
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]    Compiling libxlsxwriter-sys v1.1.7
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking csv v1.3.1
[INFO] [stderr]     Checking calamine v0.22.1
[INFO] [stderr]     Checking trust-dns-resolver v0.23.2
[INFO] [stderr]     Checking handlebars v4.5.0
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking xlsxwriter v0.6.1
[INFO] [stderr]     Checking shadow_dnspy v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `record_type`
[INFO] [stdout]    --> src/dns_resolver.rs:137:48
[INFO] [stdout]     |
[INFO] [stdout] 137 |     fn parse_record_data(&self, rdata: &RData, record_type: RecordType) -> Option<DnsRecord> {
[INFO] [stdout]     |                                                ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_record_type`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `record_type`
[INFO] [stdout]    --> src/dns_resolver.rs:137:48
[INFO] [stdout]     |
[INFO] [stdout] 137 |     fn parse_record_data(&self, rdata: &RData, record_type: RecordType) -> Option<DnsRecord> {
[INFO] [stdout]     |                                                ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_record_type`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base`
[INFO] [stdout]    --> src/visual_reporter.rs:348:25
[INFO] [stdout]     |
[INFO] [stdout] 348 | ...   if let Some(base) = first_domain.split('.').rev().take(2).collect::<Vec<_>>().into_iter().rev().collect::<Vec<_>>().join(".").split...
[INFO] [stdout]     |                   ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CaaRecord` is never constructed
[INFO] [stdout]   --> src/parser.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct CaaRecord {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/parser.rs:133:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl RecordParser {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn parse_caa(&self, caa_text: &str) -> Result<CaaRecord> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn extract_email_addresses(&self, text: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn extract_domains(&self, text: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn normalize_domain(&self, domain: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub fn is_valid_domain(&self, domain: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn extract_subdomains(&self, domain: &str, records: &[crate::dns_resolver::DnsRecord]) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     fn extract_subdomain_from_cname(&self, cname_value: &str, base_domain: &str) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `verbose` is never read
[INFO] [stdout]   --> src/report.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct ReportGenerator {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 60 |     verbose: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `domain` is never read
[INFO] [stdout]  --> src/email_audit.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct EmailSecurityResult {
[INFO] [stdout]   |            ------------------- field in this struct
[INFO] [stdout] 7 |     pub domain: String,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `EmailSecurityResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `records` is never read
[INFO] [stdout]   --> src/email_audit.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct CaaStatus {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 41 |     pub has_caa: bool,
[INFO] [stdout] 42 |     pub records: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CaaStatus` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_error` is never used
[INFO] [stdout]   --> src/utils.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn print_error(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_warning` is never used
[INFO] [stdout]   --> src/utils.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn print_warning(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_info` is never used
[INFO] [stdout]   --> src/utils.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn print_info(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_success` is never used
[INFO] [stdout]   --> src/utils.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn print_success(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_duration` is never used
[INFO] [stdout]   --> src/utils.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn format_duration(duration: std::time::Duration) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_bytes` is never used
[INFO] [stdout]   --> src/utils.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn format_bytes(bytes: u64) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sanitize_filename` is never used
[INFO] [stdout]   --> src/utils.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn sanitize_filename(filename: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_domain_name` is never used
[INFO] [stdout]   --> src/utils.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn validate_domain_name(domain: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_domain` is never used
[INFO] [stdout]    --> src/utils.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn normalize_domain(domain: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_record_type_color` is never used
[INFO] [stdout]    --> src/utils.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub fn get_record_type_color(record_type: &str) -> colored::Color {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_security_status_icon` is never used
[INFO] [stdout]    --> src/utils.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn get_security_status_icon(is_secure: bool) -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_status_color` is never used
[INFO] [stdout]    --> src/utils.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn get_status_color(status_code: Option<u16>) -> colored::Color {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_progress_bar` is never used
[INFO] [stdout]    --> src/utils.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub fn create_progress_bar(len: u64, message: &str) -> indicatif::ProgressBar {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `truncate_string` is never used
[INFO] [stdout]    --> src/utils.rs:157:8
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub fn truncate_string(s: &str, max_len: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_private_ip` is never used
[INFO] [stdout]    --> src/utils.rs:165:8
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub fn is_private_ip(ip: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_domain_from_email` is never used
[INFO] [stdout]    --> src/utils.rs:182:8
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub fn extract_domain_from_email(email: &str) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_tld` is never used
[INFO] [stdout]    --> src/utils.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn get_tld(domain: &str) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_entropy` is never used
[INFO] [stdout]    --> src/utils.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn calculate_entropy(s: &str) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base`
[INFO] [stdout]    --> src/visual_reporter.rs:348:25
[INFO] [stdout]     |
[INFO] [stdout] 348 | ...   if let Some(base) = first_domain.split('.').rev().take(2).collect::<Vec<_>>().into_iter().rev().collect::<Vec<_>>().join(".").split...
[INFO] [stdout]     |                   ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CaaRecord` is never constructed
[INFO] [stdout]   --> src/parser.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct CaaRecord {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/parser.rs:133:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl RecordParser {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn parse_caa(&self, caa_text: &str) -> Result<CaaRecord> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn extract_email_addresses(&self, text: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn extract_domains(&self, text: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn normalize_domain(&self, domain: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub fn is_valid_domain(&self, domain: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn extract_subdomains(&self, domain: &str, records: &[crate::dns_resolver::DnsRecord]) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     fn extract_subdomain_from_cname(&self, cname_value: &str, base_domain: &str) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `verbose` is never read
[INFO] [stdout]   --> src/report.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct ReportGenerator {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 60 |     verbose: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `domain` is never read
[INFO] [stdout]  --> src/email_audit.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct EmailSecurityResult {
[INFO] [stdout]   |            ------------------- field in this struct
[INFO] [stdout] 7 |     pub domain: String,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `EmailSecurityResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `records` is never read
[INFO] [stdout]   --> src/email_audit.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct CaaStatus {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 41 |     pub has_caa: bool,
[INFO] [stdout] 42 |     pub records: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CaaStatus` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_error` is never used
[INFO] [stdout]   --> src/utils.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn print_error(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_warning` is never used
[INFO] [stdout]   --> src/utils.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn print_warning(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_info` is never used
[INFO] [stdout]   --> src/utils.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn print_info(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_success` is never used
[INFO] [stdout]   --> src/utils.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn print_success(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_duration` is never used
[INFO] [stdout]   --> src/utils.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn format_duration(duration: std::time::Duration) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_bytes` is never used
[INFO] [stdout]   --> src/utils.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn format_bytes(bytes: u64) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sanitize_filename` is never used
[INFO] [stdout]   --> src/utils.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn sanitize_filename(filename: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_record_type_color` is never used
[INFO] [stdout]    --> src/utils.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub fn get_record_type_color(record_type: &str) -> colored::Color {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_security_status_icon` is never used
[INFO] [stdout]    --> src/utils.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn get_security_status_icon(is_secure: bool) -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_status_color` is never used
[INFO] [stdout]    --> src/utils.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn get_status_color(status_code: Option<u16>) -> colored::Color {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_progress_bar` is never used
[INFO] [stdout]    --> src/utils.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub fn create_progress_bar(len: u64, message: &str) -> indicatif::ProgressBar {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `truncate_string` is never used
[INFO] [stdout]    --> src/utils.rs:157:8
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub fn truncate_string(s: &str, max_len: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_tld` is never used
[INFO] [stdout]    --> src/utils.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn get_tld(domain: &str) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_entropy` is never used
[INFO] [stdout]    --> src/utils.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn calculate_entropy(s: &str) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 07s
[INFO] running `Command { std: "docker" "inspect" "20becc787a34ebe215530ebeb93d224544b2312caa1312338fbae327c89da2cb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "20becc787a34ebe215530ebeb93d224544b2312caa1312338fbae327c89da2cb", kill_on_drop: false }`
[INFO] [stdout] 20becc787a34ebe215530ebeb93d224544b2312caa1312338fbae327c89da2cb
