[INFO] cloning repository https://github.com/claudiutraistaru/NFRouter
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/claudiutraistaru/NFRouter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fclaudiutraistaru%2FNFRouter", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fclaudiutraistaru%2FNFRouter'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d99bbfda587c27caa0999c6caab8f7e247b25582
[INFO] checking claudiutraistaru/NFRouter against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fclaudiutraistaru%2FNFRouter" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/claudiutraistaru/NFRouter
[INFO] finished tweaking git repo https://github.com/claudiutraistaru/NFRouter
[INFO] tweaked toml for git repo https://github.com/claudiutraistaru/NFRouter written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/claudiutraistaru/NFRouter on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/claudiutraistaru/NFRouter 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" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rustyline v13.0.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] af2e092d0e611c19f79b5da495a6b7d8bfdeead08d6a8ec8244ef03768d03489
[INFO] running `Command { std: "docker" "start" "af2e092d0e611c19f79b5da495a6b7d8bfdeead08d6a8ec8244ef03768d03489", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "af2e092d0e611c19f79b5da495a6b7d8bfdeead08d6a8ec8244ef03768d03489", 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" "af2e092d0e611c19f79b5da495a6b7d8bfdeead08d6a8ec8244ef03768d03489" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "af2e092d0e611c19f79b5da495a6b7d8bfdeead08d6a8ec8244ef03768d03489", 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" "af2e092d0e611c19f79b5da495a6b7d8bfdeead08d6a8ec8244ef03768d03489" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.155
[INFO] [stderr]     Checking bitflags v2.6.0
[INFO] [stderr]     Checking unicode-width v0.1.13
[INFO] [stderr]    Compiling serde v1.0.205
[INFO] [stderr]    Compiling unicode-segmentation v1.11.0
[INFO] [stderr]     Checking smallvec v1.13.2
[INFO] [stderr]     Checking linux-raw-sys v0.4.14
[INFO] [stderr]    Compiling rustix v0.38.34
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]    Compiling serde_json v1.0.122
[INFO] [stderr]    Compiling syn v2.0.72
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking regex-automata v0.4.8
[INFO] [stderr]     Checking home v0.5.9
[INFO] [stderr]     Checking textwrap v0.11.0
[INFO] [stderr]     Checking nibble_vec v0.1.0
[INFO] [stderr]     Checking radix_trie v0.2.1
[INFO] [stderr]    Compiling heck v0.3.3
[INFO] [stderr]     Checking regex v1.11.0
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking nix v0.27.1
[INFO] [stderr]     Checking clap v2.34.0
[INFO] [stderr]    Compiling serde_derive v1.0.205
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking fd-lock v4.0.2
[INFO] [stderr]    Compiling structopt-derive v0.4.18
[INFO] [stderr]     Checking ctrlc v3.4.5
[INFO] [stderr]     Checking rustyline v13.0.0
[INFO] [stderr]     Checking structopt v0.3.26
[INFO] [stderr]     Checking ipnetwork v0.20.0
[INFO] [stderr]     Checking nfrouter v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `commands::set::interface::set_interface_ip`
[INFO] [stdout]   --> src/main.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use commands::set::interface::set_interface_ip;
[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 imports: `unset_interface_ip`, `unset_interface_mtu`, and `unset_interface_speed`
[INFO] [stdout]   --> src/main.rs:30:34
[INFO] [stdout]    |
[INFO] [stdout] 30 | use commands::unset::interface::{unset_interface_ip, unset_interface_mtu, unset_interface_speed};
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DefaultEditor`
[INFO] [stdout]   --> src/main.rs:32:25
[INFO] [stdout]    |
[INFO] [stdout] 32 | use rustyline::{Config, DefaultEditor, Editor};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::RunningConfig`
[INFO] [stdout]   --> src/commands/exec/command.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::config::RunningConfig;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `libc`
[INFO] [stdout]   --> src/commands/exec/command.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use libc;
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]   --> src/commands/exec/command.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use serde_json::json;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> src/commands/exec/command.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]   --> src/commands/help.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::collections::HashSet;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::DETACHED_FLAG`
[INFO] [stdout]  --> src/commands/set/firewall.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::DETACHED_FLAG;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Output`
[INFO] [stdout]  --> src/commands/set/firewall.rs:5:29
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::process::{Command, Output};
[INFO] [stdout]   |                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/commands/set/firewall.rs:802:9
[INFO] [stdout]     |
[INFO] [stdout] 802 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/set/hostname.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/commands/set/interface.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/set/interface.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/commands/set/interface.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `commands::show::currentconfig`
[INFO] [stdout]   --> src/commands/set/nat.rs:19:13
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::{commands::show::currentconfig, config::RunningConfig};
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Value`
[INFO] [stdout]   --> src/commands/set/nat.rs:21:24
[INFO] [stdout]    |
[INFO] [stdout] 21 | use serde_json::{json, Value};
[INFO] [stdout]    |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `libc`
[INFO] [stdout]   --> src/commands/set/protocol.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use libc;
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Value`
[INFO] [stdout]   --> src/commands/set/route.rs:20:24
[INFO] [stdout]    |
[INFO] [stdout] 20 | use serde_json::{json, Value};
[INFO] [stdout]    |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/set/route.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/commands/set/route.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Value`
[INFO] [stdout]  --> src/commands/set/service.rs:2:24
[INFO] [stdout]   |
[INFO] [stdout] 2 | use serde_json::{json, Value};
[INFO] [stdout]   |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/commands/set/system.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/set/system.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/commands/set/system.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `set_nat_masquerade`
[INFO] [stdout]   --> src/commands/set/mod.rs:37:26
[INFO] [stdout]    |
[INFO] [stdout] 37 | use nat::{parse_set_nat, set_nat_masquerade};
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `protocol::*`
[INFO] [stdout]   --> src/commands/set/mod.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | use protocol::*;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/set/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Command`
[INFO] [stdout]   --> src/commands/show/currentconfig.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::process::Command;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::RunningConfig`
[INFO] [stdout]   --> src/commands/show/hostname.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::config::RunningConfig;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/show/interface.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::RunningConfig`
[INFO] [stdout]   --> src/commands/show/nat.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::config::RunningConfig;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `self`
[INFO] [stdout]   --> src/commands/show/nat.rs:20:15
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::fs::{self, File};
[INFO] [stdout]    |               ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufRead` and `self`
[INFO] [stdout]   --> src/commands/show/nat.rs:21:15
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::io::{self, BufRead};
[INFO] [stdout]    |               ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/show/nat.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> src/commands/show/nat.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::RunningConfig`
[INFO] [stdout]  --> src/commands/show/protocol.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::config::RunningConfig;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]  --> src/commands/show/protocol.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use serde_json::Value;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]   --> src/commands/unset/firewall.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use serde_json::json;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/commands/unset/firewall.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/unset/firewall.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/commands/unset/firewall.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]   --> src/commands/unset/interface.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use serde_json::json;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/commands/unset/interface.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/unset/interface.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/commands/unset/interface.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]   --> src/commands/unset/route.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use serde_json::json;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> src/commands/unset/system.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `unset_interface_speed`
[INFO] [stdout]   --> src/commands/unset/mod.rs:27:37
[INFO] [stdout]    |
[INFO] [stdout] 27 | use interface::{unset_interface_ip, unset_interface_speed};
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/unset/mod.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/config.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Command`
[INFO] [stdout]   --> src/config.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::process::Command;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `build_help_message_vec` and `build_help_message`
[INFO] [stdout]   --> src/main.rs:39:22
[INFO] [stdout]    |
[INFO] [stdout] 39 | use commands::help::{build_help_message, build_help_message_vec, help_for_context};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Value`
[INFO] [stdout]   --> src/main.rs:43:24
[INFO] [stdout]    |
[INFO] [stdout] 43 | use serde_json::{json, Value};
[INFO] [stdout]    |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:209:5
[INFO] [stdout]     |
[INFO] [stdout] 209 |     /// A list of help lines to be filtered.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 210 |     let help_lines = collect_help_lines();
[INFO] [stdout]     |     -------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/commands/set/firewall.rs:192:25
[INFO] [stdout]     |
[INFO] [stdout] 187 | /                         return Err(format!(
[INFO] [stdout] 188 | |                             "Failed to add rule to iptables: {}",
[INFO] [stdout] 189 | |                             String::from_utf8_lossy(&output.stderr)
[INFO] [stdout] 190 | |                         ));
[INFO] [stdout]     | |__________________________- any code following this expression is unreachable
[INFO] [stdout] 191 |
[INFO] [stdout] 192 | /                         println!(
[INFO] [stdout] 193 | |                             "Rule applied successfully to iptables for interface: {} ({})",
[INFO] [stdout] 194 | |                             iface_name, direction
[INFO] [stdout] 195 | |                         );
[INFO] [stdout]     | |_________________________^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `commands::set::interface::set_interface_ip`
[INFO] [stdout]   --> src/main.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use commands::set::interface::set_interface_ip;
[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 imports: `unset_interface_ip`, `unset_interface_mtu`, and `unset_interface_speed`
[INFO] [stdout]   --> src/main.rs:30:34
[INFO] [stdout]    |
[INFO] [stdout] 30 | use commands::unset::interface::{unset_interface_ip, unset_interface_mtu, unset_interface_speed};
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DefaultEditor`
[INFO] [stdout]   --> src/main.rs:32:25
[INFO] [stdout]    |
[INFO] [stdout] 32 | use rustyline::{Config, DefaultEditor, Editor};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::RunningConfig`
[INFO] [stdout]   --> src/commands/exec/command.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::config::RunningConfig;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `libc`
[INFO] [stdout]   --> src/commands/exec/command.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use libc;
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]   --> src/commands/exec/command.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use serde_json::json;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> src/commands/exec/command.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]   --> src/commands/help.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::collections::HashSet;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::DETACHED_FLAG`
[INFO] [stdout]  --> src/commands/set/firewall.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::DETACHED_FLAG;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Output`
[INFO] [stdout]  --> src/commands/set/firewall.rs:5:29
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::process::{Command, Output};
[INFO] [stdout]   |                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/set/hostname.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/commands/set/interface.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/set/interface.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/commands/set/interface.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `commands::show::currentconfig`
[INFO] [stdout]   --> src/commands/set/nat.rs:19:13
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::{commands::show::currentconfig, config::RunningConfig};
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `libc`
[INFO] [stdout]   --> src/commands/set/protocol.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use libc;
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: duplicated attribute
[INFO] [stdout]     --> src/commands/set/protocol.rs:1451:5
[INFO] [stdout]      |
[INFO] [stdout] 1451 |     #[test]
[INFO] [stdout]      |     ^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(duplicate_macro_attributes)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Value`
[INFO] [stdout]   --> src/commands/set/route.rs:20:24
[INFO] [stdout]    |
[INFO] [stdout] 20 | use serde_json::{json, Value};
[INFO] [stdout]    |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/set/route.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Command`
[INFO] [stdout]   --> src/commands/set/route.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::process::Command;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/commands/set/route.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Value`
[INFO] [stdout]  --> src/commands/set/service.rs:2:24
[INFO] [stdout]   |
[INFO] [stdout] 2 | use serde_json::{json, Value};
[INFO] [stdout]   |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/commands/set/system.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/set/system.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/commands/set/system.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `set_nat_masquerade`
[INFO] [stdout]   --> src/commands/set/mod.rs:37:26
[INFO] [stdout]    |
[INFO] [stdout] 37 | use nat::{parse_set_nat, set_nat_masquerade};
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/set/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Command`
[INFO] [stdout]   --> src/commands/show/currentconfig.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::process::Command;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::RunningConfig`
[INFO] [stdout]   --> src/commands/show/hostname.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::config::RunningConfig;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/show/interface.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::RunningConfig`
[INFO] [stdout]   --> src/commands/show/nat.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::config::RunningConfig;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `self`
[INFO] [stdout]   --> src/commands/show/nat.rs:20:15
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::fs::{self, File};
[INFO] [stdout]    |               ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufRead` and `self`
[INFO] [stdout]   --> src/commands/show/nat.rs:21:15
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::io::{self, BufRead};
[INFO] [stdout]    |               ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/show/nat.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> src/commands/show/nat.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::RunningConfig`
[INFO] [stdout]  --> src/commands/show/protocol.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::config::RunningConfig;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]  --> src/commands/show/protocol.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use serde_json::Value;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]   --> src/commands/unset/firewall.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use serde_json::json;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/commands/unset/firewall.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/unset/firewall.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/commands/unset/firewall.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/commands/unset/interface.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/unset/interface.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/commands/unset/interface.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]   --> src/commands/unset/route.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use serde_json::json;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> src/commands/unset/system.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `unset_interface_speed`
[INFO] [stdout]   --> src/commands/unset/mod.rs:27:37
[INFO] [stdout]    |
[INFO] [stdout] 27 | use interface::{unset_interface_ip, unset_interface_speed};
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]   --> src/commands/unset/mod.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::net::IpAddr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/config.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Command`
[INFO] [stdout]   --> src/config.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::process::Command;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `build_help_message_vec` and `build_help_message`
[INFO] [stdout]   --> src/main.rs:39:22
[INFO] [stdout]    |
[INFO] [stdout] 39 | use commands::help::{build_help_message, build_help_message_vec, help_for_context};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Value`
[INFO] [stdout]   --> src/main.rs:43:24
[INFO] [stdout]    |
[INFO] [stdout] 43 | use serde_json::{json, Value};
[INFO] [stdout]    |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:209:5
[INFO] [stdout]     |
[INFO] [stdout] 209 |     /// A list of help lines to be filtered.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 210 |     let help_lines = collect_help_lines();
[INFO] [stdout]     |     -------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/commands/set/firewall.rs:192:25
[INFO] [stdout]     |
[INFO] [stdout] 187 | /                         return Err(format!(
[INFO] [stdout] 188 | |                             "Failed to add rule to iptables: {}",
[INFO] [stdout] 189 | |                             String::from_utf8_lossy(&output.stderr)
[INFO] [stdout] 190 | |                         ));
[INFO] [stdout]     | |__________________________- any code following this expression is unreachable
[INFO] [stdout] 191 |
[INFO] [stdout] 192 | /                         println!(
[INFO] [stdout] 193 | |                             "Rule applied successfully to iptables for interface: {} ({})",
[INFO] [stdout] 194 | |                             iface_name, direction
[INFO] [stdout] 195 | |                         );
[INFO] [stdout]     | |_________________________^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target`
[INFO] [stdout]   --> src/commands/exec/command.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 |     let target = args[0];
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `running_clone`
[INFO] [stdout]   --> src/commands/exec/command.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |     let running_clone = Arc::clone(&running);
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_running_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target`
[INFO] [stdout]    --> src/commands/exec/command.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |     let target = args[0];
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `running_clone`
[INFO] [stdout]    --> src/commands/exec/command.rs:119:9
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let running_clone = Arc::clone(&running);
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_running_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/commands/help.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut help_items = Vec::new();
[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: unused variable: `default_policy`
[INFO] [stdout]    --> src/commands/set/firewall.rs:243:9
[INFO] [stdout]     |
[INFO] [stdout] 243 |     let default_policy = firewall_rules.get("default-policy").and_then(|v| v.as_str())
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_default_policy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output`
[INFO] [stdout]    --> src/commands/set/firewall.rs:558:21
[INFO] [stdout]     |
[INFO] [stdout] 558 |                 let output = Command::new("iptables")
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/commands/set/firewall.rs:691:13
[INFO] [stdout]     |
[INFO] [stdout] 691 |         let pos = match position {
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `option`
[INFO] [stdout]   --> src/commands/set/system.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     option: &str,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_option`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `interface` is assigned to, but never used
[INFO] [stdout]    --> src/commands/set/mod.rs:252:25
[INFO] [stdout]     |
[INFO] [stdout] 252 |                     let mut interface: Option<&str> = None;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_interface` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `interface` is never read
[INFO] [stdout]    --> src/commands/set/mod.rs:282:33
[INFO] [stdout]     |
[INFO] [stdout] 282 | ...                   interface = Some(parts[i + 1]);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parts`
[INFO] [stdout]   --> src/commands/show/hostname.rs:24:28
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn parse_show_hostname(parts: &[&str]) -> Result<String, String> {
[INFO] [stdout]    |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_parts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parts`
[INFO] [stdout]   --> src/commands/show/routes.rs:21:26
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn parse_show_routes(parts: &[&str]) -> Result<String, String> {
[INFO] [stdout]    |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_parts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/config.rs:33:13
[INFO] [stdout]    |
[INFO] [stdout] 33 |         let mut running_config = if let Ok(config) = RunningConfig::load_from_file(config_path) {
[INFO] [stdout]    |             ----^^^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `completer`
[INFO] [stdout]   --> src/main.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 |     let completer = CommandCompleter::new(help_lines.clone());
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_completer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `completer`
[INFO] [stdout]   --> src/main.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |     let completer = CommandCompleter::new(help_lines.clone());
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_completer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_help_message` is never used
[INFO] [stdout]   --> src/commands/help.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn build_help_message() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_help_message_vec` is never used
[INFO] [stdout]   --> src/commands/help.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn build_help_message_vec() -> Vec<(&'static str, &'static str)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERSION` is never used
[INFO] [stdout]   --> src/commands/set/mod.rs:45:7
[INFO] [stdout]    |
[INFO] [stdout] 45 | const VERSION: &str = env!("CARGO_PKG_VERSION");
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_ruleset_assigned_to_interface` is never used
[INFO] [stdout]    --> src/commands/set/firewall.rs:425:4
[INFO] [stdout]     |
[INFO] [stdout] 425 | fn is_ruleset_assigned_to_interface(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `does_chain_exist` is never used
[INFO] [stdout]    --> src/commands/set/firewall.rs:463:4
[INFO] [stdout]     |
[INFO] [stdout] 463 | fn does_chain_exist(chain: &str) -> Result<bool, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_existing_rules` is never used
[INFO] [stdout]    --> src/commands/set/firewall.rs:491:4
[INFO] [stdout]     |
[INFO] [stdout] 491 | fn get_existing_rules(chain: &str) -> Result<Vec<String>, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_rip_default_information_originate` is never used
[INFO] [stdout]    --> src/commands/set/protocol.rs:399:8
[INFO] [stdout]     |
[INFO] [stdout] 399 | pub fn set_rip_default_information_originate(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_rip_distance_default` is never used
[INFO] [stdout]    --> src/commands/set/protocol.rs:626:8
[INFO] [stdout]     |
[INFO] [stdout] 626 | pub fn set_rip_distance_default(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_rip_distance_with_prefix` is never used
[INFO] [stdout]    --> src/commands/set/protocol.rs:669:8
[INFO] [stdout]     |
[INFO] [stdout] 669 | pub fn set_rip_distance_with_prefix(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `help_command` is never used
[INFO] [stdout]   --> src/commands/show/protocol.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn help_command() -> Vec<(&'static str, &'static str)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unset_interface_speed` is never used
[INFO] [stdout]   --> src/commands/unset/interface.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn unset_interface_speed(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unset_interface_mtu` is never used
[INFO] [stdout]    --> src/commands/unset/interface.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn unset_interface_mtu(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unset_interface_duplex` is never used
[INFO] [stdout]    --> src/commands/unset/interface.rs:160:8
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub fn unset_interface_duplex(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unset_interface_vlan` is never used
[INFO] [stdout]    --> src/commands/unset/interface.rs:207:8
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub fn unset_interface_vlan(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unset_interface_zone` is never used
[INFO] [stdout]    --> src/commands/unset/interface.rs:244:8
[INFO] [stdout]     |
[INFO] [stdout] 244 | pub fn unset_interface_zone(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unset_interface_description` is never used
[INFO] [stdout]    --> src/commands/unset/interface.rs:262:8
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub fn unset_interface_description(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unset_interface_adjustmss` is never used
[INFO] [stdout]    --> src/commands/unset/interface.rs:279:8
[INFO] [stdout]     |
[INFO] [stdout] 279 | pub fn unset_interface_adjustmss(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unset_interface_enable_proxyarp` is never used
[INFO] [stdout]    --> src/commands/unset/interface.rs:303:8
[INFO] [stdout]     |
[INFO] [stdout] 303 | pub fn unset_interface_enable_proxyarp(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unset_interface_firewall` is never used
[INFO] [stdout]    --> src/commands/unset/interface.rs:345:8
[INFO] [stdout]     |
[INFO] [stdout] 345 | pub fn unset_interface_firewall(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unset_nat_masquerade` is never used
[INFO] [stdout]   --> src/commands/unset/nat.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn unset_nat_masquerade(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `help_command_unset` is never used
[INFO] [stdout]   --> src/commands/unset/nat.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn help_command_unset() -> Vec<(&'static str, &'static str)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `completer` is never read
[INFO] [stdout]    --> src/completer.rs:118:5
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct MyHelper {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] 118 |     completer: CommandCompleter,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target`
[INFO] [stdout]   --> src/commands/exec/command.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 |     let target = args[0];
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `running_clone`
[INFO] [stdout]   --> src/commands/exec/command.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |     let running_clone = Arc::clone(&running);
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_running_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `handle_multi_key_command`, `set_value_at_node`, and `get_or_create_array_node` are never used
[INFO] [stdout]    --> src/config.rs:374:8
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl RunningConfig {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 374 |     fn handle_multi_key_command(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 482 |     pub fn set_value_at_node(&mut self, node_path: &[&str], value: Value) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn get_or_create_array_node(&mut self, path: &[&str]) -> &mut Value {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target`
[INFO] [stdout]    --> src/commands/exec/command.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |     let target = args[0];
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `running_clone`
[INFO] [stdout]    --> src/commands/exec/command.rs:119:9
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let running_clone = Arc::clone(&running);
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_running_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/commands/help.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut help_items = Vec::new();
[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: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:360:9
[INFO] [stdout]     |
[INFO] [stdout] 360 |         running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(distance));
[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] 360 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(distance));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:379:13
[INFO] [stdout]     |
[INFO] [stdout] 379 |             running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(distance));
[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] 379 |             let _ = running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(distance));
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 | /         running_config.add_value_to_node(
[INFO] [stdout] 405 | |             &["protocol", "rip"],
[INFO] [stdout] 406 | |             "default-information",
[INFO] [stdout] 407 | |             json!("originate"),
[INFO] [stdout] 408 | |         );
[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] 404 |         let _ = running_config.add_value_to_node(
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:424:13
[INFO] [stdout]     |
[INFO] [stdout] 424 | /             running_config.add_value_to_node(
[INFO] [stdout] 425 | |                 &["protocol", "rip"],
[INFO] [stdout] 426 | |                 "default-information",
[INFO] [stdout] 427 | |                 json!("originate"),
[INFO] [stdout] 428 | |             );
[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] 424 |             let _ = running_config.add_value_to_node(
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:505:5
[INFO] [stdout]     |
[INFO] [stdout] 505 |     running_config.add_value_to_node(&["protocol", "rip"], "authentication", auth_config);
[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] 505 |     let _ = running_config.add_value_to_node(&["protocol", "rip"], "authentication", auth_config);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/commands/set/protocol.rs:630:24
[INFO] [stdout]     |
[INFO] [stdout] 630 |     if distance < 1 || distance > 255 {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/commands/set/protocol.rs:674:24
[INFO] [stdout]     |
[INFO] [stdout] 674 |     if distance < 1 || distance > 255 {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/commands/unset/interface.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 75 |         running_config.remove_value_from_node(&["interface", &interface, "options"], "speed");
[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] 75 |         let _ = running_config.remove_value_from_node(&["interface", &interface, "options"], "speed");
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `default_policy`
[INFO] [stdout]    --> src/commands/set/firewall.rs:243:9
[INFO] [stdout]     |
[INFO] [stdout] 243 |     let default_policy = firewall_rules.get("default-policy").and_then(|v| v.as_str())
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_default_policy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output`
[INFO] [stdout]    --> src/commands/set/firewall.rs:558:21
[INFO] [stdout]     |
[INFO] [stdout] 558 |                 let output = Command::new("iptables")
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/commands/set/firewall.rs:691:13
[INFO] [stdout]     |
[INFO] [stdout] 691 |         let pos = match position {
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/commands/set/firewall.rs:835:13
[INFO] [stdout]     |
[INFO] [stdout] 835 |         let result = add_firewall_rule(
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expected_nat_config`
[INFO] [stdout]    --> src/commands/set/nat.rs:581:13
[INFO] [stdout]     |
[INFO] [stdout] 581 |         let expected_nat_config = json!({
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_nat_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `option`
[INFO] [stdout]   --> src/commands/set/system.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     option: &str,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_option`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `interface` is assigned to, but never used
[INFO] [stdout]    --> src/commands/set/mod.rs:252:25
[INFO] [stdout]     |
[INFO] [stdout] 252 |                     let mut interface: Option<&str> = None;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_interface` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `interface` is never read
[INFO] [stdout]    --> src/commands/set/mod.rs:282:33
[INFO] [stdout]     |
[INFO] [stdout] 282 | ...                   interface = Some(parts[i + 1]);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parts`
[INFO] [stdout]   --> src/commands/show/hostname.rs:24:28
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn parse_show_hostname(parts: &[&str]) -> Result<String, String> {
[INFO] [stdout]    |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_parts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parts`
[INFO] [stdout]   --> src/commands/show/routes.rs:21:26
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn parse_show_routes(parts: &[&str]) -> Result<String, String> {
[INFO] [stdout]    |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_parts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/config.rs:33:13
[INFO] [stdout]    |
[INFO] [stdout] 33 |         let mut running_config = if let Ok(config) = RunningConfig::load_from_file(config_path) {
[INFO] [stdout]    |             ----^^^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `completer`
[INFO] [stdout]   --> src/main.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 |     let completer = CommandCompleter::new(help_lines.clone());
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_completer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `completer`
[INFO] [stdout]   --> src/main.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |     let completer = CommandCompleter::new(help_lines.clone());
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_completer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_help_message` is never used
[INFO] [stdout]   --> src/commands/help.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn build_help_message() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_help_message_vec` is never used
[INFO] [stdout]   --> src/commands/help.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn build_help_message_vec() -> Vec<(&'static str, &'static str)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `does_chain_exist` is never used
[INFO] [stdout]    --> src/commands/set/firewall.rs:463:4
[INFO] [stdout]     |
[INFO] [stdout] 463 | fn does_chain_exist(chain: &str) -> Result<bool, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_existing_rules` is never used
[INFO] [stdout]    --> src/commands/set/firewall.rs:491:4
[INFO] [stdout]     |
[INFO] [stdout] 491 | fn get_existing_rules(chain: &str) -> Result<Vec<String>, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_set_nat_dnat_success` is never used
[INFO] [stdout]    --> src/commands/set/nat.rs:591:8
[INFO] [stdout]     |
[INFO] [stdout] 591 |     fn test_set_nat_dnat_success() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_add_multiple_snat_rules` is never used
[INFO] [stdout]    --> src/commands/set/nat.rs:641:8
[INFO] [stdout]     |
[INFO] [stdout] 641 |     fn test_add_multiple_snat_rules() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `help_command` is never used
[INFO] [stdout]   --> src/commands/show/protocol.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn help_command() -> Vec<(&'static str, &'static str)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unset_nat_masquerade` is never used
[INFO] [stdout]   --> src/commands/unset/nat.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn unset_nat_masquerade(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `help_command_unset` is never used
[INFO] [stdout]   --> src/commands/unset/nat.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn help_command_unset() -> Vec<(&'static str, &'static str)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `completer` is never read
[INFO] [stdout]    --> src/completer.rs:118:5
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct MyHelper {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] 118 |     completer: CommandCompleter,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `handle_multi_key_command`, `set_value_at_node`, and `get_or_create_array_node` are never used
[INFO] [stdout]    --> src/config.rs:374:8
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl RunningConfig {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 374 |     fn handle_multi_key_command(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 482 |     pub fn set_value_at_node(&mut self, node_path: &[&str], value: Value) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 575 |     pub fn get_or_create_array_node(&mut self, path: &[&str]) -> &mut Value {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:360:9
[INFO] [stdout]     |
[INFO] [stdout] 360 |         running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(distance));
[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] 360 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(distance));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:379:13
[INFO] [stdout]     |
[INFO] [stdout] 379 |             running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(distance));
[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] 379 |             let _ = running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(distance));
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 | /         running_config.add_value_to_node(
[INFO] [stdout] 405 | |             &["protocol", "rip"],
[INFO] [stdout] 406 | |             "default-information",
[INFO] [stdout] 407 | |             json!("originate"),
[INFO] [stdout] 408 | |         );
[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] 404 |         let _ = running_config.add_value_to_node(
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:424:13
[INFO] [stdout]     |
[INFO] [stdout] 424 | /             running_config.add_value_to_node(
[INFO] [stdout] 425 | |                 &["protocol", "rip"],
[INFO] [stdout] 426 | |                 "default-information",
[INFO] [stdout] 427 | |                 json!("originate"),
[INFO] [stdout] 428 | |             );
[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] 424 |             let _ = running_config.add_value_to_node(
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:505:5
[INFO] [stdout]     |
[INFO] [stdout] 505 |     running_config.add_value_to_node(&["protocol", "rip"], "authentication", auth_config);
[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] 505 |     let _ = running_config.add_value_to_node(&["protocol", "rip"], "authentication", auth_config);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/commands/set/protocol.rs:630:24
[INFO] [stdout]     |
[INFO] [stdout] 630 |     if distance < 1 || distance > 255 {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/commands/set/protocol.rs:674:24
[INFO] [stdout]     |
[INFO] [stdout] 674 |     if distance < 1 || distance > 255 {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:840:9
[INFO] [stdout]     |
[INFO] [stdout] 840 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[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] 840 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:843:9
[INFO] [stdout]     |
[INFO] [stdout] 843 |         set_rip_network(network, &mut running_config);
[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] 843 |         let _ = set_rip_network(network, &mut running_config);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:858:9
[INFO] [stdout]     |
[INFO] [stdout] 858 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[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] 858 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:861:9
[INFO] [stdout]     |
[INFO] [stdout] 861 |         set_rip_network(interface, &mut running_config);
[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] 861 |         let _ = set_rip_network(interface, &mut running_config);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:875:9
[INFO] [stdout]     |
[INFO] [stdout] 875 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[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] 875 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:902:9
[INFO] [stdout]     |
[INFO] [stdout] 902 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[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] 902 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:925:9
[INFO] [stdout]     |
[INFO] [stdout] 925 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[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] 925 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:945:9
[INFO] [stdout]     |
[INFO] [stdout] 945 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[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] 945 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/protocol.rs:965:9
[INFO] [stdout]     |
[INFO] [stdout] 965 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[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] 965 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/commands/set/protocol.rs:1080:9
[INFO] [stdout]      |
[INFO] [stdout] 1080 | /         running_config.add_value_to_node(
[INFO] [stdout] 1081 | |             &["protocol", "rip", "redistribute"],
[INFO] [stdout] 1082 | |             "static",
[INFO] [stdout] 1083 | |             json!(true),
[INFO] [stdout] 1084 | |         );
[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] 1080 |         let _ = running_config.add_value_to_node(
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/commands/set/protocol.rs:1229:9
[INFO] [stdout]      |
[INFO] [stdout] 1229 | /         running_config.add_value_to_node(
[INFO] [stdout] 1230 | |             &["protocol", "rip"],
[INFO] [stdout] 1231 | |             "default-information",
[INFO] [stdout] 1232 | |             json!("none"),
[INFO] [stdout] 1233 | |         );
[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] 1229 |         let _ = running_config.add_value_to_node(
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/commands/set/protocol.rs:1258:9
[INFO] [stdout]      |
[INFO] [stdout] 1258 |         running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(120));
[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] 1258 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(120));
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/commands/set/protocol.rs:1392:9
[INFO] [stdout]      |
[INFO] [stdout] 1392 |         running_config.add_value_to_node(&["protocol", "rip"], "send-version", json!({}));
[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] 1392 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "send-version", json!({}));
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/commands/set/protocol.rs:1415:9
[INFO] [stdout]      |
[INFO] [stdout] 1415 |         running_config.add_value_to_node(&["interface"], "eth0", json!({}));
[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] 1415 |         let _ = running_config.add_value_to_node(&["interface"], "eth0", json!({}));
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/mod.rs:399:9
[INFO] [stdout]     |
[INFO] [stdout] 399 |         set_hostname("testrouter".to_string(), &mut running_config);
[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] 399 |         let _ = set_hostname("testrouter".to_string(), &mut running_config);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/mod.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |         set_interface_ip(interface_eth0.clone(), ip_eth0.clone(), &mut running_config);
[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] 404 |         let _ = set_interface_ip(interface_eth0.clone(), ip_eth0.clone(), &mut running_config);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/mod.rs:407:9
[INFO] [stdout]     |
[INFO] [stdout] 407 |         set_interface_option(interface_eth0.clone(), options, &mut running_config);
[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] 407 |         let _ = set_interface_option(interface_eth0.clone(), options, &mut running_config);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/mod.rs:410:9
[INFO] [stdout]     |
[INFO] [stdout] 410 |         set_interface_description(&interface_eth0, description_eth0, &mut running_config);
[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] 410 |         let _ = set_interface_description(&interface_eth0, description_eth0, &mut running_config);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/mod.rs:413:9
[INFO] [stdout]     |
[INFO] [stdout] 413 | /         set_interface_zone(
[INFO] [stdout] 414 | |             interface_eth0.clone(),
[INFO] [stdout] 415 | |             zone_internal.clone(),
[INFO] [stdout] 416 | |             &mut running_config,
[INFO] [stdout] 417 | |         );
[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] 413 |         let _ = set_interface_zone(
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/mod.rs:421:9
[INFO] [stdout]     |
[INFO] [stdout] 421 |         set_interface_option(interface_eth0.clone(), options, &mut running_config);
[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] 421 |         let _ = set_interface_option(interface_eth0.clone(), options, &mut running_config);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/mod.rs:424:9
[INFO] [stdout]     |
[INFO] [stdout] 424 |         set_interface_option(interface_eth0.clone(), options, &mut running_config);
[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] 424 |         let _ = set_interface_option(interface_eth0.clone(), options, &mut running_config);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/mod.rs:427:9
[INFO] [stdout]     |
[INFO] [stdout] 427 |         set_ip_forwarding("ipforwarding", "enabled", &mut running_config);
[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] 427 |         let _ = set_ip_forwarding("ipforwarding", "enabled", &mut running_config);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/mod.rs:449:9
[INFO] [stdout]     |
[INFO] [stdout] 449 |         parse_service_dhcp_server_command(&dhcp_parts, &mut running_config);
[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] 449 |         let _ = parse_service_dhcp_server_command(&dhcp_parts, &mut running_config);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commands/set/mod.rs:450:9
[INFO] [stdout]     |
[INFO] [stdout] 450 | /         parse_service_dhcp_server_command(
[INFO] [stdout] 451 | |             &["set", "service", "dhcp-server", "enabled"],
[INFO] [stdout] 452 | |             &mut running_config,
[INFO] [stdout] 453 | |         );
[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] 450 |         let _ = parse_service_dhcp_server_command(
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/commands/unset/interface.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 75 |         running_config.remove_value_from_node(&["interface", &interface, "options"], "speed");
[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] 75 |         let _ = running_config.remove_value_from_node(&["interface", &interface, "options"], "speed");
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `structopt`
[INFO] [stderr]  --> Cargo.toml:9:1
[INFO] [stderr]   |
[INFO] [stderr] 9 | structopt = "0.3"
[INFO] [stderr]   | ^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `structopt`
[INFO] [stderr] warning: `nfrouter` (manifest) generated 1 warning
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.35s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.29.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 10`
[INFO] running `Command { std: "docker" "inspect" "af2e092d0e611c19f79b5da495a6b7d8bfdeead08d6a8ec8244ef03768d03489", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "af2e092d0e611c19f79b5da495a6b7d8bfdeead08d6a8ec8244ef03768d03489", kill_on_drop: false }`
[INFO] [stdout] af2e092d0e611c19f79b5da495a6b7d8bfdeead08d6a8ec8244ef03768d03489
