[INFO] cloning repository https://github.com/proregmao/newdns
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/proregmao/newdns" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fproregmao%2Fnewdns", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fproregmao%2Fnewdns'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d1ab06738591c61e4b695f113088c499497ceb35
[INFO] checking proregmao/newdns/d1ab06738591c61e4b695f113088c499497ceb35 against master#fcac501a73cdde54de46a0683567f1a890730555 for pr-151102
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fproregmao%2Fnewdns" "/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/proregmao/newdns
[INFO] finished tweaking git repo https://github.com/proregmao/newdns
[INFO] tweaked toml for git repo https://github.com/proregmao/newdns written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/proregmao/newdns on toolchain fcac501a73cdde54de46a0683567f1a890730555
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+fcac501a73cdde54de46a0683567f1a890730555" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/proregmao/newdns 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" "+fcac501a73cdde54de46a0683567f1a890730555" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded deadpool v0.12.3
[INFO] [stderr]   Downloaded sketches-ddsketch v0.2.2
[INFO] [stderr]   Downloaded resolv-conf v0.7.5
[INFO] [stderr]   Downloaded rusty-fork v0.3.1
[INFO] [stderr]   Downloaded hickory-dns v0.24.4
[INFO] [stderr]   Downloaded clap v4.5.48
[INFO] [stderr]   Downloaded hickory-resolver v0.24.4
[INFO] [stderr]   Downloaded widestring v1.2.1
[INFO] [stderr]   Downloaded hickory-server v0.24.4
[INFO] [stderr]   Downloaded cc v1.2.41
[INFO] [stderr]   Downloaded regex v1.12.1
[INFO] [stderr]   Downloaded clap_builder v4.5.48
[INFO] [stderr]   Downloaded hickory-client v0.24.4
[INFO] [stderr]   Downloaded proptest v1.8.0
[INFO] [stderr]   Downloaded webpki-roots v1.0.3
[INFO] [stderr]   Downloaded aws-lc-rs v1.14.1
[INFO] [stderr]   Downloaded metrics-util v0.17.0
[INFO] [stderr]   Downloaded metrics-exporter-prometheus v0.15.3
[INFO] [stderr]   Downloaded regex-syntax v0.8.7
[INFO] [stderr]   Downloaded wiremock v0.6.5
[INFO] [stderr]   Downloaded metrics v0.23.1
[INFO] [stderr]   Downloaded generic-array v0.14.8
[INFO] [stderr]   Downloaded hickory-proto v0.24.4
[INFO] [stderr]   Downloaded regex-automata v0.4.12
[INFO] [stderr]   Downloaded aws-lc-sys v0.32.2
[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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+fcac501a73cdde54de46a0683567f1a890730555" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 364fb1a043696c67216f8b770db1654bd4a75d65c6264f86b963e361776afb95
[INFO] running `Command { std: "docker" "start" "-a" "364fb1a043696c67216f8b770db1654bd4a75d65c6264f86b963e361776afb95", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "364fb1a043696c67216f8b770db1654bd4a75d65c6264f86b963e361776afb95", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "364fb1a043696c67216f8b770db1654bd4a75d65c6264f86b963e361776afb95", kill_on_drop: false }`
[INFO] [stdout] 364fb1a043696c67216f8b770db1654bd4a75d65c6264f86b963e361776afb95
[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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+fcac501a73cdde54de46a0683567f1a890730555" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 03abe25f456ebb31cba0d2fd8846496c3a08b5a515065ccc8a9264859106ff48
[INFO] running `Command { std: "docker" "start" "-a" "03abe25f456ebb31cba0d2fd8846496c3a08b5a515065ccc8a9264859106ff48", kill_on_drop: false }`
[INFO] [stderr] warning: rust-dns-server v0.1.0 (/opt/rustwide/workdir) ignoring invalid dependency `hickory-dns` which is missing a lib target
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling find-msvc-tools v0.1.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]     Checking stable_deref_trait v1.2.1
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling zerocopy-derive v0.8.27
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling libloading v0.8.8
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking regex-syntax v0.8.7
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]    Compiling aws-lc-rs v1.14.1
[INFO] [stderr]     Checking zerovec v0.11.4
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]    Compiling generic-array v0.14.8
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling rustls v0.23.32
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]     Checking rustls-native-certs v0.6.3
[INFO] [stderr]    Compiling enum-as-inner v0.6.1
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking clap_builder v4.5.48
[INFO] [stderr]    Compiling clap_derive v4.5.47
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking nibble_vec v0.1.0
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.3
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking socket2 v0.6.0
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]    Compiling cc v1.2.41
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking winnow v0.7.13
[INFO] [stderr]     Checking data-encoding v2.9.0
[INFO] [stderr]     Checking endian-type v0.1.2
[INFO] [stderr]     Checking bitflags v2.9.4
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]     Checking regex-automata v0.4.12
[INFO] [stderr]     Checking radix_trie v0.2.1
[INFO] [stderr]     Checking time v0.3.44
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking rustls-native-certs v0.8.1
[INFO] [stderr]     Checking webpki-roots v1.0.3
[INFO] [stderr]     Checking crossbeam-queue v0.3.12
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking ciborium-io v0.2.2
[INFO] [stderr]     Checking plotters-backend v0.3.7
[INFO] [stderr]     Checking unsafe-libyaml v0.2.11
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking crossbeam v0.8.4
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]    Compiling cmake v0.1.54
[INFO] [stderr]     Checking plotters-svg v0.3.7
[INFO] [stderr]     Checking webpki-roots v0.26.11
[INFO] [stderr]     Checking sysinfo v0.30.13
[INFO] [stderr]     Checking uuid v1.18.1
[INFO] [stderr]     Checking serde_json v1.0.145
[INFO] [stderr]     Checking wait-timeout v0.2.1
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking clap v4.5.48
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]     Checking bit-vec v0.8.0
[INFO] [stderr]     Checking cast v0.3.0
[INFO] [stderr]     Checking deadpool-runtime v0.1.4
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling aws-lc-sys v0.32.2
[INFO] [stderr]     Checking bit-set v0.8.0
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking half v2.7.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking metrics v0.23.1
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking assert-json-diff v2.0.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking rusty-fork v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking rand_xorshift v0.4.0
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]     Checking unarray v0.1.4
[INFO] [stderr]     Checking oorandom v11.1.5
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking anes v0.1.6
[INFO] [stderr]     Checking proptest v1.8.0
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking regex v1.12.1
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.20
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking tracing-appender v0.2.3
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]     Checking tokio-util v0.7.16
[INFO] [stderr]     Checking hickory-proto v0.24.4
[INFO] [stderr]     Checking deadpool v0.12.3
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]     Checking tokio-test v0.4.4
[INFO] [stderr]     Checking h2 v0.4.12
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]     Checking hickory-client v0.24.4
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking hyper v1.7.0
[INFO] [stderr]     Checking hyper-util v0.1.17
[INFO] [stderr]     Checking hyper-rustls v0.24.2
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking wiremock v0.6.5
[INFO] [stderr]     Checking rustls-webpki v0.103.7
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking rust-dns-server v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `UpstreamType`
[INFO] [stdout]  --> src/config/mod.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::{DnsProtocol, UpstreamType};
[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: `create_refused_response`
[INFO] [stdout]  --> src/server/mod.rs:5:83
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::dns::{DnsQuery, DnsResponse, DnsQueryParser, create_servfail_response, create_refused_response};
[INFO] [stdout]   |                                                                                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DNSClass`
[INFO] [stdout]    --> src/server/mod.rs:414:39
[INFO] [stdout]     |
[INFO] [stdout] 414 |         use hickory_proto::rr::{Name, DNSClass};
[INFO] [stdout]     |                                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RecordType`
[INFO] [stdout]    --> src/forwarder/mod.rs:255:39
[INFO] [stdout]     |
[INFO] [stdout] 255 |         use hickory_proto::rr::{Name, RecordType};
[INFO] [stdout]     |                                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hickory_proto::serialize::binary::BinEncodable`
[INFO] [stdout]    --> src/forwarder/mod.rs:256:13
[INFO] [stdout]     |
[INFO] [stdout] 256 |         use hickory_proto::serialize::binary::BinEncodable;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hickory_proto::serialize::binary::BinDecodable`
[INFO] [stdout]    --> src/forwarder/mod.rs:277:13
[INFO] [stdout]     |
[INFO] [stdout] 277 |         use hickory_proto::serialize::binary::BinDecodable;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, and `info`
[INFO] [stdout]  --> src/doh/mod.rs:9:15
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::{debug, warn, info, error};
[INFO] [stdout]   |               ^^^^^        ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Response`
[INFO] [stdout]   --> src/doh/mod.rs:12:30
[INFO] [stdout]    |
[INFO] [stdout] 12 | use hyper::{Method, Request, Response, Uri, body::Bytes};
[INFO] [stdout]    |                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/dot/mod.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tracing::{error, warn, debug};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/protocol_priority.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/load_balancer.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Arc`
[INFO] [stdout]  --> src/geosite/mod.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::{Arc, RwLock};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `error`
[INFO] [stdout]   --> src/geosite/mod.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{debug, info, warn, error};
[INFO] [stdout]    |               ^^^^^              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/domain_matcher.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]   --> src/routing_engine.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MatchResult as DomainMatchResult`
[INFO] [stdout]   --> src/routing_engine.rs:15:53
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::domain_matcher::{OptimizedDomainMatcher, MatchResult as DomainMatchResult};
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/advanced_cache.rs:14:28
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]   --> src/performance_optimization.rs:12:17
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/performance_optimization.rs:14:28
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/connection_manager.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/connection_manager.rs:14:13
[INFO] [stdout]    |
[INFO] [stdout] 14 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> src/monitoring.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 | use tracing::{debug, info};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/config_manager.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/config_manager.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]   --> src/config_manager.rs:14:28
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tracing::{debug, info, warn, error};
[INFO] [stdout]    |                            ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/config_manager.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/security_features.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `UpstreamType`
[INFO] [stdout]  --> src/config/mod.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::{DnsProtocol, UpstreamType};
[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: `create_refused_response`
[INFO] [stdout]  --> src/server/mod.rs:5:83
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::dns::{DnsQuery, DnsResponse, DnsQueryParser, create_servfail_response, create_refused_response};
[INFO] [stdout]   |                                                                                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DNSClass`
[INFO] [stdout]    --> src/server/mod.rs:414:39
[INFO] [stdout]     |
[INFO] [stdout] 414 |         use hickory_proto::rr::{Name, DNSClass};
[INFO] [stdout]     |                                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ServerConfig`
[INFO] [stdout]     --> src/server/mod.rs:1510:42
[INFO] [stdout]      |
[INFO] [stdout] 1510 |     use crate::config::{DnsServerConfig, ServerConfig};
[INFO] [stdout]      |                                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RecordType`
[INFO] [stdout]    --> src/forwarder/mod.rs:255:39
[INFO] [stdout]     |
[INFO] [stdout] 255 |         use hickory_proto::rr::{Name, RecordType};
[INFO] [stdout]     |                                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hickory_proto::serialize::binary::BinEncodable`
[INFO] [stdout]    --> src/forwarder/mod.rs:256:13
[INFO] [stdout]     |
[INFO] [stdout] 256 |         use hickory_proto::serialize::binary::BinEncodable;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hickory_proto::serialize::binary::BinDecodable`
[INFO] [stdout]    --> src/forwarder/mod.rs:277:13
[INFO] [stdout]     |
[INFO] [stdout] 277 |         use hickory_proto::serialize::binary::BinDecodable;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, and `info`
[INFO] [stdout]  --> src/doh/mod.rs:9:15
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::{debug, warn, info, error};
[INFO] [stdout]   |               ^^^^^        ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Response`
[INFO] [stdout]   --> src/doh/mod.rs:12:30
[INFO] [stdout]    |
[INFO] [stdout] 12 | use hyper::{Method, Request, Response, Uri, body::Bytes};
[INFO] [stdout]    |                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/dot/mod.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tracing::{error, warn, debug};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/protocol_priority.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/load_balancer.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Arc`
[INFO] [stdout]  --> src/geosite/mod.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::{Arc, RwLock};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `error`
[INFO] [stdout]   --> src/geosite/mod.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{debug, info, warn, error};
[INFO] [stdout]    |               ^^^^^              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]    --> src/geosite/mod.rs:613:9
[INFO] [stdout]     |
[INFO] [stdout] 613 |     use std::path::PathBuf;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/domain_matcher.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]   --> src/routing_engine.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MatchResult as DomainMatchResult`
[INFO] [stdout]   --> src/routing_engine.rs:15:53
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::domain_matcher::{OptimizedDomainMatcher, MatchResult as DomainMatchResult};
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/advanced_cache.rs:14:28
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]   --> src/performance_optimization.rs:12:17
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/performance_optimization.rs:14:28
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/connection_manager.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/connection_manager.rs:14:13
[INFO] [stdout]    |
[INFO] [stdout] 14 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> src/monitoring.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 | use tracing::{debug, info};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/config_manager.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/config_manager.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]   --> src/config_manager.rs:14:28
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tracing::{debug, info, warn, error};
[INFO] [stdout]    |                            ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/config_manager.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/security_features.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv6Addr`
[INFO] [stdout]    --> src/ip_latency_tester.rs:175:30
[INFO] [stdout]     |
[INFO] [stdout] 175 |     use std::net::{Ipv4Addr, Ipv6Addr};
[INFO] [stdout]     |                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server/mod.rs:172:17
[INFO] [stdout]     |
[INFO] [stdout] 172 |             let mut stats_guard = stats.write().await;
[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/server/mod.rs:224:17
[INFO] [stdout]     |
[INFO] [stdout] 224 |             let mut stats_guard = stats.write().await;
[INFO] [stdout]     |                 ----^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server/mod.rs:172:17
[INFO] [stdout]     |
[INFO] [stdout] 172 |             let mut stats_guard = stats.write().await;
[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/server/mod.rs:224:17
[INFO] [stdout]     |
[INFO] [stdout] 224 |             let mut stats_guard = stats.write().await;
[INFO] [stdout]     |                 ----^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/server/mod.rs:1370:17
[INFO] [stdout]      |
[INFO] [stdout] 1370 |             let mut stats_guard = self.stats.write().await;
[INFO] [stdout]      |                 ----^^^^^^^^^^^
[INFO] [stdout]      |                 |
[INFO] [stdout]      |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/server/mod.rs:1424:25
[INFO] [stdout]      |
[INFO] [stdout] 1424 |                     let mut stats_guard = self.stats.write().await;
[INFO] [stdout]      |                         ----^^^^^^^^^^^
[INFO] [stdout]      |                         |
[INFO] [stdout]      |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/server/mod.rs:1370:17
[INFO] [stdout]      |
[INFO] [stdout] 1370 |             let mut stats_guard = self.stats.write().await;
[INFO] [stdout]      |                 ----^^^^^^^^^^^
[INFO] [stdout]      |                 |
[INFO] [stdout]      |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/server/mod.rs:1424:25
[INFO] [stdout]      |
[INFO] [stdout] 1424 |                     let mut stats_guard = self.stats.write().await;
[INFO] [stdout]      |                         ----^^^^^^^^^^^
[INFO] [stdout]      |                         |
[INFO] [stdout]      |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `server_name` and `url` in initializer of `UpstreamServerConfig`
[INFO] [stdout]    --> src/forwarder/mod.rs:376:17
[INFO] [stdout]     |
[INFO] [stdout] 376 |                 UpstreamServerConfig {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ missing `server_name` and `url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `server_name` and `url` in initializer of `UpstreamServerConfig`
[INFO] [stdout]    --> src/upstream/mod.rs:724:17
[INFO] [stdout]     |
[INFO] [stdout] 724 |                 UpstreamServerConfig {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ missing `server_name` and `url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `server_name` and `url` in initializer of `UpstreamServerConfig`
[INFO] [stdout]    --> src/upstream/mod.rs:730:17
[INFO] [stdout]     |
[INFO] [stdout] 730 |                 UpstreamServerConfig {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ missing `server_name` and `url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `server_name` and `url` in initializer of `UpstreamServerConfig`
[INFO] [stdout]    --> src/upstream/mod.rs:757:17
[INFO] [stdout]     |
[INFO] [stdout] 757 |                 UpstreamServerConfig {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ missing `server_name` and `url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/server/mod.rs:1699:35
[INFO] [stdout]      |
[INFO] [stdout] 1699 |         config.server.bind_port = 0; // 使用随机端口
[INFO] [stdout]      |         -----------------------   ^ expected `Option<u16>`, found integer
[INFO] [stdout]      |         |
[INFO] [stdout]      |         expected due to the type of this binding
[INFO] [stdout]      |
[INFO] [stdout]      = note: expected enum `std::option::Option<u16>`
[INFO] [stdout]                 found type `{integer}`
[INFO] [stdout] help: try wrapping the expression in `Some`
[INFO] [stdout]      |
[INFO] [stdout] 1699 |         config.server.bind_port = Some(0); // 使用随机端口
[INFO] [stdout]      |                                   +++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `udp_server`
[INFO] [stdout]    --> src/dns/mod.rs:738:21
[INFO] [stdout]     |
[INFO] [stdout] 738 |         if let Some(ref mut udp_server) = self.udp_server {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_udp_server`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tcp_server`
[INFO] [stdout]    --> src/dns/mod.rs:752:21
[INFO] [stdout]     |
[INFO] [stdout] 752 |         if let Some(ref mut tcp_server) = self.tcp_server {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tcp_server`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stats_guard`
[INFO] [stdout]    --> src/server/mod.rs:992:13
[INFO] [stdout]     |
[INFO] [stdout] 992 |         let stats_guard = self.stats.read().await;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stats_guard`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `stats` is assigned to, but never used
[INFO] [stdout]     --> src/cache/mod.rs:1040:17
[INFO] [stdout]      |
[INFO] [stdout] 1040 |             let mut stats = cache.stats.clone();
[INFO] [stdout]      |                 ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_stats` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `stats` is never read
[INFO] [stdout]     --> src/cache/mod.rs:1041:13
[INFO] [stdout]      |
[INFO] [stdout] 1041 |             stats.cleanups += 1;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `response`
[INFO] [stdout]     --> src/cache/mod.rs:1105:35
[INFO] [stdout]      |
[INFO] [stdout] 1105 |     fn update_response_ttl(&self, response: &mut crate::dns::DnsResponse, remaining_ttl: u32) {
[INFO] [stdout]      |                                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_response`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stats`
[INFO] [stdout]     --> src/cache/mod.rs:1235:13
[INFO] [stdout]      |
[INFO] [stdout] 1235 |         let stats = self.get_stats().await;
[INFO] [stdout]      |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_stats`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]   --> src/security/mod.rs:23:16
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn new(config: &crate::config::SecurityConfig) -> Result<Self, SecurityError> {
[INFO] [stdout]    |                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ip`
[INFO] [stdout]   --> src/security/mod.rs:29:36
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub async fn is_allowed(&self, ip: &std::net::IpAddr) -> bool {
[INFO] [stdout]    |                                    ^^ help: if this is intentional, prefix it with an underscore: `_ip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query_name`
[INFO] [stdout]    --> src/server/mod.rs:241:13
[INFO] [stdout]     |
[INFO] [stdout] 241 |         let query_name = query.name.clone();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_query_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query_type`
[INFO] [stdout]    --> src/server/mod.rs:242:13
[INFO] [stdout]     |
[INFO] [stdout] 242 |         let query_type = query.query_type;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_query_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stats_guard`
[INFO] [stdout]     --> src/server/mod.rs:1221:13
[INFO] [stdout]      |
[INFO] [stdout] 1221 |         let stats_guard = self.stats.read().await;
[INFO] [stdout]      |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stats_guard`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query`
[INFO] [stdout]    --> src/forwarder/mod.rs:219:39
[INFO] [stdout]     |
[INFO] [stdout] 219 |     async fn forward_tcp_query(&self, query: &DnsQuery, server: &UpstreamServer) -> Result<DnsResponse, ForwarderError> {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_query`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query`
[INFO] [stdout]    --> src/forwarder/mod.rs:230:39
[INFO] [stdout]     |
[INFO] [stdout] 230 |     async fn forward_doh_query(&self, query: &DnsQuery, server: &UpstreamServer) -> Result<DnsResponse, ForwarderError> {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_query`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query`
[INFO] [stdout]    --> src/forwarder/mod.rs:241:39
[INFO] [stdout]     |
[INFO] [stdout] 241 |     async fn forward_dot_query(&self, query: &DnsQuery, server: &UpstreamServer) -> Result<DnsResponse, ForwarderError> {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_query`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/config_manager.rs:170:13
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let mut result = content.to_string();
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `DetectionStats` is more private than the item `MaliciousDomainDetector::get_stats`
[INFO] [stdout]    --> src/security_features.rs:325:5
[INFO] [stdout]     |
[INFO] [stdout] 325 |     pub async fn get_stats(&self) -> DetectionStats {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `MaliciousDomainDetector::get_stats` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `DetectionStats` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/security_features.rs:255:1
[INFO] [stdout]     |
[INFO] [stdout] 255 | struct DetectionStats {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LruNode` is never constructed
[INFO] [stdout]    --> src/cache/mod.rs:233:8
[INFO] [stdout]     |
[INFO] [stdout] 233 | struct LruNode {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/cache/mod.rs:240:8
[INFO] [stdout]     |
[INFO] [stdout] 239 | impl LruNode {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] 240 |     fn new(key: String) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `default_ttl` is never read
[INFO] [stdout]    --> src/cache/mod.rs:923:5
[INFO] [stdout]     |
[INFO] [stdout] 915 | pub struct SmartDnsCache {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 923 |     default_ttl: Duration,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SmartDnsCache` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calculate_negative_ttl` is never used
[INFO] [stdout]     --> src/cache/mod.rs:1215:8
[INFO] [stdout]      |
[INFO] [stdout]  935 | impl SmartDnsCache {
[INFO] [stdout]      | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1215 |     fn calculate_negative_ttl(&self, response: &crate::dns::DnsResponse) -> Duration {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `parse_dns_response_with_latency_test` and `query_via_udp` are never used
[INFO] [stdout]    --> src/server/mod.rs:433:14
[INFO] [stdout]     |
[INFO] [stdout]  62 | impl UdpDnsServer {
[INFO] [stdout]     | ----------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 433 |     async fn parse_dns_response_with_latency_test(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 806 |     async fn query_via_udp(query: &DnsQuery, server: &crate::config::UpstreamServerConfig) -> Result<DnsResponse, String> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `established_at` is never read
[INFO] [stdout]     --> src/server/mod.rs:1008:5
[INFO] [stdout]      |
[INFO] [stdout] 1004 | struct TcpConnectionInfo {
[INFO] [stdout]      |        ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1008 |     established_at: Instant,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `TcpConnectionInfo` 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 `default_timeout` is never read
[INFO] [stdout]   --> src/forwarder/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct DnsForwarder {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 61 |     default_timeout: Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DnsForwarder` 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 `created_at` is never read
[INFO] [stdout]    --> src/dot/mod.rs:404:5
[INFO] [stdout]     |
[INFO] [stdout] 399 | struct DotConnection {
[INFO] [stdout]     |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 404 |     created_at: Instant,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hotspot_threshold` is never read
[INFO] [stdout]    --> src/advanced_cache.rs:153:5
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub struct HotspotCache {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 153 |     hotspot_threshold: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `HotspotCache` 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 `max_ttl` is never read
[INFO] [stdout]    --> src/advanced_cache.rs:326:5
[INFO] [stdout]     |
[INFO] [stdout] 318 | pub struct NegativeCacheOptimizer {
[INFO] [stdout]     |            ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 326 |     max_ttl: Duration,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NegativeCacheOptimizer` 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 `domain` is never read
[INFO] [stdout]    --> src/advanced_cache.rs:331:5
[INFO] [stdout]     |
[INFO] [stdout] 330 | struct NegativeCacheEntry {
[INFO] [stdout]     |        ------------------ field in this struct
[INFO] [stdout] 331 |     domain: String,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NegativeCacheEntry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `prewarmer` is never read
[INFO] [stdout]    --> src/advanced_cache.rs:487:5
[INFO] [stdout]     |
[INFO] [stdout] 481 | pub struct MultiLevelCache {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 487 |     prewarmer: Option<Arc<CachePrewarmer>>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]    --> src/performance_optimization.rs:265:5
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub struct WorkerThreadPool {
[INFO] [stdout]     |            ---------------- field in this struct
[INFO] [stdout] 265 |     config: WorkerPoolConfig,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]    --> src/connection_manager.rs:155:5
[INFO] [stdout]     |
[INFO] [stdout] 153 | struct ConnectionMetadata {
[INFO] [stdout]     |        ------------------ field in this struct
[INFO] [stdout] 154 |     /// 连接ID
[INFO] [stdout] 155 |     id: String,
[INFO] [stdout]     |     ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConnectionMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]     --> src/dns/mod.rs:1003:20
[INFO] [stdout]      |
[INFO] [stdout] 1003 |                 if num > 255 {
[INFO] [stdout]      |                    ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]     --> src/server/mod.rs:1293:39
[INFO] [stdout]      |
[INFO] [stdout] 1293 |             if message_length == 0 || message_length > 65535 {
[INFO] [stdout]      |                                       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `udp_server`
[INFO] [stdout]    --> src/dns/mod.rs:738:21
[INFO] [stdout]     |
[INFO] [stdout] 738 |         if let Some(ref mut udp_server) = self.udp_server {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_udp_server`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tcp_server`
[INFO] [stdout]    --> src/dns/mod.rs:752:21
[INFO] [stdout]     |
[INFO] [stdout] 752 |         if let Some(ref mut tcp_server) = self.tcp_server {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tcp_server`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stats_guard`
[INFO] [stdout]    --> src/server/mod.rs:992:13
[INFO] [stdout]     |
[INFO] [stdout] 992 |         let stats_guard = self.stats.read().await;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stats_guard`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `stats` is assigned to, but never used
[INFO] [stdout]     --> src/cache/mod.rs:1040:17
[INFO] [stdout]      |
[INFO] [stdout] 1040 |             let mut stats = cache.stats.clone();
[INFO] [stdout]      |                 ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_stats` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `stats` is never read
[INFO] [stdout]     --> src/cache/mod.rs:1041:13
[INFO] [stdout]      |
[INFO] [stdout] 1041 |             stats.cleanups += 1;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `response`
[INFO] [stdout]     --> src/cache/mod.rs:1105:35
[INFO] [stdout]      |
[INFO] [stdout] 1105 |     fn update_response_ttl(&self, response: &mut crate::dns::DnsResponse, remaining_ttl: u32) {
[INFO] [stdout]      |                                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_response`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stats`
[INFO] [stdout]     --> src/cache/mod.rs:1235:13
[INFO] [stdout]      |
[INFO] [stdout] 1235 |         let stats = self.get_stats().await;
[INFO] [stdout]      |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_stats`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `DotServerConfig` has no field named `ca_cert_path`
[INFO] [stdout]   --> examples/dot_query_example.rs:30:17
[INFO] [stdout]    |
[INFO] [stdout] 30 |                 ca_cert_path: None,
[INFO] [stdout]    |                 ^^^^^^^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 30 |                 ca_cert_paths: None,
[INFO] [stdout]    |                             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `DotServerConfig` has no field named `ca_cert_path`
[INFO] [stdout]   --> examples/dot_query_example.rs:44:17
[INFO] [stdout]    |
[INFO] [stdout] 44 |                 ca_cert_path: None,
[INFO] [stdout]    |                 ^^^^^^^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 44 |                 ca_cert_paths: None,
[INFO] [stdout]    |                             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `enable_active_health_check`, `enable_connection_prewarming`, `health_check_interval` and 3 other fields in initializer of `DotClientConfig`
[INFO] [stdout]   --> examples/dot_query_example.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let config = DotClientConfig {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^ missing `enable_active_health_check`, `enable_connection_prewarming`, `health_check_interval` and 3 other fields
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0063, E0560.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0063`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust-dns-server` (example "dot_query_example") due to 3 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> tests/integration_tests.rs:19:41
[INFO] [stdout]    |
[INFO] [stdout] 19 |     assert_eq!(config.server.bind_port, 53);
[INFO] [stdout]    |                                         ^^ expected `Option<u16>`, found integer
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `Option<u16>`
[INFO] [stdout]               found type `{integer}`
[INFO] [stdout] help: try wrapping the expression in `Some`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     assert_eq!(config.server.bind_port, Some(53));
[INFO] [stdout]    |                                         +++++  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust-dns-server` (test "integration_tests") due to 1 previous error
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]   --> src/security/mod.rs:23:16
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn new(config: &crate::config::SecurityConfig) -> Result<Self, SecurityError> {
[INFO] [stdout]    |                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ip`
[INFO] [stdout]   --> src/security/mod.rs:29:36
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub async fn is_allowed(&self, ip: &std::net::IpAddr) -> bool {
[INFO] [stdout]    |                                    ^^ help: if this is intentional, prefix it with an underscore: `_ip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query_name`
[INFO] [stdout]    --> src/server/mod.rs:241:13
[INFO] [stdout]     |
[INFO] [stdout] 241 |         let query_name = query.name.clone();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_query_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query_type`
[INFO] [stdout]    --> src/server/mod.rs:242:13
[INFO] [stdout]     |
[INFO] [stdout] 242 |         let query_type = query.query_type;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_query_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stats_guard`
[INFO] [stdout]     --> src/server/mod.rs:1221:13
[INFO] [stdout]      |
[INFO] [stdout] 1221 |         let stats_guard = self.stats.read().await;
[INFO] [stdout]      |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stats_guard`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `systemd_manager`
[INFO] [stdout]    --> src/main.rs:201:45
[INFO] [stdout]     |
[INFO] [stdout] 201 | async fn setup_signal_handlers_with_cleanup(systemd_manager: Arc<Mutex<SystemdResolvedManager>>) {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_systemd_manager`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_signal_handlers` is never used
[INFO] [stdout]    --> src/main.rs:229:10
[INFO] [stdout]     |
[INFO] [stdout] 229 | async fn setup_signal_handlers() {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `systemd_manager`
[INFO] [stdout]    --> src/main.rs:201:45
[INFO] [stdout]     |
[INFO] [stdout] 201 | async fn setup_signal_handlers_with_cleanup(systemd_manager: Arc<Mutex<SystemdResolvedManager>>) {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_systemd_manager`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query`
[INFO] [stdout]    --> src/forwarder/mod.rs:219:39
[INFO] [stdout]     |
[INFO] [stdout] 219 |     async fn forward_tcp_query(&self, query: &DnsQuery, server: &UpstreamServer) -> Result<DnsResponse, ForwarderError> {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_query`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query`
[INFO] [stdout]    --> src/forwarder/mod.rs:230:39
[INFO] [stdout]     |
[INFO] [stdout] 230 |     async fn forward_doh_query(&self, query: &DnsQuery, server: &UpstreamServer) -> Result<DnsResponse, ForwarderError> {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_query`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query`
[INFO] [stdout]    --> src/forwarder/mod.rs:241:39
[INFO] [stdout]     |
[INFO] [stdout] 241 |     async fn forward_dot_query(&self, query: &DnsQuery, server: &UpstreamServer) -> Result<DnsResponse, ForwarderError> {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_query`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_signal_handlers` is never used
[INFO] [stdout]    --> src/main.rs:229:10
[INFO] [stdout]     |
[INFO] [stdout] 229 | async fn setup_signal_handlers() {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]     --> src/dot/mod.rs:1724:13
[INFO] [stdout]      |
[INFO] [stdout] 1724 |         let now = Instant::now();
[INFO] [stdout]      |             ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/config_manager.rs:170:13
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let mut result = content.to_string();
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0063, E0308.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0063`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust-dns-server` (lib test) due to 5 previous errors; 51 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "03abe25f456ebb31cba0d2fd8846496c3a08b5a515065ccc8a9264859106ff48", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "03abe25f456ebb31cba0d2fd8846496c3a08b5a515065ccc8a9264859106ff48", kill_on_drop: false }`
[INFO] [stdout] 03abe25f456ebb31cba0d2fd8846496c3a08b5a515065ccc8a9264859106ff48
