[INFO] fetching crate sniph 0.1.2...
[INFO] testing sniph-0.1.2 against 1.95.0 for beta-1.96-2
[INFO] extracting crate sniph 0.1.2 into /workspace/builds/worker-6-tc1/source
[INFO] started tweaking crates.io crate sniph 0.1.2
[INFO] finished tweaking crates.io crate sniph 0.1.2
[INFO] tweaked toml for crates.io crate sniph 0.1.2 written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate sniph 0.1.2 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 sniph 0.1.2 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] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded prettify_ip v0.1.2
[INFO] [stderr]   Downloaded dwrote v0.11.4
[INFO] [stderr]   Downloaded pcap v2.3.0
[INFO] [stderr]   Downloaded etherparse v0.19.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 29a0bc539b7936e1b288cdfb86d814bd338e5541e52b29cee81f1c42df35fdb7
[INFO] running `Command { std: "docker" "start" "-a" "29a0bc539b7936e1b288cdfb86d814bd338e5541e52b29cee81f1c42df35fdb7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "29a0bc539b7936e1b288cdfb86d814bd338e5541e52b29cee81f1c42df35fdb7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "29a0bc539b7936e1b288cdfb86d814bd338e5541e52b29cee81f1c42df35fdb7", kill_on_drop: false }`
[INFO] [stdout] 29a0bc539b7936e1b288cdfb86d814bd338e5541e52b29cee81f1c42df35fdb7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 65f85bef801a3b078737202cb7591b8f446f2b7ee5d619ecb9bbb42e5e42e5a3
[INFO] running `Command { std: "docker" "start" "-a" "65f85bef801a3b078737202cb7591b8f446f2b7ee5d619ecb9bbb42e5e42e5a3", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]    Compiling libloading v0.8.8
[INFO] [stderr]    Compiling simd-adler32 v0.3.7
[INFO] [stderr]    Compiling find-msvc-tools v0.1.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling pathfinder_simd v0.5.5
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling cc v1.2.36
[INFO] [stderr]    Compiling yeslogic-fontconfig-sys v6.0.0
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling bitflags v2.9.4
[INFO] [stderr]    Compiling color_quant v1.1.0
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling flate2 v1.1.2
[INFO] [stderr]    Compiling signal-hook-registry v1.4.6
[INFO] [stderr]    Compiling convert_case v0.7.1
[INFO] [stderr]    Compiling png v0.17.16
[INFO] [stderr]    Compiling dlib v0.5.2
[INFO] [stderr]    Compiling jpeg-decoder v0.3.2
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling regex-automata v0.4.10
[INFO] [stderr]    Compiling anstyle-query v1.1.4
[INFO] [stderr]    Compiling weezl v0.1.10
[INFO] [stderr]    Compiling bytemuck v1.23.2
[INFO] [stderr]    Compiling freetype-sys v0.20.1
[INFO] [stderr]    Compiling font-kit v0.14.3
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling image v0.24.9
[INFO] [stderr]    Compiling gif v0.12.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling pathfinder_geometry v0.5.1
[INFO] [stderr]    Compiling anstream v0.6.20
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling float-ord v0.3.2
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling litrs v0.4.2
[INFO] [stderr]    Compiling clap_builder v4.5.47
[INFO] [stderr]    Compiling signal-hook-mio v0.2.4
[INFO] [stderr]    Compiling document-features v0.2.11
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling parking_lot v0.12.4
[INFO] [stderr]    Compiling regex v1.11.2
[INFO] [stderr]    Compiling plotters-bitmap v0.3.7
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]    Compiling clap_derive v4.5.47
[INFO] [stderr]    Compiling errno v0.2.8
[INFO] [stderr]    Compiling ttf-parser v0.20.0
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling derive_more v2.0.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling etherparse v0.19.0
[INFO] [stderr]    Compiling indexmap v2.11.3
[INFO] [stderr]    Compiling pcap v2.3.0
[INFO] [stderr]    Compiling prettify_ip v0.1.2
[INFO] [stderr]    Compiling clap v4.5.47
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling sniph v0.1.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::net::Ipv4Addr`
[INFO] [stdout]  --> src/models.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::net::Ipv4Addr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `format`
[INFO] [stdout]  --> src/sniffed_packet.rs:3:36
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::fmt::{Display, Formatter, format};
[INFO] [stdout]   |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> src/sniffed_packet.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `clap::builder::Str`
[INFO] [stdout]  --> src/sniffer.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use clap::builder::Str;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NetHeaders`, `PacketHeaders`, and `TransportHeader`
[INFO] [stdout]   --> src/main.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 | use etherparse::{NetHeaders, PacketHeaders, TransportHeader};
[INFO] [stdout]    |                  ^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Capture`, `Device`, `Error`, and `Packet`
[INFO] [stdout]   --> src/main.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | use pcap::{Capture, Device, Error, Packet};
[INFO] [stdout]    |            ^^^^^^^  ^^^^^^  ^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::fmt::format;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sleep_over` is never read
[INFO] [stdout]    --> src/reporter.rs:113:30
[INFO] [stdout]     |
[INFO] [stdout] 113 |         let mut sleep_over = false;
[INFO] [stdout]     |                              ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/reporter.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 172 |         mut packet_info: &mut Arc<Mutex<PacketInfo>>,
[INFO] [stdout]     |         ----^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/reporter.rs:194:13
[INFO] [stdout]     |
[INFO] [stdout] 194 |         let mut packet_mapping = &mut packet_info_mutex.packet_mapping;
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/sniffer.rs:156:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |         let mut cap;
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/sniffer.rs:238:25
[INFO] [stdout]     |
[INFO] [stdout] 238 |                     let mut timestamp = Local::now();
[INFO] [stdout]     |                         ----^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/sniffer.rs:240:25
[INFO] [stdout]     |
[INFO] [stdout] 240 |                     let mut packet_size: u128 = packet.header.len as u128;
[INFO] [stdout]     |                         ----^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ts`
[INFO] [stdout]    --> src/sniffer.rs:231:25
[INFO] [stdout]     |
[INFO] [stdout] 231 |                     let ts = packet.header.ts;
[INFO] [stdout]     |                         ^^ help: if this is intentional, prefix it with an underscore: `_ts`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/sniffer.rs:520:21
[INFO] [stdout]     |
[INFO] [stdout] 520 |                 Err(e) => {
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `application_protocol` is never read
[INFO] [stdout]    --> src/sniffer.rs:236:52
[INFO] [stdout]     |
[INFO] [stdout] 236 |                     let mut application_protocol = ApplicationProtocol::Other;
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Either<std::string::String, std::string::String>` is more private than the item `PacketFilter::src_ip`
[INFO] [stdout]   --> src/packet_filtering.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub src_ip: Option<Either<String, String>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `PacketFilter::src_ip` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Either<std::string::String, std::string::String>` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/packet_filtering.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | enum Either<A, B> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Either<std::string::String, std::string::String>` is more private than the item `PacketFilter::dst_ip`
[INFO] [stdout]   --> src/packet_filtering.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub dst_ip: Option<Either<String, String>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `PacketFilter::dst_ip` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Either<std::string::String, std::string::String>` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/packet_filtering.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | enum Either<A, B> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Either<TransportProtocol, TransportProtocol>` is more private than the item `PacketFilter::transport_protocol`
[INFO] [stdout]   --> src/packet_filtering.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub transport_protocol: Option<Either<TransportProtocol, TransportProtocol>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `PacketFilter::transport_protocol` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Either<TransportProtocol, TransportProtocol>` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/packet_filtering.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | enum Either<A, B> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `XMPP` is never constructed
[INFO] [stdout]   --> src/models.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum ApplicationProtocol {
[INFO] [stdout]    |          ------------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 86 |     XMPP,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ApplicationProtocol` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `application_protocol` is never read
[INFO] [stdout]    --> src/models.rs:167:9
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub struct PacketLinkStats {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub application_protocol: ApplicationProtocol,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `output_folder` is never read
[INFO] [stdout]   --> src/reporter.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct Reporter {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 23 |     output_folder: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `chart_update_time_interval_secs` is never read
[INFO] [stdout]    --> src/reporter.rs:631:5
[INFO] [stdout]     |
[INFO] [stdout] 624 | struct IncomingDataThroughputParams<'a> {
[INFO] [stdout]     |        ---------------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 631 |     chart_update_time_interval_secs: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `chart_update_time_interval_secs` is never read
[INFO] [stdout]    --> src/reporter.rs:657:5
[INFO] [stdout]     |
[INFO] [stdout] 650 | struct IncomingPacketThroughputParams<'a> {
[INFO] [stdout]     |        ------------------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 657 |     chart_update_time_interval_secs: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `interface` is never read
[INFO] [stdout]   --> src/sniffer.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Sniffer {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 24 |     interface: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:143:5
[INFO] [stdout]     |
[INFO] [stdout] 143 |     sniffer_handle.join();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 143 |     let _ = sniffer_handle.join();
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `DEVICE_COLUMN_WIDTH` should have a snake case name
[INFO] [stdout]    --> src/main.rs:208:13
[INFO] [stdout]     |
[INFO] [stdout] 208 |     let mut DEVICE_COLUMN_WIDTH: usize = 20;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `device_column_width`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/reporter.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 225 | /         self.write_data_throughput_report(
[INFO] [stdout] 226 | |             outgoing_data_throughput_params,
[INFO] [stdout] 227 | |             incoming_data_throughput_params,
[INFO] [stdout] 228 | |         )
[INFO] [stdout] 229 | |         .map_err(|e| *data_throughput_graph_error = e);
[INFO] [stdout]     | |______________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 225 |         let _ = self.write_data_throughput_report(
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/reporter.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 | /         self.write_packet_throughput_report(
[INFO] [stdout] 232 | |             outgoing_packet_throughput_params,
[INFO] [stdout] 233 | |             incoming_packet_throughput_params,
[INFO] [stdout] 234 | |         )
[INFO] [stdout] 235 | |         .map_err(|e| *data_throughput_graph_error = e);
[INFO] [stdout]     | |______________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 231 |         let _ = self.write_packet_throughput_report(
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/reporter.rs:326:9
[INFO] [stdout]     |
[INFO] [stdout] 326 |         drop(out); // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stdout]     |         ^^^^^---^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              argument has type `&mut OutgoingDataThroughputParams<'_>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 326 -         drop(out); // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stdout] 326 +         let _ = out; // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/reporter.rs:481:9
[INFO] [stdout]     |
[INFO] [stdout] 481 |         drop(out); // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stdout]     |         ^^^^^---^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              argument has type `&mut OutgoingPacketThroughputParams<'_>`
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 481 -         drop(out); // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stdout] 481 +         let _ = out; // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/reporter.rs:553:13
[INFO] [stdout]     |
[INFO] [stdout] 553 | /             writer.write_all(
[INFO] [stdout] 554 | |                 format!(
[INFO] [stdout] 555 | |                     "{},{},{},{},{},{},{},{},{},{},{},{}",
[INFO] [stdout] 556 | |                     "src_ip",
[INFO] [stdout] ...   |
[INFO] [stdout] 569 | |                 .as_bytes(),
[INFO] [stdout] 570 | |             );
[INFO] [stdout]     | |_____________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 553 |             let _ = writer.write_all(
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/reporter.rs:574:13
[INFO] [stdout]     |
[INFO] [stdout] 574 | /             writer.write_all(
[INFO] [stdout] 575 | |                 format!(
[INFO] [stdout] 576 | |                     "\n{},{},{},{},{},{},{},{},{},{},{},{}",
[INFO] [stdout] 577 | |                     link.src_ip,
[INFO] [stdout] ...   |
[INFO] [stdout] 590 | |                 .as_bytes(),
[INFO] [stdout] 591 | |             );
[INFO] [stdout]     | |_____________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 574 |             let _ = writer.write_all(
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/sniffer.rs:153:13
[INFO] [stdout]     |
[INFO] [stdout] 153 |             writeln!(writer, "{}\n{}{}\r", hyphen, header, hyphen);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 153 |             let _ = writeln!(writer, "{}\n{}{}\r", hyphen, header, hyphen);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/sniffer.rs:210:25
[INFO] [stdout]     |
[INFO] [stdout] 210 |                         writer.flush();
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 210 |                         let _ = writer.flush();
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/sniffer.rs:212:21
[INFO] [stdout]     |
[INFO] [stdout] 212 | / ...   writeln!(
[INFO] [stdout] 213 | | ...       writer,
[INFO] [stdout] 214 | | ...       "\r\n\r\nCaptured Packets: {}\r\nSkipped Packets: {}\r\nBytes Transferred: {}\r\nBytes Received: {}\r\nPackets Sent: {}...
[INFO] [stdout] 215 | | ...       captured_packets,
[INFO] [stdout] ...   |
[INFO] [stdout] 222 | | ...       dropped_packets
[INFO] [stdout] 223 | | ...   );
[INFO] [stdout]     | |_______^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 212 |                     let _ = writeln!(
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `netHeaders` should have a snake case name
[INFO] [stdout]    --> src/sniffer.rs:254:30
[INFO] [stdout]     |
[INFO] [stdout] 254 |                         Some(netHeaders) => {
[INFO] [stdout]     |                              ^^^^^^^^^^ help: convert the identifier to snake case: `net_headers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/sniffer.rs:467:33
[INFO] [stdout]     |
[INFO] [stdout] 467 | ...                   writeln!(writer, "{}\r", &sniffed_packet);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 467 |                                 let _ = writeln!(writer, "{}\r", &sniffed_packet);
[INFO] [stdout]     |                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 58.55s
[INFO] running `Command { std: "docker" "inspect" "65f85bef801a3b078737202cb7591b8f446f2b7ee5d619ecb9bbb42e5e42e5a3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "65f85bef801a3b078737202cb7591b8f446f2b7ee5d619ecb9bbb42e5e42e5a3", kill_on_drop: false }`
[INFO] [stdout] 65f85bef801a3b078737202cb7591b8f446f2b7ee5d619ecb9bbb42e5e42e5a3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 1d68759126f2f42dac436620da75e41b5261d2bf7067eda14c762994afed5e76
[INFO] running `Command { std: "docker" "start" "-a" "1d68759126f2f42dac436620da75e41b5261d2bf7067eda14c762994afed5e76", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tempfile v3.23.0
[INFO] [stderr]    Compiling sniph v0.1.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::net::Ipv4Addr`
[INFO] [stdout]  --> src/models.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::net::Ipv4Addr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]    --> src/reporter.rs:706:9
[INFO] [stdout]     |
[INFO] [stdout] 706 |     use std::collections::HashMap;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `format`
[INFO] [stdout]  --> src/sniffed_packet.rs:3:36
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::fmt::{Display, Formatter, format};
[INFO] [stdout]   |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> src/sniffed_packet.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `clap::builder::Str`
[INFO] [stdout]  --> src/sniffer.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use clap::builder::Str;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NetHeaders`, `PacketHeaders`, and `TransportHeader`
[INFO] [stdout]   --> src/main.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 | use etherparse::{NetHeaders, PacketHeaders, TransportHeader};
[INFO] [stdout]    |                  ^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Capture`, `Device`, `Error`, and `Packet`
[INFO] [stdout]   --> src/main.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | use pcap::{Capture, Device, Error, Packet};
[INFO] [stdout]    |            ^^^^^^^  ^^^^^^  ^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::fmt::format;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sleep_over` is never read
[INFO] [stdout]    --> src/reporter.rs:113:30
[INFO] [stdout]     |
[INFO] [stdout] 113 |         let mut sleep_over = false;
[INFO] [stdout]     |                              ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/reporter.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 172 |         mut packet_info: &mut Arc<Mutex<PacketInfo>>,
[INFO] [stdout]     |         ----^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/reporter.rs:194:13
[INFO] [stdout]     |
[INFO] [stdout] 194 |         let mut packet_mapping = &mut packet_info_mutex.packet_mapping;
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/sniffer.rs:156:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |         let mut cap;
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/sniffer.rs:238:25
[INFO] [stdout]     |
[INFO] [stdout] 238 |                     let mut timestamp = Local::now();
[INFO] [stdout]     |                         ----^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/sniffer.rs:240:25
[INFO] [stdout]     |
[INFO] [stdout] 240 |                     let mut packet_size: u128 = packet.header.len as u128;
[INFO] [stdout]     |                         ----^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ts`
[INFO] [stdout]    --> src/sniffer.rs:231:25
[INFO] [stdout]     |
[INFO] [stdout] 231 |                     let ts = packet.header.ts;
[INFO] [stdout]     |                         ^^ help: if this is intentional, prefix it with an underscore: `_ts`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/sniffer.rs:520:21
[INFO] [stdout]     |
[INFO] [stdout] 520 |                 Err(e) => {
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `application_protocol` is never read
[INFO] [stdout]    --> src/sniffer.rs:236:52
[INFO] [stdout]     |
[INFO] [stdout] 236 |                     let mut application_protocol = ApplicationProtocol::Other;
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `packet_filtering::Either<std::string::String, std::string::String>` is more private than the item `packet_filtering::PacketFilter::src_ip`
[INFO] [stdout]   --> src/packet_filtering.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub src_ip: Option<Either<String, String>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `packet_filtering::PacketFilter::src_ip` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `packet_filtering::Either<std::string::String, std::string::String>` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/packet_filtering.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | enum Either<A, B> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `packet_filtering::Either<std::string::String, std::string::String>` is more private than the item `packet_filtering::PacketFilter::dst_ip`
[INFO] [stdout]   --> src/packet_filtering.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub dst_ip: Option<Either<String, String>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `packet_filtering::PacketFilter::dst_ip` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `packet_filtering::Either<std::string::String, std::string::String>` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/packet_filtering.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | enum Either<A, B> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `packet_filtering::Either<models::TransportProtocol, models::TransportProtocol>` is more private than the item `packet_filtering::PacketFilter::transport_protocol`
[INFO] [stdout]   --> src/packet_filtering.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub transport_protocol: Option<Either<TransportProtocol, TransportProtocol>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `packet_filtering::PacketFilter::transport_protocol` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `packet_filtering::Either<models::TransportProtocol, models::TransportProtocol>` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/packet_filtering.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | enum Either<A, B> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `XMPP` is never constructed
[INFO] [stdout]   --> src/models.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum ApplicationProtocol {
[INFO] [stdout]    |          ------------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 86 |     XMPP,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ApplicationProtocol` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `application_protocol` is never read
[INFO] [stdout]    --> src/models.rs:167:9
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub struct PacketLinkStats {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub application_protocol: ApplicationProtocol,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `chart_update_time_interval_secs` is never read
[INFO] [stdout]    --> src/reporter.rs:631:5
[INFO] [stdout]     |
[INFO] [stdout] 624 | struct IncomingDataThroughputParams<'a> {
[INFO] [stdout]     |        ---------------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 631 |     chart_update_time_interval_secs: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `chart_update_time_interval_secs` is never read
[INFO] [stdout]    --> src/reporter.rs:657:5
[INFO] [stdout]     |
[INFO] [stdout] 650 | struct IncomingPacketThroughputParams<'a> {
[INFO] [stdout]     |        ------------------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 657 |     chart_update_time_interval_secs: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `interface` is never read
[INFO] [stdout]   --> src/sniffer.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Sniffer {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 24 |     interface: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:143:5
[INFO] [stdout]     |
[INFO] [stdout] 143 |     sniffer_handle.join();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 143 |     let _ = sniffer_handle.join();
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `DEVICE_COLUMN_WIDTH` should have a snake case name
[INFO] [stdout]    --> src/main.rs:208:13
[INFO] [stdout]     |
[INFO] [stdout] 208 |     let mut DEVICE_COLUMN_WIDTH: usize = 20;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `device_column_width`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/reporter.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 225 | /         self.write_data_throughput_report(
[INFO] [stdout] 226 | |             outgoing_data_throughput_params,
[INFO] [stdout] 227 | |             incoming_data_throughput_params,
[INFO] [stdout] 228 | |         )
[INFO] [stdout] 229 | |         .map_err(|e| *data_throughput_graph_error = e);
[INFO] [stdout]     | |______________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 225 |         let _ = self.write_data_throughput_report(
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/reporter.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 | /         self.write_packet_throughput_report(
[INFO] [stdout] 232 | |             outgoing_packet_throughput_params,
[INFO] [stdout] 233 | |             incoming_packet_throughput_params,
[INFO] [stdout] 234 | |         )
[INFO] [stdout] 235 | |         .map_err(|e| *data_throughput_graph_error = e);
[INFO] [stdout]     | |______________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 231 |         let _ = self.write_packet_throughput_report(
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/reporter.rs:326:9
[INFO] [stdout]     |
[INFO] [stdout] 326 |         drop(out); // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stdout]     |         ^^^^^---^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              argument has type `&mut reporter::OutgoingDataThroughputParams<'_>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 326 -         drop(out); // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stdout] 326 +         let _ = out; // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/reporter.rs:481:9
[INFO] [stdout]     |
[INFO] [stdout] 481 |         drop(out); // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stdout]     |         ^^^^^---^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              argument has type `&mut reporter::OutgoingPacketThroughputParams<'_>`
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 481 -         drop(out); // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stdout] 481 +         let _ = out; // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/reporter.rs:553:13
[INFO] [stdout]     |
[INFO] [stdout] 553 | /             writer.write_all(
[INFO] [stdout] 554 | |                 format!(
[INFO] [stdout] 555 | |                     "{},{},{},{},{},{},{},{},{},{},{},{}",
[INFO] [stdout] 556 | |                     "src_ip",
[INFO] [stdout] ...   |
[INFO] [stdout] 569 | |                 .as_bytes(),
[INFO] [stdout] 570 | |             );
[INFO] [stdout]     | |_____________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 553 |             let _ = writer.write_all(
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/reporter.rs:574:13
[INFO] [stdout]     |
[INFO] [stdout] 574 | /             writer.write_all(
[INFO] [stdout] 575 | |                 format!(
[INFO] [stdout] 576 | |                     "\n{},{},{},{},{},{},{},{},{},{},{},{}",
[INFO] [stdout] 577 | |                     link.src_ip,
[INFO] [stdout] ...   |
[INFO] [stdout] 590 | |                 .as_bytes(),
[INFO] [stdout] 591 | |             );
[INFO] [stdout]     | |_____________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 574 |             let _ = writer.write_all(
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/sniffer.rs:153:13
[INFO] [stdout]     |
[INFO] [stdout] 153 |             writeln!(writer, "{}\n{}{}\r", hyphen, header, hyphen);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 153 |             let _ = writeln!(writer, "{}\n{}{}\r", hyphen, header, hyphen);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/sniffer.rs:210:25
[INFO] [stdout]     |
[INFO] [stdout] 210 |                         writer.flush();
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 210 |                         let _ = writer.flush();
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/sniffer.rs:212:21
[INFO] [stdout]     |
[INFO] [stdout] 212 | / ...   writeln!(
[INFO] [stdout] 213 | | ...       writer,
[INFO] [stdout] 214 | | ...       "\r\n\r\nCaptured Packets: {}\r\nSkipped Packets: {}\r\nBytes Transferred: {}\r\nBytes Received: {}\r\nPackets Sent: {}...
[INFO] [stdout] 215 | | ...       captured_packets,
[INFO] [stdout] ...   |
[INFO] [stdout] 222 | | ...       dropped_packets
[INFO] [stdout] 223 | | ...   );
[INFO] [stdout]     | |_______^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 212 |                     let _ = writeln!(
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `netHeaders` should have a snake case name
[INFO] [stdout]    --> src/sniffer.rs:254:30
[INFO] [stdout]     |
[INFO] [stdout] 254 |                         Some(netHeaders) => {
[INFO] [stdout]     |                              ^^^^^^^^^^ help: convert the identifier to snake case: `net_headers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/sniffer.rs:467:33
[INFO] [stdout]     |
[INFO] [stdout] 467 | ...                   writeln!(writer, "{}\r", &sniffed_packet);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 467 |                                 let _ = writeln!(writer, "{}\r", &sniffed_packet);
[INFO] [stdout]     |                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 7.57s
[INFO] running `Command { std: "docker" "inspect" "1d68759126f2f42dac436620da75e41b5261d2bf7067eda14c762994afed5e76", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1d68759126f2f42dac436620da75e41b5261d2bf7067eda14c762994afed5e76", kill_on_drop: false }`
[INFO] [stdout] 1d68759126f2f42dac436620da75e41b5261d2bf7067eda14c762994afed5e76
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 2b04d69ace2bd1728dab77adc896170902d2f9317c2b726466118699bf3207f7
[INFO] running `Command { std: "docker" "start" "-a" "2b04d69ace2bd1728dab77adc896170902d2f9317c2b726466118699bf3207f7", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `std::net::Ipv4Addr`
[INFO] [stderr]  --> src/models.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::net::Ipv4Addr;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]    --> src/reporter.rs:706:9
[INFO] [stderr]     |
[INFO] [stderr] 706 |     use std::collections::HashMap;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `format`
[INFO] [stderr]  --> src/sniffed_packet.rs:3:36
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::fmt::{Display, Formatter, format};
[INFO] [stderr]   |                                    ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::Instant`
[INFO] [stderr]  --> src/sniffed_packet.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::time::Instant;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `clap::builder::Str`
[INFO] [stderr]  --> src/sniffer.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 | use clap::builder::Str;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `NetHeaders`, `PacketHeaders`, and `TransportHeader`
[INFO] [stderr]   --> src/main.rs:15:18
[INFO] [stderr]    |
[INFO] [stderr] 15 | use etherparse::{NetHeaders, PacketHeaders, TransportHeader};
[INFO] [stderr]    |                  ^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Capture`, `Device`, `Error`, and `Packet`
[INFO] [stderr]   --> src/main.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 16 | use pcap::{Capture, Device, Error, Packet};
[INFO] [stderr]    |            ^^^^^^^  ^^^^^^  ^^^^^  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::fmt::format`
[INFO] [stderr]   --> src/main.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 18 | use std::fmt::format;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `sleep_over` is never read
[INFO] [stderr]    --> src/reporter.rs:113:30
[INFO] [stderr]     |
[INFO] [stderr] 113 |         let mut sleep_over = false;
[INFO] [stderr]     |                              ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/reporter.rs:172:9
[INFO] [stderr]     |
[INFO] [stderr] 172 |         mut packet_info: &mut Arc<Mutex<PacketInfo>>,
[INFO] [stderr]     |         ----^^^^^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/reporter.rs:194:13
[INFO] [stderr]     |
[INFO] [stderr] 194 |         let mut packet_mapping = &mut packet_info_mutex.packet_mapping;
[INFO] [stderr]     |             ----^^^^^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/sniffer.rs:156:13
[INFO] [stderr]     |
[INFO] [stderr] 156 |         let mut cap;
[INFO] [stderr]     |             ----^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/sniffer.rs:238:25
[INFO] [stderr]     |
[INFO] [stderr] 238 |                     let mut timestamp = Local::now();
[INFO] [stderr]     |                         ----^^^^^^^^^
[INFO] [stderr]     |                         |
[INFO] [stderr]     |                         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/sniffer.rs:240:25
[INFO] [stderr]     |
[INFO] [stderr] 240 |                     let mut packet_size: u128 = packet.header.len as u128;
[INFO] [stderr]     |                         ----^^^^^^^^^^^
[INFO] [stderr]     |                         |
[INFO] [stderr]     |                         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ts`
[INFO] [stderr]    --> src/sniffer.rs:231:25
[INFO] [stderr]     |
[INFO] [stderr] 231 |                     let ts = packet.header.ts;
[INFO] [stderr]     |                         ^^ help: if this is intentional, prefix it with an underscore: `_ts`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `e`
[INFO] [stderr]    --> src/sniffer.rs:520:21
[INFO] [stderr]     |
[INFO] [stderr] 520 |                 Err(e) => {
[INFO] [stderr]     |                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `application_protocol` is never read
[INFO] [stderr]    --> src/sniffer.rs:236:52
[INFO] [stderr]     |
[INFO] [stderr] 236 |                     let mut application_protocol = ApplicationProtocol::Other;
[INFO] [stderr]     |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: type `packet_filtering::Either<std::string::String, std::string::String>` is more private than the item `packet_filtering::PacketFilter::src_ip`
[INFO] [stderr]   --> src/packet_filtering.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 |     pub src_ip: Option<Either<String, String>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `packet_filtering::PacketFilter::src_ip` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `packet_filtering::Either<std::string::String, std::string::String>` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/packet_filtering.rs:16:1
[INFO] [stderr]    |
[INFO] [stderr] 16 | enum Either<A, B> {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: type `packet_filtering::Either<std::string::String, std::string::String>` is more private than the item `packet_filtering::PacketFilter::dst_ip`
[INFO] [stderr]   --> src/packet_filtering.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 |     pub dst_ip: Option<Either<String, String>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `packet_filtering::PacketFilter::dst_ip` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `packet_filtering::Either<std::string::String, std::string::String>` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/packet_filtering.rs:16:1
[INFO] [stderr]    |
[INFO] [stderr] 16 | enum Either<A, B> {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `packet_filtering::Either<models::TransportProtocol, models::TransportProtocol>` is more private than the item `packet_filtering::PacketFilter::transport_protocol`
[INFO] [stderr]   --> src/packet_filtering.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 |     pub transport_protocol: Option<Either<TransportProtocol, TransportProtocol>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `packet_filtering::PacketFilter::transport_protocol` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `packet_filtering::Either<models::TransportProtocol, models::TransportProtocol>` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/packet_filtering.rs:16:1
[INFO] [stderr]    |
[INFO] [stderr] 16 | enum Either<A, B> {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `XMPP` is never constructed
[INFO] [stderr]   --> src/models.rs:86:5
[INFO] [stderr]    |
[INFO] [stderr] 42 | pub enum ApplicationProtocol {
[INFO] [stderr]    |          ------------------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 86 |     XMPP,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ApplicationProtocol` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `application_protocol` is never read
[INFO] [stderr]    --> src/models.rs:167:9
[INFO] [stderr]     |
[INFO] [stderr] 160 | pub struct PacketLinkStats {
[INFO] [stderr]     |            --------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 167 |     pub application_protocol: ApplicationProtocol,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `chart_update_time_interval_secs` is never read
[INFO] [stderr]    --> src/reporter.rs:631:5
[INFO] [stderr]     |
[INFO] [stderr] 624 | struct IncomingDataThroughputParams<'a> {
[INFO] [stderr]     |        ---------------------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 631 |     chart_update_time_interval_secs: u8,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `chart_update_time_interval_secs` is never read
[INFO] [stderr]    --> src/reporter.rs:657:5
[INFO] [stderr]     |
[INFO] [stderr] 650 | struct IncomingPacketThroughputParams<'a> {
[INFO] [stderr]     |        ------------------------------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 657 |     chart_update_time_interval_secs: u8,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `interface` is never read
[INFO] [stderr]   --> src/sniffer.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub struct Sniffer {
[INFO] [stderr]    |            ------- field in this struct
[INFO] [stderr] 24 |     interface: String,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/main.rs:143:5
[INFO] [stderr]     |
[INFO] [stderr] 143 |     sniffer_handle.join();
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 143 |     let _ = sniffer_handle.join();
[INFO] [stderr]     |     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: variable `DEVICE_COLUMN_WIDTH` should have a snake case name
[INFO] [stderr]    --> src/main.rs:208:13
[INFO] [stderr]     |
[INFO] [stderr] 208 |     let mut DEVICE_COLUMN_WIDTH: usize = 20;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `device_column_width`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/reporter.rs:225:9
[INFO] [stderr]     |
[INFO] [stderr] 225 | /         self.write_data_throughput_report(
[INFO] [stderr] 226 | |             outgoing_data_throughput_params,
[INFO] [stderr] 227 | |             incoming_data_throughput_params,
[INFO] [stderr] 228 | |         )
[INFO] [stderr] 229 | |         .map_err(|e| *data_throughput_graph_error = e);
[INFO] [stderr]     | |______________________________________________________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 225 |         let _ = self.write_data_throughput_report(
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/reporter.rs:231:9
[INFO] [stderr]     |
[INFO] [stderr] 231 | /         self.write_packet_throughput_report(
[INFO] [stderr] 232 | |             outgoing_packet_throughput_params,
[INFO] [stderr] 233 | |             incoming_packet_throughput_params,
[INFO] [stderr] 234 | |         )
[INFO] [stderr] 235 | |         .map_err(|e| *data_throughput_graph_error = e);
[INFO] [stderr]     | |______________________________________________________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 231 |         let _ = self.write_packet_throughput_report(
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stderr]    --> src/reporter.rs:326:9
[INFO] [stderr]     |
[INFO] [stderr] 326 |         drop(out); // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stderr]     |         ^^^^^---^
[INFO] [stderr]     |              |
[INFO] [stderr]     |              argument has type `&mut reporter::OutgoingDataThroughputParams<'_>`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the expression or result
[INFO] [stderr]     |
[INFO] [stderr] 326 -         drop(out); // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stderr] 326 +         let _ = out; // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stderr]    --> src/reporter.rs:481:9
[INFO] [stderr]     |
[INFO] [stderr] 481 |         drop(out); // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stderr]     |         ^^^^^---^
[INFO] [stderr]     |              |
[INFO] [stderr]     |              argument has type `&mut reporter::OutgoingPacketThroughputParams<'_>`
[INFO] [stderr]     |
[INFO] [stderr] help: use `let _ = ...` to ignore the expression or result
[INFO] [stderr]     |
[INFO] [stderr] 481 -         drop(out); // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stderr] 481 +         let _ = out; // make sure the outgoing variable is not mistakenly used anymore
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/reporter.rs:553:13
[INFO] [stderr]     |
[INFO] [stderr] 553 | /             writer.write_all(
[INFO] [stderr] 554 | |                 format!(
[INFO] [stderr] 555 | |                     "{},{},{},{},{},{},{},{},{},{},{},{}",
[INFO] [stderr] 556 | |                     "src_ip",
[INFO] [stderr] ...   |
[INFO] [stderr] 569 | |                 .as_bytes(),
[INFO] [stderr] 570 | |             );
[INFO] [stderr]     | |_____________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 553 |             let _ = writer.write_all(
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/reporter.rs:574:13
[INFO] [stderr]     |
[INFO] [stderr] 574 | /             writer.write_all(
[INFO] [stderr] 575 | |                 format!(
[INFO] [stderr] 576 | |                     "\n{},{},{},{},{},{},{},{},{},{},{},{}",
[INFO] [stderr] 577 | |                     link.src_ip,
[INFO] [stderr] ...   |
[INFO] [stderr] 590 | |                 .as_bytes(),
[INFO] [stderr] 591 | |             );
[INFO] [stderr]     | |_____________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 574 |             let _ = writer.write_all(
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/sniffer.rs:153:13
[INFO] [stderr]     |
[INFO] [stderr] 153 |             writeln!(writer, "{}\n{}{}\r", hyphen, header, hyphen);
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 153 |             let _ = writeln!(writer, "{}\n{}{}\r", hyphen, header, hyphen);
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/sniffer.rs:210:25
[INFO] [stderr]     |
[INFO] [stderr] 210 |                         writer.flush();
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 210 |                         let _ = writer.flush();
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/sniffer.rs:212:21
[INFO] [stderr]     |
[INFO] [stderr] 212 | / ...   writeln!(
[INFO] [stderr] 213 | | ...       writer,
[INFO] [stderr] 214 | | ...       "\r\n\r\nCaptured Packets: {}\r\nSkipped Packets: {}\r\nBytes Transferred: {}\r\nBytes Received: {}\r\nPackets Sent: {}...
[INFO] [stderr] 215 | | ...       captured_packets,
[INFO] [stderr] ...   |
[INFO] [stderr] 222 | | ...       dropped_packets
[INFO] [stderr] 223 | | ...   );
[INFO] [stderr]     | |_______^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 212 |                     let _ = writeln!(
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: variable `netHeaders` should have a snake case name
[INFO] [stderr]    --> src/sniffer.rs:254:30
[INFO] [stderr]     |
[INFO] [stderr] 254 |                         Some(netHeaders) => {
[INFO] [stderr]     |                              ^^^^^^^^^^ help: convert the identifier to snake case: `net_headers`
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/sniffer.rs:467:33
[INFO] [stderr]     |
[INFO] [stderr] 467 | ...                   writeln!(writer, "{}\r", &sniffed_packet);
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 467 |                                 let _ = writeln!(writer, "{}\r", &sniffed_packet);
[INFO] [stderr]     |                                 +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `sniph` (bin "sniph" test) generated 38 warnings (run `cargo fix --bin "sniph" -p sniph --tests` to apply 15 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.18s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/sniph-9fc6a99ce82687c5)
[INFO] [stdout] 
[INFO] [stdout] running 78 tests
[INFO] [stdout] test packet_filtering::tests::test_all_fields_combined ... ok
[INFO] [stdout] test packet_filtering::tests::test_case_insensitive_transport_udp ... ok
[INFO] [stdout] test packet_filtering::tests::test_case_insensitive_transport_tcp ... ok
[INFO] [stdout] test packet_filtering::tests::test_conflicting_transport_filters ... ok
[INFO] [stdout] test packet_filtering::tests::test_full_packet_filtering_tcp ... ok
[INFO] [stdout] test packet_filtering::tests::test_broadcast_ip ... ok
[INFO] [stdout] test packet_filtering::tests::test_incompatible_operator_with_ip_field ... ok
[INFO] [stdout] test packet_filtering::tests::test_incompatible_operator_with_transport_field ... ok
[INFO] [stdout] test packet_filtering::tests::test_full_packet_filtering_udp_negation ... ok
[INFO] [stdout] test packet_filtering::tests::test_empty_value ... ok
[INFO] [stdout] test packet_filtering::tests::test_exact_port_boundaries ... ok
[INFO] [stdout] test packet_filtering::tests::test_incompatible_equality_operator_with_port ... ok
[INFO] [stdout] test packet_filtering::tests::test_invalid_filter_format_missing_operator ... ok
[INFO] [stdout] test packet_filtering::tests::test_invalid_filter_format_too_many_parts ... ok
[INFO] [stdout] test packet_filtering::tests::test_ip_case_sensitivity ... ok
[INFO] [stdout] test packet_filtering::tests::test_invalid_port_number ... ok
[INFO] [stdout] test packet_filtering::tests::test_localhost_ip ... ok
[INFO] [stdout] test packet_filtering::tests::test_ipv6_address ... ok
[INFO] [stdout] test packet_filtering::tests::test_maximum_port_value ... ok
[INFO] [stdout] test packet_filtering::tests::test_max_port_too_high ... ok
[INFO] [stdout] test packet_filtering::tests::test_last_filter_wins ... ok
[INFO] [stdout] test packet_filtering::tests::test_mixed_case_transport ... ok
[INFO] [stdout] test packet_filtering::tests::test_invalid_filter_format_empty ... ok
[INFO] [stdout] test packet_filtering::tests::test_negative_port_comparison ... ok
[INFO] [stdout] test packet_filtering::tests::test_multiple_same_field_filters ... ok
[INFO] [stdout] test packet_filtering::tests::test_min_port_too_low ... ok
[INFO] [stdout] test packet_filtering::tests::test_port_boundary_values ... ok
[INFO] [stdout] test packet_filtering::tests::test_port_decrement_underflow_edge_case ... ok
[INFO] [stdout] test packet_filtering::tests::test_port_filtering_edge_case_minimum ... ok
[INFO] [stdout] test packet_filtering::tests::test_port_increment_decrement_edge_case ... ok
[INFO] [stdout] test packet_filtering::tests::test_port_overflow_edge_case ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_ips_both_match_is ... ok
[INFO] [stdout] test packet_filtering::tests::test_port_underflow_edge_case ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_ips_both_match_not ... ok
[INFO] [stdout] test packet_filtering::tests::test_port_number_too_large ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_ips_empty_strings ... ok
[INFO] [stdout] test packet_filtering::tests::test_port_filtering_edge_case_wrap_around ... ok
[INFO] [stdout] test packet_filtering::tests::test_private_network_ranges ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_ips_localhost ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_ips_mixed_is_not ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_ports_boundary_values ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_ips_only_dst_ip ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_ports_default_range ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_ips_only_src_ip ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_ips_ipv6 ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_ports_single_port ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_transport_no_filter ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_transport_tcp_match ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_ports_outside_range ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_transport_tcp_not_match ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_transport_udp_match ... ok
[INFO] [stdout] test packet_filtering::tests::test_unsupported_operator ... ok
[INFO] [stdout] test packet_filtering::tests::test_unsupported_transport ... ok
[INFO] [stdout] test packet_filtering::tests::test_valid_complex_filter ... ok
[INFO] [stdout] test packet_filtering::tests::test_valid_single_src_ip_filter ... ok
[INFO] [stdout] test packet_filtering::tests::test_valid_dst_port_range ... ok
[INFO] [stdout] test packet_filtering::tests::test_valid_src_port_range ... ok
[INFO] [stdout] test packet_filtering::tests::test_valid_tcp_transport_filter ... ok
[INFO] [stdout] test packet_filtering::tests::test_unsupported_field ... ok
[INFO] [stdout] test packet_filtering::tests::test_valid_single_dst_ip_filter ... ok
[INFO] [stdout] test packet_filtering::tests::test_zero_port_value ... ok
[INFO] [stdout] test packet_filtering::tests::test_valid_udp_transport_filter ... ok
[INFO] [stdout] test packet_filtering::tests::test_value_length_too_long ... ok
[INFO] [stdout] test reporter::tests::test_new_reporter_creates_directory_structure ... ok
[INFO] [stdout] test reporter::tests::test_new_reporter_invalid_odd_interval ... ok
[INFO] [stdout] test reporter::tests::test_new_reporter_no_interval ... ok
[INFO] [stdout] test reporter::tests::test_new_reporter_valid_interval ... ok
[INFO] [stdout] test reporter::tests::test_write_csv_output ... ok
[INFO] [stdout] test reporter::tests::test_write_csv_output_header_only_once ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_ports_within_range ... ok
[INFO] [stdout] test sniffer::tests::test_is_multicast_address ... ok
[INFO] [stdout] test packet_filtering::tests::test_combined_port_ranges_complex ... ok
[INFO] [stdout] test packet_filtering::tests::test_should_capture_with_transport_udp_not_match ... ok
[INFO] [stdout] test reporter::tests::test_data_throughput_graph_generation ... ok
[INFO] [stdout] test reporter::tests::test_write_report_logic ... ok
[INFO] [stdout] test reporter::tests::test_packet_throughput_graph_generation ... ok
[INFO] [stdout] test reporter::tests::test_reporter_lifecycle ... ok
[INFO] [stdout] test reporter::tests::test_reporter_start_with_immediate_stop ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 78 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.55s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "2b04d69ace2bd1728dab77adc896170902d2f9317c2b726466118699bf3207f7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2b04d69ace2bd1728dab77adc896170902d2f9317c2b726466118699bf3207f7", kill_on_drop: false }`
[INFO] [stdout] 2b04d69ace2bd1728dab77adc896170902d2f9317c2b726466118699bf3207f7
