[INFO] cloning repository https://github.com/samuelorji/sniph
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/samuelorji/sniph" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsamuelorji%2Fsniph", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsamuelorji%2Fsniph'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 837716d7846de3270259edc1c92cb529008683af
[INFO] checking samuelorji/sniph/837716d7846de3270259edc1c92cb529008683af against 22950ab9e29e11620a10905f027f141ea126966e for pr-160581
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsamuelorji%2Fsniph" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/samuelorji/sniph
[INFO] finished tweaking git repo https://github.com/samuelorji/sniph
[INFO] tweaked toml for git repo https://github.com/samuelorji/sniph written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/samuelorji/sniph on toolchain 22950ab9e29e11620a10905f027f141ea126966e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+22950ab9e29e11620a10905f027f141ea126966e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/samuelorji/sniph 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" "+22950ab9e29e11620a10905f027f141ea126966e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: unused manifest key: package.author
[INFO] [stderr] warning: `sniph` (manifest) generated 1 warning
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded font-kit v0.14.3
[INFO] [stderr]   Downloaded pathfinder_simd v0.5.5
[INFO] [stderr]   Downloaded yeslogic-fontconfig-sys v6.0.0
[INFO] [stderr]   Downloaded prettify_ip v0.1.2
[INFO] [stderr]   Downloaded plotters-bitmap v0.3.7
[INFO] [stderr]   Downloaded float-ord v0.3.2
[INFO] [stderr]   Downloaded dwrote v0.11.4
[INFO] [stderr]   Downloaded pcap v2.3.0
[INFO] [stderr]   Downloaded indexmap v2.11.3
[INFO] [stderr]   Downloaded etherparse v0.19.0
[INFO] [stderr]   Downloaded freetype-sys v0.20.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 2a70826fedc0f11754e9b8710978b282e086fc4217da6cc4538e0aa58d669b48
[INFO] running `Command { std: "docker" "start" "2a70826fedc0f11754e9b8710978b282e086fc4217da6cc4538e0aa58d669b48", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2a70826fedc0f11754e9b8710978b282e086fc4217da6cc4538e0aa58d669b48", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2a70826fedc0f11754e9b8710978b282e086fc4217da6cc4538e0aa58d669b48" "/opt/rustwide/cargo-home/bin/cargo" "+22950ab9e29e11620a10905f027f141ea126966e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2a70826fedc0f11754e9b8710978b282e086fc4217da6cc4538e0aa58d669b48", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2a70826fedc0f11754e9b8710978b282e086fc4217da6cc4538e0aa58d669b48" "/opt/rustwide/cargo-home/bin/cargo" "+22950ab9e29e11620a10905f027f141ea126966e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: unused manifest key: package.author
[INFO] [stderr] warning: `sniph` (manifest) generated 1 warning
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]     Checking cfg-if v1.0.3
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling find-msvc-tools v0.1.1
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]     Checking log v0.4.28
[INFO] [stderr]    Compiling regex-syntax v0.8.6
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]    Compiling yeslogic-fontconfig-sys v6.0.0
[INFO] [stderr]     Checking bitflags v2.9.4
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling pathfinder_simd v0.5.5
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling convert_case v0.7.1
[INFO] [stderr]     Checking crc32fast v1.5.0
[INFO] [stderr]     Checking libloading v0.8.8
[INFO] [stderr]    Compiling font-kit v0.14.3
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]     Checking plotters-backend v0.3.7
[INFO] [stderr]    Compiling cc v1.2.36
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking anstyle-query v1.1.4
[INFO] [stderr]     Checking bytemuck v1.23.2
[INFO] [stderr]     Checking weezl v0.1.10
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]     Checking anstream v0.6.20
[INFO] [stderr]     Checking iana-time-zone v0.1.63
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling litrs v0.4.2
[INFO] [stderr]     Checking clap_lex v0.7.5
[INFO] [stderr]     Checking float-ord v0.3.2
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking plotters-svg v0.3.7
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking clap_builder v4.5.47
[INFO] [stderr]     Checking ttf-parser v0.20.0
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking etherparse v0.19.0
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking pathfinder_geometry v0.5.1
[INFO] [stderr]     Checking gif v0.12.0
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]    Compiling document-features v0.2.11
[INFO] [stderr]     Checking prettify_ip v0.1.2
[INFO] [stderr]     Checking indexmap v2.11.3
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking errno v0.2.8
[INFO] [stderr]    Compiling freetype-sys v0.20.1
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking signal-hook-mio v0.2.4
[INFO] [stderr]    Compiling regex-automata v0.4.10
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]     Checking plotters-bitmap v0.3.7
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]    Compiling clap_derive v4.5.47
[INFO] [stderr]     Checking derive_more v2.0.1
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]    Compiling regex v1.11.2
[INFO] [stderr]    Compiling pcap v2.3.0
[INFO] [stderr]     Checking clap v4.5.47
[INFO] [stderr]     Checking 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: 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]     |                              ^^^^^ this value is reassigned later and never used
[INFO] [stdout] 114 |         loop {
[INFO] [stdout] 115 |             sleep_over = false;
[INFO] [stdout]     |             ------------------ `sleep_over` is overwritten here before the previous value is read
[INFO] [stdout]     |
[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]     |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 437 | /                             application_protocol =
[INFO] [stdout] 438 | |                                 Self::parse_application_protocol_from_source_and_dest_port(
[INFO] [stdout] 439 | |                                     src_port, dest_port,
[INFO] [stdout] 440 | |                                 );
[INFO] [stdout]     | |_________________________________- `application_protocol` is overwritten here before the previous value is read
[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]     |                              ^^^^^ this value is reassigned later and never used
[INFO] [stdout] 114 |         loop {
[INFO] [stdout] 115 |             sleep_over = false;
[INFO] [stdout]     |             ------------------ `sleep_over` is overwritten here before the previous value is read
[INFO] [stdout]     |
[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: 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] [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]     |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 437 | /                             application_protocol =
[INFO] [stdout] 438 | |                                 Self::parse_application_protocol_from_source_and_dest_port(
[INFO] [stdout] 439 | |                                     src_port, dest_port,
[INFO] [stdout] 440 | |                                 );
[INFO] [stdout]     | |_________________________________- `application_protocol` is overwritten here before the previous value is 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 `dev` profile [unoptimized + debuginfo] target(s) in 19.99s
[INFO] running `Command { std: "docker" "inspect" "2a70826fedc0f11754e9b8710978b282e086fc4217da6cc4538e0aa58d669b48", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2a70826fedc0f11754e9b8710978b282e086fc4217da6cc4538e0aa58d669b48", kill_on_drop: false }`
[INFO] [stdout] 2a70826fedc0f11754e9b8710978b282e086fc4217da6cc4538e0aa58d669b48
