[INFO] fetching crate rdhcpd 0.8.0...
[INFO] testing rdhcpd-0.8.0 against 1.95.0 for beta-1.96-2
[INFO] extracting crate rdhcpd 0.8.0 into /workspace/builds/worker-5-tc1/source
[INFO] started tweaking crates.io crate rdhcpd 0.8.0
[INFO] finished tweaking crates.io crate rdhcpd 0.8.0
[INFO] tweaked toml for crates.io crate rdhcpd 0.8.0 written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate rdhcpd 0.8.0 on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate rdhcpd 0.8.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2ee12956d38ef7b0d9c813e4a94e1e92daf94ddf032b5a344a260b23377321f3
[INFO] running `Command { std: "docker" "start" "-a" "2ee12956d38ef7b0d9c813e4a94e1e92daf94ddf032b5a344a260b23377321f3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2ee12956d38ef7b0d9c813e4a94e1e92daf94ddf032b5a344a260b23377321f3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2ee12956d38ef7b0d9c813e4a94e1e92daf94ddf032b5a344a260b23377321f3", kill_on_drop: false }`
[INFO] [stdout] 2ee12956d38ef7b0d9c813e4a94e1e92daf94ddf032b5a344a260b23377321f3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ef5fb350496bc691ffec1262d9d9141f60f618bf7541043458e2c5303c926537
[INFO] running `Command { std: "docker" "start" "-a" "ef5fb350496bc691ffec1262d9d9141f60f618bf7541043458e2c5303c926537", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling aws-lc-rs v1.16.2
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling rustls-pemfile v2.2.0
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling cc v1.2.58
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling dashmap v6.1.0
[INFO] [stderr]    Compiling aws-lc-sys v0.39.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling rustls-webpki v0.103.10
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling rdhcpd v0.8.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: field `api_key` is never read
[INFO] [stdout]   --> src/api/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct ApiState<H: HaBackend> {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub api_key: Option<String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `ddns` is never read
[INFO] [stdout]   --> src/config/types.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct Config {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub ddns: Option<DdnsConfig>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: fields `log_level` and `log_format` are never read
[INFO] [stdout]   --> src/config/types.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct GlobalConfig {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 16 |     #[serde(default = "default_log_level")]
[INFO] [stdout] 17 |     pub log_level: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 18 |     #[serde(default = "default_log_format")]
[INFO] [stdout] 19 |     pub log_format: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GlobalConfig` 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: fields `peer`, `listen`, `mclt`, and `partner_down_delay` are never read
[INFO] [stdout]   --> src/config/types.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     ActiveActive {
[INFO] [stdout]    |     ------------ fields in this variant
[INFO] [stdout] 38 |         peer: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 39 |         /// Address to listen on for peer connections
[INFO] [stdout] 40 |         listen: Option<String>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |         mclt: u32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 45 |         #[serde(default = "default_partner_down_delay")]
[INFO] [stdout] 46 |         partner_down_delay: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HaConfig` 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 `node_id` is never read
[INFO] [stdout]   --> src/config/types.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Raft {
[INFO] [stdout]    |     ---- field in this variant
[INFO] [stdout] 57 |         node_id: u64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HaConfig` 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: fields `hostname`, `dns`, and `router` are never read
[INFO] [stdout]    --> src/config/types.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout]  95 | pub struct ReservationConfig {
[INFO] [stdout]     |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub hostname: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 106 |     /// Per-reservation DNS override
[INFO] [stdout] 107 |     pub dns: Option<Vec<String>>,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 108 |     /// Per-reservation router override
[INFO] [stdout] 109 |     pub router: Option<String>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReservationConfig` 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: multiple fields are never read
[INFO] [stdout]    --> src/config/types.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct DdnsConfig {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 114 |     #[serde(default)]
[INFO] [stdout] 115 |     pub enabled: bool,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 116 |     pub forward_zone: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 117 |     pub reverse_zone_v4: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 118 |     pub reverse_zone_v6: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 119 |     pub dns_server: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 120 |     pub tsig_key: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 121 |     pub tsig_algorithm: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 122 |     pub tsig_secret: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 123 |     #[serde(default = "default_ddns_ttl")]
[INFO] [stdout] 124 |     pub ttl: u32,
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DdnsConfig` 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: struct `ParsedSubnet` is never constructed
[INFO] [stdout]    --> src/config/types.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct ParsedSubnet {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SubnetType` is never used
[INFO] [stdout]    --> src/config/types.rs:146:10
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub enum SubnetType {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParsedReservation` is never constructed
[INFO] [stdout]    --> src/config/types.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub struct ParsedReservation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DdnsRequest` is never used
[INFO] [stdout]   --> src/ddns/mod.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum DdnsRequest {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DdnsClient` is never constructed
[INFO] [stdout]   --> src/ddns/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct DdnsClient {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add`, `remove`, and `make_fqdn` are never used
[INFO] [stdout]   --> src/ddns/mod.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl DdnsClient {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 35 |     /// Create a new DDNS client. Returns the client handle and starts the background worker.
[INFO] [stdout] 36 |     pub fn new(config: DdnsConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub async fn add(&self, ip: IpAddr, hostname: &str) {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub async fn remove(&self, ip: IpAddr, hostname: &str) {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     fn make_fqdn(&self, hostname: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ddns_worker` is never used
[INFO] [stdout]   --> src/ddns/mod.rs:82:10
[INFO] [stdout]    |
[INFO] [stdout] 82 | async fn ddns_worker(config: Arc<DdnsConfig>, mut rx: mpsc::Receiver<DdnsRequest>) {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_update` is never used
[INFO] [stdout]    --> src/ddns/mod.rs:242:4
[INFO] [stdout]     |
[INFO] [stdout] 242 | fn build_update(
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_update` is never used
[INFO] [stdout]    --> src/ddns/mod.rs:278:10
[INFO] [stdout]     |
[INFO] [stdout] 278 | async fn send_update(
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reverse_name` is never used
[INFO] [stdout]    --> src/ddns/mod.rs:309:4
[INFO] [stdout]     |
[INFO] [stdout] 309 | fn reverse_name(ip: &IpAddr) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ip_to_rdata` is never used
[INFO] [stdout]    --> src/ddns/mod.rs:331:4
[INFO] [stdout]     |
[INFO] [stdout] 331 | fn ip_to_rdata(ip: &IpAddr) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `epoch_now` is never used
[INFO] [stdout]    --> src/ddns/mod.rs:338:4
[INFO] [stdout]     |
[INFO] [stdout] 338 | fn epoch_now() -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsType` is never used
[INFO] [stdout]  --> src/ddns/dns.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum DnsType {
[INFO] [stdout]   |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsClass` is never used
[INFO] [stdout]   --> src/ddns/dns.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum DnsClass {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsOpcode` is never used
[INFO] [stdout]   --> src/ddns/dns.rs:26:10
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum DnsOpcode {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsRcode` is never used
[INFO] [stdout]   --> src/ddns/dns.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum DnsRcode {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_u8` is never used
[INFO] [stdout]   --> src/ddns/dns.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl DnsRcode {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 49 |     pub fn from_u8(v: u8) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResourceRecord` is never constructed
[INFO] [stdout]   --> src/ddns/dns.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct ResourceRecord {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsMessage` is never constructed
[INFO] [stdout]   --> src/ddns/dns.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct DnsMessage {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_zone`, `add_update`, and `encode` are never used
[INFO] [stdout]    --> src/ddns/dns.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl DnsMessage {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  86 |     pub fn new(id: u16, opcode: DnsOpcode) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn add_zone(&mut self, name: &str, rr_type: DnsType, class: DnsClass) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn add_update(
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn encode(&self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_name` is never used
[INFO] [stdout]    --> src/ddns/dns.rs:161:8
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub fn encode_name(name: &str) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_rr` is never used
[INFO] [stdout]    --> src/ddns/dns.rs:176:4
[INFO] [stdout]     |
[INFO] [stdout] 176 | fn encode_rr(buf: &mut Vec<u8>, rr: &ResourceRecord) {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TsigKey` is never constructed
[INFO] [stdout]  --> src/ddns/tsig.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct TsigKey {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HMAC_SHA256_NAME` is never used
[INFO] [stdout]   --> src/ddns/tsig.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const HMAC_SHA256_NAME: &str = "hmac-sha256";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sign_message` is never used
[INFO] [stdout]   --> src/ddns/tsig.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn sign_message(message: &mut Vec<u8>, key: &TsigKey, msg_id: u16) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hmac_sha256` is never used
[INFO] [stdout]    --> src/ddns/tsig.rs:138:4
[INFO] [stdout]     |
[INFO] [stdout] 138 | fn hmac_sha256(key: &[u8], message: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha256` is never used
[INFO] [stdout]    --> src/ddns/tsig.rs:177:4
[INFO] [stdout]     |
[INFO] [stdout] 177 | fn sha256(data: &[u8]) -> [u8; 32] {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `base64_decode` is never used
[INFO] [stdout]    --> src/ddns/tsig.rs:274:4
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn base64_decode(input: &str) -> Option<Vec<u8>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimiter` is never constructed
[INFO] [stdout]  --> src/ratelimit.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct RateLimiter {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenBucket` is never constructed
[INFO] [stdout]   --> src/ratelimit.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct TokenBucket {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `check`, and `cleanup` are never used
[INFO] [stdout]   --> src/ratelimit.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl RateLimiter {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn new(max_burst: u32, per_second: f64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn check(&self, client_id: &[u8]) -> bool {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     fn cleanup(&self, now: Instant) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MacAcl` is never constructed
[INFO] [stdout]   --> src/ratelimit.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct MacAcl {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `is_allowed` are never used
[INFO] [stdout]    --> src/ratelimit.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl MacAcl {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 105 |     pub fn new(allow: Vec<[u8; 6]>, deny: Vec<[u8; 6]>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn is_allowed(&self, mac: &[u8; 6]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `code` is never used
[INFO] [stdout]    --> src/dhcpv4/options.rs:387:12
[INFO] [stdout]     |
[INFO] [stdout]  82 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 387 |     pub fn code(&self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HTYPE_ETHERNET` is never used
[INFO] [stdout]   --> src/dhcpv4/packet.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const HTYPE_ETHERNET: u8 = 1;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MissingMessageType` is never constructed
[INFO] [stdout]   --> src/dhcpv4/packet.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub enum PacketError {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 76 |     MissingMessageType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PacketError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `parameter_request_list` and `relay_agent_info` are never used
[INFO] [stdout]    --> src/dhcpv4/packet.rs:229:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl DhcpV4Packet {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn parameter_request_list(&self) -> Option<&[u8]> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |     pub fn relay_agent_info(&self) -> Option<&[u8]> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/dhcpv4/server.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct DhcpV4Server<H: HaBackend> {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 24 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IA_TA` is never used
[INFO] [stdout]   --> src/dhcpv6/options.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub const IA_TA: u16 = 4;
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/dhcpv6/server.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct DhcpV6Server<H: HaBackend> {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 30 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `owns_ip` is never used
[INFO] [stdout]   --> src/ha/mod.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait HaBackend: Send + Sync {
[INFO] [stdout]    |           --------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn owns_ip(&self, ip: &IpAddr) -> bool;
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NoQuorum`, `PeerUnreachable`, and `Internal` are never constructed
[INFO] [stdout]   --> src/ha/mod.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum HaError {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout] 40 |     #[error("no quorum available")]
[INFO] [stdout] 41 |     NoQuorum,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 42 |     #[error("peer unreachable: {0}")]
[INFO] [stdout] 43 |     PeerUnreachable(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 44 |     #[error("internal HA error: {0}")]
[INFO] [stdout] 45 |     Internal(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HaError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ActiveActiveBackend` is never constructed
[INFO] [stdout]   --> src/ha/active_active.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct ActiveActiveBackend {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FailoverState` is never constructed
[INFO] [stdout]   --> src/ha/active_active.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | struct FailoverState {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ha/active_active.rs:45:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl ActiveActiveBackend {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout]  45 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn start(
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     async fn outbound_loop(&self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     async fn connect_to_peer(&self) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     async fn inbound_listener(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     async fn handle_peer_message(&self, msg: HaMessage) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 350 |     async fn failover_monitor(&self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     fn owns_ip_internal(&self, ip: &IpAddr, peer_state: PeerState) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 407 |     fn lease_to_sync_msg(lease: &Lease) -> HaMessage {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ip_hash` is never used
[INFO] [stdout]    --> src/ha/active_active.rs:465:4
[INFO] [stdout]     |
[INFO] [stdout] 465 | fn ip_hash(ip: &IpAddr) -> u64 {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_mac_str` is never used
[INFO] [stdout]    --> src/ha/active_active.rs:480:4
[INFO] [stdout]     |
[INFO] [stdout] 480 | fn parse_mac_str(mac: &str) -> Option<[u8; 6]> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `epoch_now` is never used
[INFO] [stdout]    --> src/ha/active_active.rs:492:4
[INFO] [stdout]     |
[INFO] [stdout] 492 | fn epoch_now() -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TlsConfig` is never constructed
[INFO] [stdout]   --> src/ha/peer.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TlsConfig {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> src/ha/peer.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl TlsConfig {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn load(
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_message` is never used
[INFO] [stdout]   --> src/ha/peer.rs:67:14
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub async fn read_message<S: AsyncReadExt + Unpin>(
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_message` is never used
[INFO] [stdout]   --> src/ha/peer.rs:90:14
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub async fn write_message<S: AsyncWriteExt + Unpin>(
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `HaMessage` is never used
[INFO] [stdout]  --> src/ha/protocol.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum HaMessage {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LeaseSyncEntry` is never constructed
[INFO] [stdout]   --> src/ha/protocol.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct LeaseSyncEntry {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PeerState` is never used
[INFO] [stdout]   --> src/ha/protocol.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum PeerState {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `encode` and `decode` are never used
[INFO] [stdout]    --> src/ha/protocol.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl HaMessage {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  90 |     /// Encode a message as a length-prefixed JSON frame
[INFO] [stdout]  91 |     pub fn encode(&self) -> Result<Vec<u8>, serde_json::Error> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn decode(data: &[u8]) -> Result<Self, serde_json::Error> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Role` is never used
[INFO] [stdout]   --> src/ha/raft.rs:19:6
[INFO] [stdout]    |
[INFO] [stdout] 19 | enum Role {
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LogEntry` is never constructed
[INFO] [stdout]   --> src/ha/raft.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct LogEntry {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RaftCommand` is never used
[INFO] [stdout]   --> src/ha/raft.rs:35:10
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub enum RaftCommand {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RaftRpc` is never used
[INFO] [stdout]   --> src/ha/raft.rs:56:10
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub enum RaftRpc {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PeerReplicationState` is never constructed
[INFO] [stdout]   --> src/ha/raft.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | struct PeerReplicationState {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RaftBackend` is never constructed
[INFO] [stdout]   --> src/ha/raft.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct RaftBackend {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RaftState` is never constructed
[INFO] [stdout]    --> src/ha/raft.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | struct RaftState {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `last_log_index`, `last_log_term`, `get_entry`, `term_at`, and `entries_from` are never used
[INFO] [stdout]    --> src/ha/raft.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl RaftState {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 129 |     fn new(_node_id: u64, _peers: &[(u64, String)]) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn last_log_index(&self) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     fn last_log_term(&self) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     fn get_entry(&self, index: u64) -> Option<&LogEntry> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     fn term_at(&self, index: u64) -> u64 {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     fn entries_from(&self, start_index: u64) -> &[LogEntry] {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ha/raft.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout] 183 | impl RaftBackend {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 184 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     async fn run(
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     async fn tick(&self) {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     async fn start_election(&self, state: &mut RaftState) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     async fn send_heartbeats(&self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     async fn send_rpc(
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 434 |     async fn handle_rpc_response(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 485 |     fn maybe_advance_commit(state: &mut RaftState) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 517 |     async fn rpc_listener(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 582 |     async fn handle_rpc_message(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 716 |     async fn propose(&self, command: RaftCommand) -> Result<(), HaError> {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 742 |     async fn apply_committed(&self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wrap_rpc` is never used
[INFO] [stdout]    --> src/ha/raft.rs:875:4
[INFO] [stdout]     |
[INFO] [stdout] 875 | fn wrap_rpc(rpc: &RaftRpc) -> HaMessage {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_election_timeout` is never used
[INFO] [stdout]    --> src/ha/raft.rs:884:4
[INFO] [stdout]     |
[INFO] [stdout] 884 | fn random_election_timeout() -> Duration {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_mac_str` is never used
[INFO] [stdout]    --> src/ha/raft.rs:891:4
[INFO] [stdout]     |
[INFO] [stdout] 891 | fn parse_mac_str(mac: &str) -> Option<[u8; 6]> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `epoch_now` is never used
[INFO] [stdout]    --> src/ha/raft.rs:903:4
[INFO] [stdout]     |
[INFO] [stdout] 903 | fn epoch_now() -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `active_count` and `total_count` are never used
[INFO] [stdout]    --> src/lease/store.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl LeaseStore {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn active_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn total_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `expires_at` is never read
[INFO] [stdout]   --> src/lease/types.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct Lease {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub expires_at: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Lease` 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: method `log_state_change` is never used
[INFO] [stdout]    --> src/wal/mod.rs:145:18
[INFO] [stdout]     |
[INFO] [stdout]  66 | impl Wal {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub async fn log_state_change(&self, ip: &IpAddr, state: LeaseState) -> Result<(), WalError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 11s
[INFO] running `Command { std: "docker" "inspect" "ef5fb350496bc691ffec1262d9d9141f60f618bf7541043458e2c5303c926537", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ef5fb350496bc691ffec1262d9d9141f60f618bf7541043458e2c5303c926537", kill_on_drop: false }`
[INFO] [stdout] ef5fb350496bc691ffec1262d9d9141f60f618bf7541043458e2c5303c926537
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e2dda29d22d0eb768724de3f40ea45195cc8a1f1960e28ecad739947707a47a2
[INFO] running `Command { std: "docker" "start" "-a" "e2dda29d22d0eb768724de3f40ea45195cc8a1f1960e28ecad739947707a47a2", kill_on_drop: false }`
[INFO] [stderr]    Compiling rdhcpd v0.8.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `ip2`
[INFO] [stdout]    --> src/allocator/mod.rs:331:13
[INFO] [stdout]     |
[INFO] [stdout] 331 |         let ip2 = alloc.allocate().unwrap();
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_ip2`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `api_key` is never read
[INFO] [stdout]   --> src/api/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct ApiState<H: HaBackend> {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub api_key: Option<String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `ddns` is never read
[INFO] [stdout]   --> src/config/types.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct Config {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub ddns: Option<DdnsConfig>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: fields `log_level` and `log_format` are never read
[INFO] [stdout]   --> src/config/types.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct GlobalConfig {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 16 |     #[serde(default = "default_log_level")]
[INFO] [stdout] 17 |     pub log_level: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 18 |     #[serde(default = "default_log_format")]
[INFO] [stdout] 19 |     pub log_format: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GlobalConfig` 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: fields `peer`, `listen`, `mclt`, and `partner_down_delay` are never read
[INFO] [stdout]   --> src/config/types.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     ActiveActive {
[INFO] [stdout]    |     ------------ fields in this variant
[INFO] [stdout] 38 |         peer: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 39 |         /// Address to listen on for peer connections
[INFO] [stdout] 40 |         listen: Option<String>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |         mclt: u32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 45 |         #[serde(default = "default_partner_down_delay")]
[INFO] [stdout] 46 |         partner_down_delay: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HaConfig` 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 `node_id` is never read
[INFO] [stdout]   --> src/config/types.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Raft {
[INFO] [stdout]    |     ---- field in this variant
[INFO] [stdout] 57 |         node_id: u64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HaConfig` 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: fields `hostname`, `dns`, and `router` are never read
[INFO] [stdout]    --> src/config/types.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout]  95 | pub struct ReservationConfig {
[INFO] [stdout]     |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub hostname: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 106 |     /// Per-reservation DNS override
[INFO] [stdout] 107 |     pub dns: Option<Vec<String>>,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 108 |     /// Per-reservation router override
[INFO] [stdout] 109 |     pub router: Option<String>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReservationConfig` 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: multiple fields are never read
[INFO] [stdout]    --> src/config/types.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct DdnsConfig {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 114 |     #[serde(default)]
[INFO] [stdout] 115 |     pub enabled: bool,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 116 |     pub forward_zone: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 117 |     pub reverse_zone_v4: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 118 |     pub reverse_zone_v6: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 119 |     pub dns_server: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 120 |     pub tsig_key: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 121 |     pub tsig_algorithm: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 122 |     pub tsig_secret: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 123 |     #[serde(default = "default_ddns_ttl")]
[INFO] [stdout] 124 |     pub ttl: u32,
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DdnsConfig` 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: struct `ParsedSubnet` is never constructed
[INFO] [stdout]    --> src/config/types.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct ParsedSubnet {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SubnetType` is never used
[INFO] [stdout]    --> src/config/types.rs:146:10
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub enum SubnetType {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParsedReservation` is never constructed
[INFO] [stdout]    --> src/config/types.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub struct ParsedReservation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DdnsRequest` is never used
[INFO] [stdout]   --> src/ddns/mod.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum DdnsRequest {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DdnsClient` is never constructed
[INFO] [stdout]   --> src/ddns/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct DdnsClient {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add`, `remove`, and `make_fqdn` are never used
[INFO] [stdout]   --> src/ddns/mod.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl DdnsClient {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 35 |     /// Create a new DDNS client. Returns the client handle and starts the background worker.
[INFO] [stdout] 36 |     pub fn new(config: DdnsConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub async fn add(&self, ip: IpAddr, hostname: &str) {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub async fn remove(&self, ip: IpAddr, hostname: &str) {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     fn make_fqdn(&self, hostname: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ddns_worker` is never used
[INFO] [stdout]   --> src/ddns/mod.rs:82:10
[INFO] [stdout]    |
[INFO] [stdout] 82 | async fn ddns_worker(config: Arc<DdnsConfig>, mut rx: mpsc::Receiver<DdnsRequest>) {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_update` is never used
[INFO] [stdout]    --> src/ddns/mod.rs:242:4
[INFO] [stdout]     |
[INFO] [stdout] 242 | fn build_update(
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_update` is never used
[INFO] [stdout]    --> src/ddns/mod.rs:278:10
[INFO] [stdout]     |
[INFO] [stdout] 278 | async fn send_update(
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reverse_name` is never used
[INFO] [stdout]    --> src/ddns/mod.rs:309:4
[INFO] [stdout]     |
[INFO] [stdout] 309 | fn reverse_name(ip: &IpAddr) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ip_to_rdata` is never used
[INFO] [stdout]    --> src/ddns/mod.rs:331:4
[INFO] [stdout]     |
[INFO] [stdout] 331 | fn ip_to_rdata(ip: &IpAddr) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `epoch_now` is never used
[INFO] [stdout]    --> src/ddns/mod.rs:338:4
[INFO] [stdout]     |
[INFO] [stdout] 338 | fn epoch_now() -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsType` is never used
[INFO] [stdout]  --> src/ddns/dns.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum DnsType {
[INFO] [stdout]   |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsClass` is never used
[INFO] [stdout]   --> src/ddns/dns.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum DnsClass {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsOpcode` is never used
[INFO] [stdout]   --> src/ddns/dns.rs:26:10
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum DnsOpcode {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DnsRcode` is never used
[INFO] [stdout]   --> src/ddns/dns.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum DnsRcode {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_u8` is never used
[INFO] [stdout]   --> src/ddns/dns.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl DnsRcode {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 49 |     pub fn from_u8(v: u8) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResourceRecord` is never constructed
[INFO] [stdout]   --> src/ddns/dns.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct ResourceRecord {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DnsMessage` is never constructed
[INFO] [stdout]   --> src/ddns/dns.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct DnsMessage {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_zone`, `add_update`, and `encode` are never used
[INFO] [stdout]    --> src/ddns/dns.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl DnsMessage {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  86 |     pub fn new(id: u16, opcode: DnsOpcode) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn add_zone(&mut self, name: &str, rr_type: DnsType, class: DnsClass) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn add_update(
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn encode(&self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_name` is never used
[INFO] [stdout]    --> src/ddns/dns.rs:161:8
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub fn encode_name(name: &str) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_rr` is never used
[INFO] [stdout]    --> src/ddns/dns.rs:176:4
[INFO] [stdout]     |
[INFO] [stdout] 176 | fn encode_rr(buf: &mut Vec<u8>, rr: &ResourceRecord) {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TsigKey` is never constructed
[INFO] [stdout]  --> src/ddns/tsig.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct TsigKey {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HMAC_SHA256_NAME` is never used
[INFO] [stdout]   --> src/ddns/tsig.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const HMAC_SHA256_NAME: &str = "hmac-sha256";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sign_message` is never used
[INFO] [stdout]   --> src/ddns/tsig.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn sign_message(message: &mut Vec<u8>, key: &TsigKey, msg_id: u16) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hmac_sha256` is never used
[INFO] [stdout]    --> src/ddns/tsig.rs:138:4
[INFO] [stdout]     |
[INFO] [stdout] 138 | fn hmac_sha256(key: &[u8], message: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha256` is never used
[INFO] [stdout]    --> src/ddns/tsig.rs:177:4
[INFO] [stdout]     |
[INFO] [stdout] 177 | fn sha256(data: &[u8]) -> [u8; 32] {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `base64_decode` is never used
[INFO] [stdout]    --> src/ddns/tsig.rs:274:4
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn base64_decode(input: &str) -> Option<Vec<u8>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimiter` is never constructed
[INFO] [stdout]  --> src/ratelimit.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct RateLimiter {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenBucket` is never constructed
[INFO] [stdout]   --> src/ratelimit.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct TokenBucket {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `check`, and `cleanup` are never used
[INFO] [stdout]   --> src/ratelimit.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl RateLimiter {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn new(max_burst: u32, per_second: f64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn check(&self, client_id: &[u8]) -> bool {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     fn cleanup(&self, now: Instant) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MacAcl` is never constructed
[INFO] [stdout]   --> src/ratelimit.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct MacAcl {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `is_allowed` are never used
[INFO] [stdout]    --> src/ratelimit.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl MacAcl {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 105 |     pub fn new(allow: Vec<[u8; 6]>, deny: Vec<[u8; 6]>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn is_allowed(&self, mac: &[u8; 6]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `code` is never used
[INFO] [stdout]    --> src/dhcpv4/options.rs:387:12
[INFO] [stdout]     |
[INFO] [stdout]  82 | impl DhcpOption {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 387 |     pub fn code(&self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HTYPE_ETHERNET` is never used
[INFO] [stdout]   --> src/dhcpv4/packet.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const HTYPE_ETHERNET: u8 = 1;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MissingMessageType` is never constructed
[INFO] [stdout]   --> src/dhcpv4/packet.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub enum PacketError {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 76 |     MissingMessageType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PacketError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `parameter_request_list` and `relay_agent_info` are never used
[INFO] [stdout]    --> src/dhcpv4/packet.rs:229:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl DhcpV4Packet {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn parameter_request_list(&self) -> Option<&[u8]> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |     pub fn relay_agent_info(&self) -> Option<&[u8]> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/dhcpv4/server.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct DhcpV4Server<H: HaBackend> {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 24 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IA_TA` is never used
[INFO] [stdout]   --> src/dhcpv6/options.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub const IA_TA: u16 = 4;
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/dhcpv6/server.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct DhcpV6Server<H: HaBackend> {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 30 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `owns_ip` is never used
[INFO] [stdout]   --> src/ha/mod.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait HaBackend: Send + Sync {
[INFO] [stdout]    |           --------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn owns_ip(&self, ip: &IpAddr) -> bool;
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NoQuorum`, `PeerUnreachable`, and `Internal` are never constructed
[INFO] [stdout]   --> src/ha/mod.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum HaError {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout] 40 |     #[error("no quorum available")]
[INFO] [stdout] 41 |     NoQuorum,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 42 |     #[error("peer unreachable: {0}")]
[INFO] [stdout] 43 |     PeerUnreachable(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 44 |     #[error("internal HA error: {0}")]
[INFO] [stdout] 45 |     Internal(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HaError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ActiveActiveBackend` is never constructed
[INFO] [stdout]   --> src/ha/active_active.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct ActiveActiveBackend {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FailoverState` is never constructed
[INFO] [stdout]   --> src/ha/active_active.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | struct FailoverState {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ha/active_active.rs:45:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl ActiveActiveBackend {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout]  45 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn start(
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     async fn outbound_loop(&self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     async fn connect_to_peer(&self) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     async fn inbound_listener(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     async fn handle_peer_message(&self, msg: HaMessage) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 350 |     async fn failover_monitor(&self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     fn owns_ip_internal(&self, ip: &IpAddr, peer_state: PeerState) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 407 |     fn lease_to_sync_msg(lease: &Lease) -> HaMessage {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ip_hash` is never used
[INFO] [stdout]    --> src/ha/active_active.rs:465:4
[INFO] [stdout]     |
[INFO] [stdout] 465 | fn ip_hash(ip: &IpAddr) -> u64 {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_mac_str` is never used
[INFO] [stdout]    --> src/ha/active_active.rs:480:4
[INFO] [stdout]     |
[INFO] [stdout] 480 | fn parse_mac_str(mac: &str) -> Option<[u8; 6]> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `epoch_now` is never used
[INFO] [stdout]    --> src/ha/active_active.rs:492:4
[INFO] [stdout]     |
[INFO] [stdout] 492 | fn epoch_now() -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TlsConfig` is never constructed
[INFO] [stdout]   --> src/ha/peer.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TlsConfig {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load` is never used
[INFO] [stdout]   --> src/ha/peer.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl TlsConfig {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn load(
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_message` is never used
[INFO] [stdout]   --> src/ha/peer.rs:67:14
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub async fn read_message<S: AsyncReadExt + Unpin>(
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_message` is never used
[INFO] [stdout]   --> src/ha/peer.rs:90:14
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub async fn write_message<S: AsyncWriteExt + Unpin>(
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `HaMessage` is never used
[INFO] [stdout]  --> src/ha/protocol.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum HaMessage {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LeaseSyncEntry` is never constructed
[INFO] [stdout]   --> src/ha/protocol.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct LeaseSyncEntry {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PeerState` is never used
[INFO] [stdout]   --> src/ha/protocol.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum PeerState {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `encode` and `decode` are never used
[INFO] [stdout]    --> src/ha/protocol.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl HaMessage {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  90 |     /// Encode a message as a length-prefixed JSON frame
[INFO] [stdout]  91 |     pub fn encode(&self) -> Result<Vec<u8>, serde_json::Error> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn decode(data: &[u8]) -> Result<Self, serde_json::Error> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Role` is never used
[INFO] [stdout]   --> src/ha/raft.rs:19:6
[INFO] [stdout]    |
[INFO] [stdout] 19 | enum Role {
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LogEntry` is never constructed
[INFO] [stdout]   --> src/ha/raft.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct LogEntry {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RaftCommand` is never used
[INFO] [stdout]   --> src/ha/raft.rs:35:10
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub enum RaftCommand {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RaftRpc` is never used
[INFO] [stdout]   --> src/ha/raft.rs:56:10
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub enum RaftRpc {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PeerReplicationState` is never constructed
[INFO] [stdout]   --> src/ha/raft.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | struct PeerReplicationState {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RaftBackend` is never constructed
[INFO] [stdout]   --> src/ha/raft.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct RaftBackend {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RaftState` is never constructed
[INFO] [stdout]    --> src/ha/raft.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | struct RaftState {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `last_log_index`, `last_log_term`, `get_entry`, `term_at`, and `entries_from` are never used
[INFO] [stdout]    --> src/ha/raft.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl RaftState {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 129 |     fn new(_node_id: u64, _peers: &[(u64, String)]) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn last_log_index(&self) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     fn last_log_term(&self) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     fn get_entry(&self, index: u64) -> Option<&LogEntry> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     fn term_at(&self, index: u64) -> u64 {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     fn entries_from(&self, start_index: u64) -> &[LogEntry] {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ha/raft.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout] 183 | impl RaftBackend {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 184 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     async fn run(
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     async fn tick(&self) {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     async fn start_election(&self, state: &mut RaftState) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     async fn send_heartbeats(&self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     async fn send_rpc(
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 434 |     async fn handle_rpc_response(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 485 |     fn maybe_advance_commit(state: &mut RaftState) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 517 |     async fn rpc_listener(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 582 |     async fn handle_rpc_message(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 716 |     async fn propose(&self, command: RaftCommand) -> Result<(), HaError> {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 742 |     async fn apply_committed(&self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wrap_rpc` is never used
[INFO] [stdout]    --> src/ha/raft.rs:875:4
[INFO] [stdout]     |
[INFO] [stdout] 875 | fn wrap_rpc(rpc: &RaftRpc) -> HaMessage {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_election_timeout` is never used
[INFO] [stdout]    --> src/ha/raft.rs:884:4
[INFO] [stdout]     |
[INFO] [stdout] 884 | fn random_election_timeout() -> Duration {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_mac_str` is never used
[INFO] [stdout]    --> src/ha/raft.rs:891:4
[INFO] [stdout]     |
[INFO] [stdout] 891 | fn parse_mac_str(mac: &str) -> Option<[u8; 6]> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `epoch_now` is never used
[INFO] [stdout]    --> src/ha/raft.rs:903:4
[INFO] [stdout]     |
[INFO] [stdout] 903 | fn epoch_now() -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `active_count` and `total_count` are never used
[INFO] [stdout]    --> src/lease/store.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl LeaseStore {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn active_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn total_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `expires_at` is never read
[INFO] [stdout]   --> src/lease/types.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct Lease {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub expires_at: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Lease` 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: method `log_state_change` is never used
[INFO] [stdout]    --> src/wal/mod.rs:145:18
[INFO] [stdout]     |
[INFO] [stdout]  66 | impl Wal {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub async fn log_state_change(&self, ip: &IpAddr, state: LeaseState) -> Result<(), WalError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 4.25s
[INFO] running `Command { std: "docker" "inspect" "e2dda29d22d0eb768724de3f40ea45195cc8a1f1960e28ecad739947707a47a2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e2dda29d22d0eb768724de3f40ea45195cc8a1f1960e28ecad739947707a47a2", kill_on_drop: false }`
[INFO] [stdout] e2dda29d22d0eb768724de3f40ea45195cc8a1f1960e28ecad739947707a47a2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 5ae592efa0e58b07c5a913e2512e805b69971176cfe51171d7039fb4a8beb85e
[INFO] running `Command { std: "docker" "start" "-a" "5ae592efa0e58b07c5a913e2512e805b69971176cfe51171d7039fb4a8beb85e", kill_on_drop: false }`
[INFO] [stderr] warning: unused variable: `ip2`
[INFO] [stderr]    --> src/allocator/mod.rs:331:13
[INFO] [stderr]     |
[INFO] [stderr] 331 |         let ip2 = alloc.allocate().unwrap();
[INFO] [stderr]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_ip2`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `api_key` is never read
[INFO] [stderr]   --> src/api/mod.rs:21:9
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub struct ApiState<H: HaBackend> {
[INFO] [stderr]    |            -------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 21 |     pub api_key: Option<String>,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `ddns` is never read
[INFO] [stderr]   --> src/config/types.rs:11:9
[INFO] [stderr]    |
[INFO] [stderr]  5 | pub struct Config {
[INFO] [stderr]    |            ------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 11 |     pub ddns: Option<DdnsConfig>,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Config` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `log_level` and `log_format` are never read
[INFO] [stderr]   --> src/config/types.rs:17:9
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub struct GlobalConfig {
[INFO] [stderr]    |            ------------ fields in this struct
[INFO] [stderr] 16 |     #[serde(default = "default_log_level")]
[INFO] [stderr] 17 |     pub log_level: String,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 18 |     #[serde(default = "default_log_format")]
[INFO] [stderr] 19 |     pub log_format: String,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `GlobalConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `peer`, `listen`, `mclt`, and `partner_down_delay` are never read
[INFO] [stderr]   --> src/config/types.rs:38:9
[INFO] [stderr]    |
[INFO] [stderr] 37 |     ActiveActive {
[INFO] [stderr]    |     ------------ fields in this variant
[INFO] [stderr] 38 |         peer: String,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 39 |         /// Address to listen on for peer connections
[INFO] [stderr] 40 |         listen: Option<String>,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 44 |         mclt: u32,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 45 |         #[serde(default = "default_partner_down_delay")]
[INFO] [stderr] 46 |         partner_down_delay: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `HaConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `node_id` is never read
[INFO] [stderr]   --> src/config/types.rs:57:9
[INFO] [stderr]    |
[INFO] [stderr] 56 |     Raft {
[INFO] [stderr]    |     ---- field in this variant
[INFO] [stderr] 57 |         node_id: u64,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `HaConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `hostname`, `dns`, and `router` are never read
[INFO] [stderr]    --> src/config/types.rs:105:9
[INFO] [stderr]     |
[INFO] [stderr]  95 | pub struct ReservationConfig {
[INFO] [stderr]     |            ----------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 105 |     pub hostname: Option<String>,
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 106 |     /// Per-reservation DNS override
[INFO] [stderr] 107 |     pub dns: Option<Vec<String>>,
[INFO] [stderr]     |         ^^^
[INFO] [stderr] 108 |     /// Per-reservation router override
[INFO] [stderr] 109 |     pub router: Option<String>,
[INFO] [stderr]     |         ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ReservationConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]    --> src/config/types.rs:115:9
[INFO] [stderr]     |
[INFO] [stderr] 113 | pub struct DdnsConfig {
[INFO] [stderr]     |            ---------- fields in this struct
[INFO] [stderr] 114 |     #[serde(default)]
[INFO] [stderr] 115 |     pub enabled: bool,
[INFO] [stderr]     |         ^^^^^^^
[INFO] [stderr] 116 |     pub forward_zone: Option<String>,
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr] 117 |     pub reverse_zone_v4: Option<String>,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 118 |     pub reverse_zone_v6: Option<String>,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 119 |     pub dns_server: Option<String>,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr] 120 |     pub tsig_key: Option<String>,
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 121 |     pub tsig_algorithm: Option<String>,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr] 122 |     pub tsig_secret: Option<String>,
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr] 123 |     #[serde(default = "default_ddns_ttl")]
[INFO] [stderr] 124 |     pub ttl: u32,
[INFO] [stderr]     |         ^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `DdnsConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ParsedSubnet` is never constructed
[INFO] [stderr]    --> src/config/types.rs:129:12
[INFO] [stderr]     |
[INFO] [stderr] 129 | pub struct ParsedSubnet {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `SubnetType` is never used
[INFO] [stderr]    --> src/config/types.rs:146:10
[INFO] [stderr]     |
[INFO] [stderr] 146 | pub enum SubnetType {
[INFO] [stderr]     |          ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ParsedReservation` is never constructed
[INFO] [stderr]    --> src/config/types.rs:152:12
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub struct ParsedReservation {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DdnsRequest` is never used
[INFO] [stderr]   --> src/ddns/mod.rs:17:10
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub enum DdnsRequest {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DdnsClient` is never constructed
[INFO] [stderr]   --> src/ddns/mod.rs:29:12
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub struct DdnsClient {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `add`, `remove`, and `make_fqdn` are never used
[INFO] [stderr]   --> src/ddns/mod.rs:36:12
[INFO] [stderr]    |
[INFO] [stderr] 34 | impl DdnsClient {
[INFO] [stderr]    | --------------- associated items in this implementation
[INFO] [stderr] 35 |     /// Create a new DDNS client. Returns the client handle and starts the background worker.
[INFO] [stderr] 36 |     pub fn new(config: DdnsConfig) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 49 |     pub async fn add(&self, ip: IpAddr, hostname: &str) {
[INFO] [stderr]    |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr] 61 |     pub async fn remove(&self, ip: IpAddr, hostname: &str) {
[INFO] [stderr]    |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 70 |     fn make_fqdn(&self, hostname: &str) -> String {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `ddns_worker` is never used
[INFO] [stderr]   --> src/ddns/mod.rs:82:10
[INFO] [stderr]    |
[INFO] [stderr] 82 | async fn ddns_worker(config: Arc<DdnsConfig>, mut rx: mpsc::Receiver<DdnsRequest>) {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `build_update` is never used
[INFO] [stderr]    --> src/ddns/mod.rs:242:4
[INFO] [stderr]     |
[INFO] [stderr] 242 | fn build_update(
[INFO] [stderr]     |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_update` is never used
[INFO] [stderr]    --> src/ddns/mod.rs:278:10
[INFO] [stderr]     |
[INFO] [stderr] 278 | async fn send_update(
[INFO] [stderr]     |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `reverse_name` is never used
[INFO] [stderr]    --> src/ddns/mod.rs:309:4
[INFO] [stderr]     |
[INFO] [stderr] 309 | fn reverse_name(ip: &IpAddr) -> String {
[INFO] [stderr]     |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `ip_to_rdata` is never used
[INFO] [stderr]    --> src/ddns/mod.rs:331:4
[INFO] [stderr]     |
[INFO] [stderr] 331 | fn ip_to_rdata(ip: &IpAddr) -> Vec<u8> {
[INFO] [stderr]     |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `epoch_now` is never used
[INFO] [stderr]    --> src/ddns/mod.rs:338:4
[INFO] [stderr]     |
[INFO] [stderr] 338 | fn epoch_now() -> u64 {
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DnsType` is never used
[INFO] [stderr]  --> src/ddns/dns.rs:7:10
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub enum DnsType {
[INFO] [stderr]   |          ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DnsClass` is never used
[INFO] [stderr]   --> src/ddns/dns.rs:17:10
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub enum DnsClass {
[INFO] [stderr]    |          ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DnsOpcode` is never used
[INFO] [stderr]   --> src/ddns/dns.rs:26:10
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub enum DnsOpcode {
[INFO] [stderr]    |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DnsRcode` is never used
[INFO] [stderr]   --> src/ddns/dns.rs:33:10
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub enum DnsRcode {
[INFO] [stderr]    |          ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `from_u8` is never used
[INFO] [stderr]   --> src/ddns/dns.rs:49:12
[INFO] [stderr]    |
[INFO] [stderr] 48 | impl DnsRcode {
[INFO] [stderr]    | ------------- associated function in this implementation
[INFO] [stderr] 49 |     pub fn from_u8(v: u8) -> Self {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ResourceRecord` is never constructed
[INFO] [stderr]   --> src/ddns/dns.rs:68:12
[INFO] [stderr]    |
[INFO] [stderr] 68 | pub struct ResourceRecord {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DnsMessage` is never constructed
[INFO] [stderr]   --> src/ddns/dns.rs:77:12
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub struct DnsMessage {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `add_zone`, `add_update`, and `encode` are never used
[INFO] [stderr]    --> src/ddns/dns.rs:86:12
[INFO] [stderr]     |
[INFO] [stderr]  85 | impl DnsMessage {
[INFO] [stderr]     | --------------- associated items in this implementation
[INFO] [stderr]  86 |     pub fn new(id: u16, opcode: DnsOpcode) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  97 |     pub fn add_zone(&mut self, name: &str, rr_type: DnsType, class: DnsClass) {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 102 |     pub fn add_update(
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 120 |     pub fn encode(&self) -> Vec<u8> {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `encode_name` is never used
[INFO] [stderr]    --> src/ddns/dns.rs:161:8
[INFO] [stderr]     |
[INFO] [stderr] 161 | pub fn encode_name(name: &str) -> Vec<u8> {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `encode_rr` is never used
[INFO] [stderr]    --> src/ddns/dns.rs:176:4
[INFO] [stderr]     |
[INFO] [stderr] 176 | fn encode_rr(buf: &mut Vec<u8>, rr: &ResourceRecord) {
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TsigKey` is never constructed
[INFO] [stderr]  --> src/ddns/tsig.rs:8:12
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub struct TsigKey {
[INFO] [stderr]   |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `HMAC_SHA256_NAME` is never used
[INFO] [stderr]   --> src/ddns/tsig.rs:15:7
[INFO] [stderr]    |
[INFO] [stderr] 15 | const HMAC_SHA256_NAME: &str = "hmac-sha256";
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `sign_message` is never used
[INFO] [stderr]   --> src/ddns/tsig.rs:19:8
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub fn sign_message(message: &mut Vec<u8>, key: &TsigKey, msg_id: u16) {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `hmac_sha256` is never used
[INFO] [stderr]    --> src/ddns/tsig.rs:138:4
[INFO] [stderr]     |
[INFO] [stderr] 138 | fn hmac_sha256(key: &[u8], message: &[u8]) -> Vec<u8> {
[INFO] [stderr]     |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `sha256` is never used
[INFO] [stderr]    --> src/ddns/tsig.rs:177:4
[INFO] [stderr]     |
[INFO] [stderr] 177 | fn sha256(data: &[u8]) -> [u8; 32] {
[INFO] [stderr]     |    ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `base64_decode` is never used
[INFO] [stderr]    --> src/ddns/tsig.rs:274:4
[INFO] [stderr]     |
[INFO] [stderr] 274 | fn base64_decode(input: &str) -> Option<Vec<u8>> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RateLimiter` is never constructed
[INFO] [stderr]  --> src/ratelimit.rs:8:12
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub struct RateLimiter {
[INFO] [stderr]   |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TokenBucket` is never constructed
[INFO] [stderr]   --> src/ratelimit.rs:19:8
[INFO] [stderr]    |
[INFO] [stderr] 19 | struct TokenBucket {
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `check`, and `cleanup` are never used
[INFO] [stderr]   --> src/ratelimit.rs:28:12
[INFO] [stderr]    |
[INFO] [stderr] 24 | impl RateLimiter {
[INFO] [stderr]    | ---------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 28 |     pub fn new(max_burst: u32, per_second: f64) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 39 |     pub fn check(&self, client_id: &[u8]) -> bool {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 90 |     fn cleanup(&self, now: Instant) {
[INFO] [stderr]    |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MacAcl` is never constructed
[INFO] [stderr]   --> src/ratelimit.rs:97:12
[INFO] [stderr]    |
[INFO] [stderr] 97 | pub struct MacAcl {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `is_allowed` are never used
[INFO] [stderr]    --> src/ratelimit.rs:105:12
[INFO] [stderr]     |
[INFO] [stderr] 104 | impl MacAcl {
[INFO] [stderr]     | ----------- associated items in this implementation
[INFO] [stderr] 105 |     pub fn new(allow: Vec<[u8; 6]>, deny: Vec<[u8; 6]>) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 110 |     pub fn is_allowed(&self, mac: &[u8; 6]) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `code` is never used
[INFO] [stderr]    --> src/dhcpv4/options.rs:387:12
[INFO] [stderr]     |
[INFO] [stderr]  82 | impl DhcpOption {
[INFO] [stderr]     | --------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 387 |     pub fn code(&self) -> u8 {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `HTYPE_ETHERNET` is never used
[INFO] [stderr]   --> src/dhcpv4/packet.rs:36:7
[INFO] [stderr]    |
[INFO] [stderr] 36 | const HTYPE_ETHERNET: u8 = 1;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `MissingMessageType` is never constructed
[INFO] [stderr]   --> src/dhcpv4/packet.rs:76:5
[INFO] [stderr]    |
[INFO] [stderr] 66 | pub enum PacketError {
[INFO] [stderr]    |          ----------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 76 |     MissingMessageType,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PacketError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `parameter_request_list` and `relay_agent_info` are never used
[INFO] [stderr]    --> src/dhcpv4/packet.rs:229:12
[INFO] [stderr]     |
[INFO] [stderr]  79 | impl DhcpV4Packet {
[INFO] [stderr]     | ----------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 229 |     pub fn parameter_request_list(&self) -> Option<&[u8]> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 262 |     pub fn relay_agent_info(&self) -> Option<&[u8]> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `config` is never read
[INFO] [stderr]   --> src/dhcpv4/server.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub struct DhcpV4Server<H: HaBackend> {
[INFO] [stderr]    |            ------------ field in this struct
[INFO] [stderr] 24 |     config: Arc<Config>,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IA_TA` is never used
[INFO] [stderr]   --> src/dhcpv6/options.rs:10:15
[INFO] [stderr]    |
[INFO] [stderr] 10 |     pub const IA_TA: u16 = 4;
[INFO] [stderr]    |               ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `config` is never read
[INFO] [stderr]   --> src/dhcpv6/server.rs:30:5
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub struct DhcpV6Server<H: HaBackend> {
[INFO] [stderr]    |            ------------ field in this struct
[INFO] [stderr] 30 |     config: Arc<Config>,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `owns_ip` is never used
[INFO] [stderr]   --> src/ha/mod.rs:32:8
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub trait HaBackend: Send + Sync {
[INFO] [stderr]    |           --------- method in this trait
[INFO] [stderr] ...
[INFO] [stderr] 32 |     fn owns_ip(&self, ip: &IpAddr) -> bool;
[INFO] [stderr]    |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `NoQuorum`, `PeerUnreachable`, and `Internal` are never constructed
[INFO] [stderr]   --> src/ha/mod.rs:41:5
[INFO] [stderr]    |
[INFO] [stderr] 39 | pub enum HaError {
[INFO] [stderr]    |          ------- variants in this enum
[INFO] [stderr] 40 |     #[error("no quorum available")]
[INFO] [stderr] 41 |     NoQuorum,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 42 |     #[error("peer unreachable: {0}")]
[INFO] [stderr] 43 |     PeerUnreachable(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 44 |     #[error("internal HA error: {0}")]
[INFO] [stderr] 45 |     Internal(String),
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `HaError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ActiveActiveBackend` is never constructed
[INFO] [stderr]   --> src/ha/active_active.rs:17:12
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub struct ActiveActiveBackend {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `FailoverState` is never constructed
[INFO] [stderr]   --> src/ha/active_active.rs:38:8
[INFO] [stderr]    |
[INFO] [stderr] 38 | struct FailoverState {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/ha/active_active.rs:45:12
[INFO] [stderr]     |
[INFO] [stderr]  44 | impl ActiveActiveBackend {
[INFO] [stderr]     | ------------------------ associated items in this implementation
[INFO] [stderr]  45 |     pub fn new(
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  73 |     pub async fn start(
[INFO] [stderr]     |                  ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 103 |     async fn outbound_loop(&self) {
[INFO] [stderr]     |              ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 131 |     async fn connect_to_peer(&self) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 178 |     async fn inbound_listener(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 241 |     async fn handle_peer_message(&self, msg: HaMessage) {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 350 |     async fn failover_monitor(&self) {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 393 |     fn owns_ip_internal(&self, ip: &IpAddr, peer_state: PeerState) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 407 |     fn lease_to_sync_msg(lease: &Lease) -> HaMessage {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `ip_hash` is never used
[INFO] [stderr]    --> src/ha/active_active.rs:465:4
[INFO] [stderr]     |
[INFO] [stderr] 465 | fn ip_hash(ip: &IpAddr) -> u64 {
[INFO] [stderr]     |    ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_mac_str` is never used
[INFO] [stderr]    --> src/ha/active_active.rs:480:4
[INFO] [stderr]     |
[INFO] [stderr] 480 | fn parse_mac_str(mac: &str) -> Option<[u8; 6]> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `epoch_now` is never used
[INFO] [stderr]    --> src/ha/active_active.rs:492:4
[INFO] [stderr]     |
[INFO] [stderr] 492 | fn epoch_now() -> u64 {
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TlsConfig` is never constructed
[INFO] [stderr]   --> src/ha/peer.rs:10:12
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct TlsConfig {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `load` is never used
[INFO] [stderr]   --> src/ha/peer.rs:18:12
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl TlsConfig {
[INFO] [stderr]    | -------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 18 |     pub fn load(
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_message` is never used
[INFO] [stderr]   --> src/ha/peer.rs:67:14
[INFO] [stderr]    |
[INFO] [stderr] 67 | pub async fn read_message<S: AsyncReadExt + Unpin>(
[INFO] [stderr]    |              ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_message` is never used
[INFO] [stderr]   --> src/ha/peer.rs:90:14
[INFO] [stderr]    |
[INFO] [stderr] 90 | pub async fn write_message<S: AsyncWriteExt + Unpin>(
[INFO] [stderr]    |              ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `HaMessage` is never used
[INFO] [stderr]  --> src/ha/protocol.rs:9:10
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub enum HaMessage {
[INFO] [stderr]   |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LeaseSyncEntry` is never constructed
[INFO] [stderr]   --> src/ha/protocol.rs:53:12
[INFO] [stderr]    |
[INFO] [stderr] 53 | pub struct LeaseSyncEntry {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `PeerState` is never used
[INFO] [stderr]   --> src/ha/protocol.rs:67:10
[INFO] [stderr]    |
[INFO] [stderr] 67 | pub enum PeerState {
[INFO] [stderr]    |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `encode` and `decode` are never used
[INFO] [stderr]    --> src/ha/protocol.rs:91:12
[INFO] [stderr]     |
[INFO] [stderr]  89 | impl HaMessage {
[INFO] [stderr]     | -------------- associated items in this implementation
[INFO] [stderr]  90 |     /// Encode a message as a length-prefixed JSON frame
[INFO] [stderr]  91 |     pub fn encode(&self) -> Result<Vec<u8>, serde_json::Error> {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 101 |     pub fn decode(data: &[u8]) -> Result<Self, serde_json::Error> {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Role` is never used
[INFO] [stderr]   --> src/ha/raft.rs:19:6
[INFO] [stderr]    |
[INFO] [stderr] 19 | enum Role {
[INFO] [stderr]    |      ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LogEntry` is never constructed
[INFO] [stderr]   --> src/ha/raft.rs:27:12
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub struct LogEntry {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `RaftCommand` is never used
[INFO] [stderr]   --> src/ha/raft.rs:35:10
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub enum RaftCommand {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `RaftRpc` is never used
[INFO] [stderr]   --> src/ha/raft.rs:56:10
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub enum RaftRpc {
[INFO] [stderr]    |          ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PeerReplicationState` is never constructed
[INFO] [stderr]   --> src/ha/raft.rs:85:8
[INFO] [stderr]    |
[INFO] [stderr] 85 | struct PeerReplicationState {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RaftBackend` is never constructed
[INFO] [stderr]   --> src/ha/raft.rs:91:12
[INFO] [stderr]    |
[INFO] [stderr] 91 | pub struct RaftBackend {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RaftState` is never constructed
[INFO] [stderr]    --> src/ha/raft.rs:108:8
[INFO] [stderr]     |
[INFO] [stderr] 108 | struct RaftState {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `last_log_index`, `last_log_term`, `get_entry`, `term_at`, and `entries_from` are never used
[INFO] [stderr]    --> src/ha/raft.rs:129:8
[INFO] [stderr]     |
[INFO] [stderr] 128 | impl RaftState {
[INFO] [stderr]     | -------------- associated items in this implementation
[INFO] [stderr] 129 |     fn new(_node_id: u64, _peers: &[(u64, String)]) -> Self {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 144 |     fn last_log_index(&self) -> u64 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 148 |     fn last_log_term(&self) -> u64 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 152 |     fn get_entry(&self, index: u64) -> Option<&LogEntry> {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 163 |     fn term_at(&self, index: u64) -> u64 {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 167 |     fn entries_from(&self, start_index: u64) -> &[LogEntry] {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/ha/raft.rs:184:12
[INFO] [stderr]     |
[INFO] [stderr] 183 | impl RaftBackend {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr] 184 |     pub fn new(
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 215 |     async fn run(
[INFO] [stderr]     |              ^^^
[INFO] [stderr] ...
[INFO] [stderr] 253 |     async fn tick(&self) {
[INFO] [stderr]     |              ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 272 |     async fn start_election(&self, state: &mut RaftState) {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 342 |     async fn send_heartbeats(&self) {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 384 |     async fn send_rpc(
[INFO] [stderr]     |              ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 434 |     async fn handle_rpc_response(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 485 |     fn maybe_advance_commit(state: &mut RaftState) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 517 |     async fn rpc_listener(
[INFO] [stderr]     |              ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 582 |     async fn handle_rpc_message(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 716 |     async fn propose(&self, command: RaftCommand) -> Result<(), HaError> {
[INFO] [stderr]     |              ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 742 |     async fn apply_committed(&self) {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `wrap_rpc` is never used
[INFO] [stderr]    --> src/ha/raft.rs:875:4
[INFO] [stderr]     |
[INFO] [stderr] 875 | fn wrap_rpc(rpc: &RaftRpc) -> HaMessage {
[INFO] [stderr]     |    ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `random_election_timeout` is never used
[INFO] [stderr]    --> src/ha/raft.rs:884:4
[INFO] [stderr]     |
[INFO] [stderr] 884 | fn random_election_timeout() -> Duration {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_mac_str` is never used
[INFO] [stderr]    --> src/ha/raft.rs:891:4
[INFO] [stderr]     |
[INFO] [stderr] 891 | fn parse_mac_str(mac: &str) -> Option<[u8; 6]> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `epoch_now` is never used
[INFO] [stderr]    --> src/ha/raft.rs:903:4
[INFO] [stderr]     |
[INFO] [stderr] 903 | fn epoch_now() -> u64 {
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `active_count` and `total_count` are never used
[INFO] [stderr]    --> src/lease/store.rs:149:12
[INFO] [stderr]     |
[INFO] [stderr]  33 | impl LeaseStore {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 149 |     pub fn active_count(&self) -> usize {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 155 |     pub fn total_count(&self) -> usize {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `expires_at` is never read
[INFO] [stderr]   --> src/lease/types.rs:55:9
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub struct Lease {
[INFO] [stderr]    |            ----- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 55 |     pub expires_at: Instant,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Lease` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `log_state_change` is never used
[INFO] [stderr]    --> src/wal/mod.rs:145:18
[INFO] [stderr]     |
[INFO] [stderr]  66 | impl Wal {
[INFO] [stderr]     | -------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 145 |     pub async fn log_state_change(&self, ip: &IpAddr, state: LeaseState) -> Result<(), WalError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rdhcpd` (bin "rdhcpd" test) generated 80 warnings (run `cargo fix --bin "rdhcpd" -p rdhcpd --tests` to apply 1 suggestion)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.18s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rdhcpd-cc8a1ba5bec5d510)
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test allocator::tests::test_allocate_specific ... ok
[INFO] [stdout] test allocator::tests::test_boundary_no_overflow ... ok
[INFO] [stdout] test allocator::tests::test_out_of_range_rejected ... ok
[INFO] [stdout] test allocator::tests::test_pool_exhaustion ... ok
[INFO] [stdout] test dhcpv4::packet::tests::test_rfc2131_offsets ... ok
[INFO] [stdout] test allocator::tests::test_release_and_reallocate ... ok
[INFO] [stdout] test dhcpv4::packet::tests::test_serialize_parse_roundtrip ... ok
[INFO] [stdout] test allocator::tests::test_allocate_sequential ... ok
[INFO] [stdout] test dhcpv4::packet::tests::test_bad_magic_cookie_rejected ... ok
[INFO] [stdout] test dhcpv4::packet::tests::test_short_packet_rejected ... ok
[INFO] [stdout] test allocator::tests::test_single_ip_pool ... ok
[INFO] [stdout] test allocator::tests::test_exact_word_boundary ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "5ae592efa0e58b07c5a913e2512e805b69971176cfe51171d7039fb4a8beb85e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5ae592efa0e58b07c5a913e2512e805b69971176cfe51171d7039fb4a8beb85e", kill_on_drop: false }`
[INFO] [stdout] 5ae592efa0e58b07c5a913e2512e805b69971176cfe51171d7039fb4a8beb85e
