[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] testing claudiutraistaru/NFRouter against master#0d162b25edd5bf0dba9a22e83b614f1113e90474 for pr-150681
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fclaudiutraistaru%2FNFRouter" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-1-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-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/claudiutraistaru/NFRouter on toolchain 0d162b25edd5bf0dba9a22e83b614f1113e90474
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "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" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded structopt-derive v0.4.18
[INFO] [stderr]   Downloaded structopt v0.3.26
[INFO] [stderr]   Downloaded ctrlc v3.4.5
[INFO] [stderr]   Downloaded error-code v3.2.0
[INFO] [stderr]   Downloaded clipboard-win v5.4.0
[INFO] [stderr]   Downloaded serde_derive v1.0.205
[INFO] [stderr]   Downloaded serde v1.0.205
[INFO] [stderr]   Downloaded serde_json v1.0.122
[INFO] [stderr]   Downloaded unicode-segmentation v1.11.0
[INFO] [stderr]   Downloaded rustyline v13.0.0
[INFO] [stderr]   Downloaded fd-lock v4.0.2
[INFO] [stderr]   Downloaded ansi_term v0.12.1
[INFO] [stderr]   Downloaded heck v0.3.3
[INFO] [stderr]   Downloaded ipnetwork v0.20.0
[INFO] [stderr]   Downloaded nix v0.27.1
[INFO] [stderr]   Downloaded clap v2.34.0
[INFO] [stderr]   Downloaded regex v1.11.0
[INFO] [stderr]   Downloaded regex-syntax v0.8.5
[INFO] [stderr]   Downloaded regex-automata v0.4.8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5b7b79c77fdde03cbd849635e7b498a33dd53fce37ca0fb83cb3278d87189aa2
[INFO] running `Command { std: "docker" "start" "-a" "5b7b79c77fdde03cbd849635e7b498a33dd53fce37ca0fb83cb3278d87189aa2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5b7b79c77fdde03cbd849635e7b498a33dd53fce37ca0fb83cb3278d87189aa2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5b7b79c77fdde03cbd849635e7b498a33dd53fce37ca0fb83cb3278d87189aa2", kill_on_drop: false }`
[INFO] [stdout] 5b7b79c77fdde03cbd849635e7b498a33dd53fce37ca0fb83cb3278d87189aa2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f23de59463c1b2e39034b166b28634b35c620dc4f797ef5413e8d9c74a325ff4
[INFO] running `Command { std: "docker" "start" "-a" "f23de59463c1b2e39034b166b28634b35c620dc4f797ef5413e8d9c74a325ff4", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.86
[INFO] [stderr]    Compiling libc v0.2.155
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling bitflags v2.6.0
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling unicode-segmentation v1.11.0
[INFO] [stderr]    Compiling serde v1.0.205
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling unicode-width v0.1.13
[INFO] [stderr]    Compiling bitflags v1.2.1
[INFO] [stderr]    Compiling rustix v0.38.34
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling linux-raw-sys v0.4.14
[INFO] [stderr]    Compiling smallvec v1.13.2
[INFO] [stderr]    Compiling textwrap v0.11.0
[INFO] [stderr]    Compiling heck v0.3.3
[INFO] [stderr]    Compiling strsim v0.8.0
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]    Compiling nibble_vec v0.1.0
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling syn v2.0.72
[INFO] [stderr]    Compiling endian-type v0.1.2
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling ansi_term v0.12.1
[INFO] [stderr]    Compiling vec_map v0.8.2
[INFO] [stderr]    Compiling serde_json v1.0.122
[INFO] [stderr]    Compiling radix_trie v0.2.1
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling clap v2.34.0
[INFO] [stderr]    Compiling nix v0.27.1
[INFO] [stderr]    Compiling serde_derive v1.0.205
[INFO] [stderr]    Compiling regex-automata v0.4.8
[INFO] [stderr]    Compiling fd-lock v4.0.2
[INFO] [stderr]    Compiling ryu v1.0.18
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling log v0.4.22
[INFO] [stderr]    Compiling home v0.5.9
[INFO] [stderr]    Compiling itoa v1.0.11
[INFO] [stderr]    Compiling ctrlc v3.4.5
[INFO] [stderr]    Compiling rustyline v13.0.0
[INFO] [stderr]    Compiling structopt-derive v0.4.18
[INFO] [stderr]    Compiling structopt v0.3.26
[INFO] [stderr]    Compiling regex v1.11.0
[INFO] [stderr]    Compiling ipnetwork v0.20.0
[INFO] [stderr]    Compiling 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]     = note: this warning originates in the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
[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: 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/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]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 51.37s
[INFO] running `Command { std: "docker" "inspect" "f23de59463c1b2e39034b166b28634b35c620dc4f797ef5413e8d9c74a325ff4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f23de59463c1b2e39034b166b28634b35c620dc4f797ef5413e8d9c74a325ff4", kill_on_drop: false }`
[INFO] [stdout] f23de59463c1b2e39034b166b28634b35c620dc4f797ef5413e8d9c74a325ff4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8f4fe755504f710a0f38d6c50f4d35f512645667d3a8485a0a34749d498b5e64
[INFO] running `Command { std: "docker" "start" "-a" "8f4fe755504f710a0f38d6c50f4d35f512645667d3a8485a0a34749d498b5e64", kill_on_drop: false }`
[INFO] [stderr]    Compiling 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: `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]     = note: this warning originates in the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
[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: `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]     Finished `test` profile [unoptimized + debuginfo] target(s) in 2.90s
[INFO] running `Command { std: "docker" "inspect" "8f4fe755504f710a0f38d6c50f4d35f512645667d3a8485a0a34749d498b5e64", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8f4fe755504f710a0f38d6c50f4d35f512645667d3a8485a0a34749d498b5e64", kill_on_drop: false }`
[INFO] [stdout] 8f4fe755504f710a0f38d6c50f4d35f512645667d3a8485a0a34749d498b5e64
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 460619d1e0bcca0f799f676c86951dec3bcf8851a8a2cf41b9741b52a79b1535
[INFO] running `Command { std: "docker" "start" "-a" "460619d1e0bcca0f799f676c86951dec3bcf8851a8a2cf41b9741b52a79b1535", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `commands::set::interface::set_interface_ip`
[INFO] [stderr]   --> src/main.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 24 | use commands::set::interface::set_interface_ip;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `unset_interface_ip`, `unset_interface_mtu`, and `unset_interface_speed`
[INFO] [stderr]   --> src/main.rs:30:34
[INFO] [stderr]    |
[INFO] [stderr] 30 | use commands::unset::interface::{unset_interface_ip, unset_interface_mtu, unset_interface_speed};
[INFO] [stderr]    |                                  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `DefaultEditor`
[INFO] [stderr]   --> src/main.rs:32:25
[INFO] [stderr]    |
[INFO] [stderr] 32 | use rustyline::{Config, DefaultEditor, Editor};
[INFO] [stderr]    |                         ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::config::RunningConfig`
[INFO] [stderr]   --> src/commands/exec/command.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 19 | use crate::config::RunningConfig;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `libc`
[INFO] [stderr]   --> src/commands/exec/command.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | use libc;
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serde_json::json`
[INFO] [stderr]   --> src/commands/exec/command.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use serde_json::json;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::thread`
[INFO] [stderr]   --> src/commands/exec/command.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 29 | use std::thread;
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashSet`
[INFO] [stderr]   --> src/commands/help.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | use std::collections::HashSet;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::DETACHED_FLAG`
[INFO] [stderr]  --> src/commands/set/firewall.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::DETACHED_FLAG;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Output`
[INFO] [stderr]  --> src/commands/set/firewall.rs:5:29
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::process::{Command, Output};
[INFO] [stderr]   |                             ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::net::IpAddr`
[INFO] [stderr]   --> src/commands/set/hostname.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | use std::net::IpAddr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]   --> src/commands/set/interface.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use std::collections::HashMap;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::net::IpAddr`
[INFO] [stderr]   --> src/commands/set/interface.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 23 | use std::net::IpAddr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::str::FromStr`
[INFO] [stderr]   --> src/commands/set/interface.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | use std::str::FromStr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `commands::show::currentconfig`
[INFO] [stderr]   --> src/commands/set/nat.rs:19:13
[INFO] [stderr]    |
[INFO] [stderr] 19 | use crate::{commands::show::currentconfig, config::RunningConfig};
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `libc`
[INFO] [stderr]   --> src/commands/set/protocol.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | use libc;
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: duplicated attribute
[INFO] [stderr]     --> src/commands/set/protocol.rs:1451:5
[INFO] [stderr]      |
[INFO] [stderr] 1451 |     #[test]
[INFO] [stderr]      |     ^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(duplicate_macro_attributes)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Value`
[INFO] [stderr]   --> src/commands/set/route.rs:20:24
[INFO] [stderr]    |
[INFO] [stderr] 20 | use serde_json::{json, Value};
[INFO] [stderr]    |                        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::net::IpAddr`
[INFO] [stderr]   --> src/commands/set/route.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use std::net::IpAddr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::process::Command`
[INFO] [stderr]   --> src/commands/set/route.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | use std::process::Command;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::str::FromStr`
[INFO] [stderr]   --> src/commands/set/route.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 23 | use std::str::FromStr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Value`
[INFO] [stderr]  --> src/commands/set/service.rs:2:24
[INFO] [stderr]   |
[INFO] [stderr] 2 | use serde_json::{json, Value};
[INFO] [stderr]   |                        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]   --> src/commands/set/system.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use std::collections::HashMap;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::net::IpAddr`
[INFO] [stderr]   --> src/commands/set/system.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | use std::net::IpAddr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::str::FromStr`
[INFO] [stderr]   --> src/commands/set/system.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 24 | use std::str::FromStr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `set_nat_masquerade`
[INFO] [stderr]   --> src/commands/set/mod.rs:37:26
[INFO] [stderr]    |
[INFO] [stderr] 37 | use nat::{parse_set_nat, set_nat_masquerade};
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::net::IpAddr`
[INFO] [stderr]   --> src/commands/set/mod.rs:42:5
[INFO] [stderr]    |
[INFO] [stderr] 42 | use std::net::IpAddr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::process::Command`
[INFO] [stderr]   --> src/commands/show/currentconfig.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | use std::process::Command;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::config::RunningConfig`
[INFO] [stderr]   --> src/commands/show/hostname.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 19 | use crate::config::RunningConfig;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::net::IpAddr`
[INFO] [stderr]   --> src/commands/show/interface.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | use std::net::IpAddr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::config::RunningConfig`
[INFO] [stderr]   --> src/commands/show/nat.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 19 | use crate::config::RunningConfig;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `File` and `self`
[INFO] [stderr]   --> src/commands/show/nat.rs:20:15
[INFO] [stderr]    |
[INFO] [stderr] 20 | use std::fs::{self, File};
[INFO] [stderr]    |               ^^^^  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `BufRead` and `self`
[INFO] [stderr]   --> src/commands/show/nat.rs:21:15
[INFO] [stderr]    |
[INFO] [stderr] 21 | use std::io::{self, BufRead};
[INFO] [stderr]    |               ^^^^  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::net::IpAddr`
[INFO] [stderr]   --> src/commands/show/nat.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | use std::net::IpAddr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::path::Path`
[INFO] [stderr]   --> src/commands/show/nat.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 23 | use std::path::Path;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::config::RunningConfig`
[INFO] [stderr]  --> src/commands/show/protocol.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use crate::config::RunningConfig;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serde_json::Value`
[INFO] [stderr]  --> src/commands/show/protocol.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use serde_json::Value;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serde_json::json`
[INFO] [stderr]   --> src/commands/unset/firewall.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | use serde_json::json;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]   --> src/commands/unset/firewall.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use std::collections::HashMap;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::net::IpAddr`
[INFO] [stderr]   --> src/commands/unset/firewall.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | use std::net::IpAddr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::str::FromStr`
[INFO] [stderr]   --> src/commands/unset/firewall.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 24 | use std::str::FromStr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]   --> src/commands/unset/interface.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use std::collections::HashMap;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::net::IpAddr`
[INFO] [stderr]   --> src/commands/unset/interface.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | use std::net::IpAddr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::str::FromStr`
[INFO] [stderr]   --> src/commands/unset/interface.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 24 | use std::str::FromStr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serde_json::json`
[INFO] [stderr]   --> src/commands/unset/route.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | use serde_json::json;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serde_json::json`
[INFO] [stderr]  --> src/commands/unset/system.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use serde_json::json;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `unset_interface_speed`
[INFO] [stderr]   --> src/commands/unset/mod.rs:27:37
[INFO] [stderr]    |
[INFO] [stderr] 27 | use interface::{unset_interface_ip, unset_interface_speed};
[INFO] [stderr]    |                                     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::net::IpAddr`
[INFO] [stderr]   --> src/commands/unset/mod.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 29 | use std::net::IpAddr;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]   --> src/config.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use std::collections::HashMap;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::process::Command`
[INFO] [stderr]   --> src/config.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 23 | use std::process::Command;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `build_help_message_vec` and `build_help_message`
[INFO] [stderr]   --> src/main.rs:39:22
[INFO] [stderr]    |
[INFO] [stderr] 39 | use commands::help::{build_help_message, build_help_message_vec, help_for_context};
[INFO] [stderr]    |                      ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Value`
[INFO] [stderr]   --> src/main.rs:43:24
[INFO] [stderr]    |
[INFO] [stderr] 43 | use serde_json::{json, Value};
[INFO] [stderr]    |                        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> src/main.rs:209:5
[INFO] [stderr]     |
[INFO] [stderr] 209 |     /// A list of help lines to be filtered.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 210 |     let help_lines = collect_help_lines();
[INFO] [stderr]     |     -------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable statement
[INFO] [stderr]    --> src/commands/set/firewall.rs:192:25
[INFO] [stderr]     |
[INFO] [stderr] 187 | /                         return Err(format!(
[INFO] [stderr] 188 | |                             "Failed to add rule to iptables: {}",
[INFO] [stderr] 189 | |                             String::from_utf8_lossy(&output.stderr)
[INFO] [stderr] 190 | |                         ));
[INFO] [stderr]     | |__________________________- any code following this expression is unreachable
[INFO] [stderr] 191 |
[INFO] [stderr] 192 | /                         println!(
[INFO] [stderr] 193 | |                             "Rule applied successfully to iptables for interface: {} ({})",
[INFO] [stderr] 194 | |                             iface_name, direction
[INFO] [stderr] 195 | |                         );
[INFO] [stderr]     | |_________________________^ unreachable statement
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr]     = note: this warning originates in the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `target`
[INFO] [stderr]   --> src/commands/exec/command.rs:61:9
[INFO] [stderr]    |
[INFO] [stderr] 61 |     let target = args[0];
[INFO] [stderr]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `running_clone`
[INFO] [stderr]   --> src/commands/exec/command.rs:67:9
[INFO] [stderr]    |
[INFO] [stderr] 67 |     let running_clone = Arc::clone(&running);
[INFO] [stderr]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_running_clone`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `target`
[INFO] [stderr]    --> src/commands/exec/command.rs:113:9
[INFO] [stderr]     |
[INFO] [stderr] 113 |     let target = args[0];
[INFO] [stderr]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `running_clone`
[INFO] [stderr]    --> src/commands/exec/command.rs:119:9
[INFO] [stderr]     |
[INFO] [stderr] 119 |     let running_clone = Arc::clone(&running);
[INFO] [stderr]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_running_clone`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/commands/help.rs:48:9
[INFO] [stderr]    |
[INFO] [stderr] 48 |     let mut help_items = Vec::new();
[INFO] [stderr]    |         ----^^^^^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `default_policy`
[INFO] [stderr]    --> src/commands/set/firewall.rs:243:9
[INFO] [stderr]     |
[INFO] [stderr] 243 |     let default_policy = firewall_rules.get("default-policy").and_then(|v| v.as_str())
[INFO] [stderr]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_default_policy`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `output`
[INFO] [stderr]    --> src/commands/set/firewall.rs:558:21
[INFO] [stderr]     |
[INFO] [stderr] 558 |                 let output = Command::new("iptables")
[INFO] [stderr]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pos`
[INFO] [stderr]    --> src/commands/set/firewall.rs:691:13
[INFO] [stderr]     |
[INFO] [stderr] 691 |         let pos = match position {
[INFO] [stderr]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `result`
[INFO] [stderr]    --> src/commands/set/firewall.rs:835:13
[INFO] [stderr]     |
[INFO] [stderr] 835 |         let result = add_firewall_rule(
[INFO] [stderr]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `expected_nat_config`
[INFO] [stderr]    --> src/commands/set/nat.rs:581:13
[INFO] [stderr]     |
[INFO] [stderr] 581 |         let expected_nat_config = json!({
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_nat_config`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `option`
[INFO] [stderr]   --> src/commands/set/system.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr] 27 |     option: &str,
[INFO] [stderr]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_option`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `interface` is assigned to, but never used
[INFO] [stderr]    --> src/commands/set/mod.rs:252:25
[INFO] [stderr]     |
[INFO] [stderr] 252 |                     let mut interface: Option<&str> = None;
[INFO] [stderr]     |                         ^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_interface` instead
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `interface` is never read
[INFO] [stderr]    --> src/commands/set/mod.rs:282:33
[INFO] [stderr]     |
[INFO] [stderr] 282 | ...                   interface = Some(parts[i + 1]);
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `parts`
[INFO] [stderr]   --> src/commands/show/hostname.rs:24:28
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub fn parse_show_hostname(parts: &[&str]) -> Result<String, String> {
[INFO] [stderr]    |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_parts`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `parts`
[INFO] [stderr]   --> src/commands/show/routes.rs:21:26
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub fn parse_show_routes(parts: &[&str]) -> Result<String, String> {
[INFO] [stderr]    |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_parts`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/config.rs:33:13
[INFO] [stderr]    |
[INFO] [stderr] 33 |         let mut running_config = if let Ok(config) = RunningConfig::load_from_file(config_path) {
[INFO] [stderr]    |             ----^^^^^^^^^^^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `completer`
[INFO] [stderr]   --> src/main.rs:59:9
[INFO] [stderr]    |
[INFO] [stderr] 59 |     let completer = CommandCompleter::new(help_lines.clone());
[INFO] [stderr]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_completer`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `completer`
[INFO] [stderr]   --> src/main.rs:65:9
[INFO] [stderr]    |
[INFO] [stderr] 65 |     let completer = CommandCompleter::new(help_lines.clone());
[INFO] [stderr]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_completer`
[INFO] [stderr] 
[INFO] [stderr] warning: function `build_help_message` is never used
[INFO] [stderr]   --> src/commands/help.rs:24:8
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub fn build_help_message() -> String {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `build_help_message_vec` is never used
[INFO] [stderr]   --> src/commands/help.rs:47:8
[INFO] [stderr]    |
[INFO] [stderr] 47 | pub fn build_help_message_vec() -> Vec<(&'static str, &'static str)> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `does_chain_exist` is never used
[INFO] [stderr]    --> src/commands/set/firewall.rs:463:4
[INFO] [stderr]     |
[INFO] [stderr] 463 | fn does_chain_exist(chain: &str) -> Result<bool, String> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_existing_rules` is never used
[INFO] [stderr]    --> src/commands/set/firewall.rs:491:4
[INFO] [stderr]     |
[INFO] [stderr] 491 | fn get_existing_rules(chain: &str) -> Result<Vec<String>, String> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `test_set_nat_dnat_success` is never used
[INFO] [stderr]    --> src/commands/set/nat.rs:591:8
[INFO] [stderr]     |
[INFO] [stderr] 591 |     fn test_set_nat_dnat_success() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `test_add_multiple_snat_rules` is never used
[INFO] [stderr]    --> src/commands/set/nat.rs:641:8
[INFO] [stderr]     |
[INFO] [stderr] 641 |     fn test_add_multiple_snat_rules() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `help_command` is never used
[INFO] [stderr]   --> src/commands/show/protocol.rs:24:8
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub fn help_command() -> Vec<(&'static str, &'static str)> {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `unset_nat_masquerade` is never used
[INFO] [stderr]   --> src/commands/unset/nat.rs:23:8
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub fn unset_nat_masquerade(
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `help_command_unset` is never used
[INFO] [stderr]   --> src/commands/unset/nat.rs:75:8
[INFO] [stderr]    |
[INFO] [stderr] 75 | pub fn help_command_unset() -> Vec<(&'static str, &'static str)> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `completer` is never read
[INFO] [stderr]    --> src/completer.rs:118:5
[INFO] [stderr]     |
[INFO] [stderr] 117 | pub struct MyHelper {
[INFO] [stderr]     |            -------- field in this struct
[INFO] [stderr] 118 |     completer: CommandCompleter,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `handle_multi_key_command`, `set_value_at_node`, and `get_or_create_array_node` are never used
[INFO] [stderr]    --> src/config.rs:374:8
[INFO] [stderr]     |
[INFO] [stderr]  30 | impl RunningConfig {
[INFO] [stderr]     | ------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 374 |     fn handle_multi_key_command(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 482 |     pub fn set_value_at_node(&mut self, node_path: &[&str], value: Value) -> Result<(), String> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 575 |     pub fn get_or_create_array_node(&mut self, path: &[&str]) -> &mut Value {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:360:9
[INFO] [stderr]     |
[INFO] [stderr] 360 |         running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(distance));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 360 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(distance));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:379:13
[INFO] [stderr]     |
[INFO] [stderr] 379 |             running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(distance));
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 379 |             let _ = running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(distance));
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:404:9
[INFO] [stderr]     |
[INFO] [stderr] 404 | /         running_config.add_value_to_node(
[INFO] [stderr] 405 | |             &["protocol", "rip"],
[INFO] [stderr] 406 | |             "default-information",
[INFO] [stderr] 407 | |             json!("originate"),
[INFO] [stderr] 408 | |         );
[INFO] [stderr]     | |_________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 404 |         let _ = running_config.add_value_to_node(
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:424:13
[INFO] [stderr]     |
[INFO] [stderr] 424 | /             running_config.add_value_to_node(
[INFO] [stderr] 425 | |                 &["protocol", "rip"],
[INFO] [stderr] 426 | |                 "default-information",
[INFO] [stderr] 427 | |                 json!("originate"),
[INFO] [stderr] 428 | |             );
[INFO] [stderr]     | |_____________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 424 |             let _ = running_config.add_value_to_node(
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:505:5
[INFO] [stderr]     |
[INFO] [stderr] 505 |     running_config.add_value_to_node(&["protocol", "rip"], "authentication", auth_config);
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 505 |     let _ = running_config.add_value_to_node(&["protocol", "rip"], "authentication", auth_config);
[INFO] [stderr]     |     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: comparison is useless due to type limits
[INFO] [stderr]    --> src/commands/set/protocol.rs:630:24
[INFO] [stderr]     |
[INFO] [stderr] 630 |     if distance < 1 || distance > 255 {
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: comparison is useless due to type limits
[INFO] [stderr]    --> src/commands/set/protocol.rs:674:24
[INFO] [stderr]     |
[INFO] [stderr] 674 |     if distance < 1 || distance > 255 {
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:840:9
[INFO] [stderr]     |
[INFO] [stderr] 840 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 840 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:843:9
[INFO] [stderr]     |
[INFO] [stderr] 843 |         set_rip_network(network, &mut running_config);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 843 |         let _ = set_rip_network(network, &mut running_config);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:858:9
[INFO] [stderr]     |
[INFO] [stderr] 858 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 858 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:861:9
[INFO] [stderr]     |
[INFO] [stderr] 861 |         set_rip_network(interface, &mut running_config);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 861 |         let _ = set_rip_network(interface, &mut running_config);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:875:9
[INFO] [stderr]     |
[INFO] [stderr] 875 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 875 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:902:9
[INFO] [stderr]     |
[INFO] [stderr] 902 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 902 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:925:9
[INFO] [stderr]     |
[INFO] [stderr] 925 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 925 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:945:9
[INFO] [stderr]     |
[INFO] [stderr] 945 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 945 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/protocol.rs:965:9
[INFO] [stderr]     |
[INFO] [stderr] 965 |         running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 965 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "enabled", json!(true));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]     --> src/commands/set/protocol.rs:1080:9
[INFO] [stderr]      |
[INFO] [stderr] 1080 | /         running_config.add_value_to_node(
[INFO] [stderr] 1081 | |             &["protocol", "rip", "redistribute"],
[INFO] [stderr] 1082 | |             "static",
[INFO] [stderr] 1083 | |             json!(true),
[INFO] [stderr] 1084 | |         );
[INFO] [stderr]      | |_________^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 1080 |         let _ = running_config.add_value_to_node(
[INFO] [stderr]      |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]     --> src/commands/set/protocol.rs:1229:9
[INFO] [stderr]      |
[INFO] [stderr] 1229 | /         running_config.add_value_to_node(
[INFO] [stderr] 1230 | |             &["protocol", "rip"],
[INFO] [stderr] 1231 | |             "default-information",
[INFO] [stderr] 1232 | |             json!("none"),
[INFO] [stderr] 1233 | |         );
[INFO] [stderr]      | |_________^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 1229 |         let _ = running_config.add_value_to_node(
[INFO] [stderr]      |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]     --> src/commands/set/protocol.rs:1258:9
[INFO] [stderr]      |
[INFO] [stderr] 1258 |         running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(120));
[INFO] [stderr]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 1258 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "distance", json!(120));
[INFO] [stderr]      |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]     --> src/commands/set/protocol.rs:1392:9
[INFO] [stderr]      |
[INFO] [stderr] 1392 |         running_config.add_value_to_node(&["protocol", "rip"], "send-version", json!({}));
[INFO] [stderr]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 1392 |         let _ = running_config.add_value_to_node(&["protocol", "rip"], "send-version", json!({}));
[INFO] [stderr]      |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]     --> src/commands/set/protocol.rs:1415:9
[INFO] [stderr]      |
[INFO] [stderr] 1415 |         running_config.add_value_to_node(&["interface"], "eth0", json!({}));
[INFO] [stderr]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 1415 |         let _ = running_config.add_value_to_node(&["interface"], "eth0", json!({}));
[INFO] [stderr]      |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/mod.rs:399:9
[INFO] [stderr]     |
[INFO] [stderr] 399 |         set_hostname("testrouter".to_string(), &mut running_config);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 399 |         let _ = set_hostname("testrouter".to_string(), &mut running_config);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/mod.rs:404:9
[INFO] [stderr]     |
[INFO] [stderr] 404 |         set_interface_ip(interface_eth0.clone(), ip_eth0.clone(), &mut running_config);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 404 |         let _ = set_interface_ip(interface_eth0.clone(), ip_eth0.clone(), &mut running_config);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/mod.rs:407:9
[INFO] [stderr]     |
[INFO] [stderr] 407 |         set_interface_option(interface_eth0.clone(), options, &mut running_config);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 407 |         let _ = set_interface_option(interface_eth0.clone(), options, &mut running_config);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/mod.rs:410:9
[INFO] [stderr]     |
[INFO] [stderr] 410 |         set_interface_description(&interface_eth0, description_eth0, &mut running_config);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 410 |         let _ = set_interface_description(&interface_eth0, description_eth0, &mut running_config);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/mod.rs:413:9
[INFO] [stderr]     |
[INFO] [stderr] 413 | /         set_interface_zone(
[INFO] [stderr] 414 | |             interface_eth0.clone(),
[INFO] [stderr] 415 | |             zone_internal.clone(),
[INFO] [stderr] 416 | |             &mut running_config,
[INFO] [stderr] 417 | |         );
[INFO] [stderr]     | |_________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 413 |         let _ = set_interface_zone(
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/mod.rs:421:9
[INFO] [stderr]     |
[INFO] [stderr] 421 |         set_interface_option(interface_eth0.clone(), options, &mut running_config);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 421 |         let _ = set_interface_option(interface_eth0.clone(), options, &mut running_config);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/mod.rs:424:9
[INFO] [stderr]     |
[INFO] [stderr] 424 |         set_interface_option(interface_eth0.clone(), options, &mut running_config);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 424 |         let _ = set_interface_option(interface_eth0.clone(), options, &mut running_config);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/mod.rs:427:9
[INFO] [stderr]     |
[INFO] [stderr] 427 |         set_ip_forwarding("ipforwarding", "enabled", &mut running_config);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 427 |         let _ = set_ip_forwarding("ipforwarding", "enabled", &mut running_config);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/mod.rs:449:9
[INFO] [stderr]     |
[INFO] [stderr] 449 |         parse_service_dhcp_server_command(&dhcp_parts, &mut running_config);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 449 |         let _ = parse_service_dhcp_server_command(&dhcp_parts, &mut running_config);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/commands/set/mod.rs:450:9
[INFO] [stderr]     |
[INFO] [stderr] 450 | /         parse_service_dhcp_server_command(
[INFO] [stderr] 451 | |             &["set", "service", "dhcp-server", "enabled"],
[INFO] [stderr] 452 | |             &mut running_config,
[INFO] [stderr] 453 | |         );
[INFO] [stderr]     | |_________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 450 |         let _ = parse_service_dhcp_server_command(
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/commands/unset/interface.rs:75:9
[INFO] [stderr]    |
[INFO] [stderr] 75 |         running_config.remove_value_from_node(&["interface", &interface, "options"], "speed");
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 75 |         let _ = running_config.remove_value_from_node(&["interface", &interface, "options"], "speed");
[INFO] [stderr]    |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `nfrouter` (bin "nfrouter" test) generated 115 warnings (run `cargo fix --bin "nfrouter" -p nfrouter --tests` to apply 67 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.11s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/nfrouter-56df0b1ef56838fd)
[INFO] [stdout] 
[INFO] [stdout] running 102 tests
[INFO] [stdout] test commands::set::hostname::tests::test_help_commands_contains_set_hostname_with_arg ... ok
[INFO] [stdout] test commands::set::hostname::tests::test_help_commands_contains_set_hostname ... ok
[INFO] [stdout] test commands::set::hostname::tests::test_set_hostname_empty_string ... ok
[INFO] [stdout] test commands::set::firewall::tests::test_set_default_policy ... ok
[INFO] [stdout] test commands::set::hostname::tests::test_set_hostname_updates_running_config ... ok
[INFO] [stdout] test commands::set::firewall::tests::test_add_firewall_rule_position ... ok
[INFO] [stdout] test commands::set::firewall::tests::test_create_firewall_rule_set ... ok
[INFO] [stdout] test commands::set::firewall::tests::test_add_firewall_rule ... ok
[INFO] [stdout] test commands::set::firewall::tests::test_is_ruleset_assigned_to_interface ... ok
[INFO] [stdout] test commands::set::hostname::tests::test_set_hostname_with_special_characters ... ok
[INFO] [stdout] test commands::set::interface::tests::test_help_commands ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_enable_proxy_arp ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_description ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_ip_adjust_mss_invalid ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_ip_adjust_mss_valid ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_ip_arp_cache_timeout ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_ip_dhcp ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_ip_disable_forwarding ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_ip_disable_arp_filter ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_option_duplex ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_ip_static ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_option_enabled ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_option_disable_flow_control ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_vlan ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_option_mtu ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_zone_invalid ... ok
[INFO] [stdout] test commands::set::nat::tests::test_add_multiple_dnat_rules ... ok
[INFO] [stdout] test commands::set::nat::tests::test_set_nat_masquerade_ip_forwarding_disabled ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_speed_invalid_speed ... ok
[INFO] [stdout] test commands::set::nat::tests::test_set_nat_masquerade_no_interfaces_configured ... ok
[INFO] [stdout] test commands::set::nat::tests::test_set_nat_masquerade_success ... ok
[INFO] [stdout] test commands::set::nat::tests::test_set_nat_masquerade_zone_not_defined ... ok
[INFO] [stdout] test commands::set::nat::tests::test_set_nat_snat_private_to_public_success ... ok
[INFO] [stdout] test commands::set::nat::tests::test_set_nat_snat_success ... ok
[INFO] [stdout] test commands::set::nat::tests::test_snat_with_multiple_interfaces ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_authentication_md5 ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_authentication_invalid ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_authentication_md5_with_key_chain ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_option_speed ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_default_information_originate_no_unexpected_changes ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_authentication_password_too_long ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_default_information_originate_success ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_default_information_originate_updates_existing_config ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_distance_default_success ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_distance_float_value ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_distance_invalid_value ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_option_hw_id ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_distance_negative_value ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_distance_success ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_distance_with_prefix_invalid_value ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_distance_with_prefix_success ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_distance_with_prefix_success ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_authentication_invalid_mode ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_authentication_text ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_passive_interface_already_passive ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_passive_interface_interface_not_configured ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_passive_interface_success ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_redistribute_connected_already_set ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_redistribute_connected_success ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_redistribute_static_already_set ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_redistribute_static_success ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_send_version_invalid ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_send_version_success ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_version_invalid_version ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_version_success_version_1 ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_parse_set_protocol_rip_command_network ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_parse_set_protocol_rip_command_interface ... ok
[INFO] [stdout] test commands::set::route::tests::test_set_route_add_multiple_routes ... ok
[INFO] [stdout] test commands::set::route::tests::test_set_route_replace_existing_route ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_version_success_version_2 ... ok
[INFO] [stdout] test commands::set::service::tests::test_apply_dhcp_config_dhcp_disabled ... ok
[INFO] [stdout] test commands::set::service::tests::test_apply_dhcp_config_success ... ok
[INFO] [stdout] test commands::set::service::tests::test_set_dhcp_server_enabled_incomplete_config ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_interface_success ... ok
[INFO] [stdout] test commands::set::route::tests::test_set_route_add_new_route ... ok
[INFO] [stdout] test commands::set::service::tests::test_set_dhcp_server_enabled_success ... ok
[INFO] [stdout] test commands::set::service::tests::test_set_dhcp_server_shared_network_invalid_option ... ok
[INFO] [stdout] test commands::set::service::tests::test_set_dhcp_server_shared_network_success ... ok
[INFO] [stdout] test commands::set::system::tests::test_set_ip_forwarding_enabled_success ... ok
[INFO] [stdout] test commands::set::system::tests::test_set_ip_forwarding_invalid_option ... ok
[INFO] [stdout] test commands::unset::firewall::tests::test_delete_firewall_rule_from_iptables ... ok
[INFO] [stdout] test commands::unset::interface::tests::test_unset_interface_adjustmss ... ok
[INFO] [stdout] test commands::unset::interface::tests::test_unset_interface_duplex ... ok
[INFO] [stdout] test commands::unset::interface::tests::test_unset_interface_description ... ok
[INFO] [stdout] test commands::unset::interface::tests::test_unset_interface_enable_proxyarp ... ok
[INFO] [stdout] test commands::unset::interface::tests::test_unset_interface_firewall ... ok
[INFO] [stdout] test commands::unset::interface::tests::test_unset_interface_ip ... ok
[INFO] [stdout] test commands::unset::interface::tests::test_unset_interface_ip_not_set ... ok
[INFO] [stdout] test commands::unset::interface::tests::test_unset_interface_speed ... ok
[INFO] [stdout] test commands::unset::interface::tests::test_unset_interface_vlan ... ok
[INFO] [stdout] test commands::unset::interface::tests::test_unset_interface_zone ... ok
[INFO] [stdout] test commands::unset::route::tests::test_unset_route_not_set ... ok
[INFO] [stdout] test commands::unset::route::tests::test_unset_route_success ... ok
[INFO] [stdout] test commands::unset::system::tests::test_unset_ip_forwarding_not_set ... ok
[INFO] [stdout] test commands::unset::interface::tests::test_unset_interface_mtu ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_network_success ... ok
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_interface_already_added ... ok
[INFO] [stdout] test commands::unset::system::tests::test_unset_ip_forwarding_success ... ok
[INFO] [stdout] test commands::set::interface::tests::test_set_interface_zone_valid ... FAILED
[INFO] [stdout] test commands::set::protocol::tests::test_set_rip_network_already_added ... ok
[INFO] [stdout] test commands::set::test::test_apply_json_configuration ... FAILED
[INFO] [stdout] test commands::set::test::test_full_configuration ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- commands::set::interface::tests::test_set_interface_zone_valid stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'commands::set::interface::tests::test_set_interface_zone_valid' (45) panicked at src/commands/set/interface.rs:1359:9:
[INFO] [stdout] Test failed with error: Some("Interface 'eth0' does not exist on the system.")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x64b40dabe752 - std[3b51380354919863]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x64b40dabe752 - std[3b51380354919863]::backtrace_rs::backtrace::trace_unsynchronized::<std[3b51380354919863]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x64b40dabe752 - std[3b51380354919863]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x64b40dabe752 - <<std[3b51380354919863]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[27de1724e4349be2]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x64b40dad62ca - <core[27de1724e4349be2]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x64b40dad62ca - core[27de1724e4349be2]::fmt::write
[INFO] [stdout]    6:     0x64b40dac37b6 - std[3b51380354919863]::io::default_write_fmt::<alloc[a57f19327c0ad893]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x64b40dac37b6 - <alloc[a57f19327c0ad893]::vec::Vec<u8> as std[3b51380354919863]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x64b40da9c4ff - <std[3b51380354919863]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x64b40da9c4ff - std[3b51380354919863]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x64b40dab6329 - std[3b51380354919863]::panicking::default_hook
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x64b40d79de2e - <alloc[a57f19327c0ad893]::boxed::Box<dyn for<'a, 'b> core[27de1724e4349be2]::ops::function::Fn<(&'a std[3b51380354919863]::panic::PanicHookInfo<'b>,), Output = ()> + core[27de1724e4349be2]::marker::Sync + core[27de1724e4349be2]::marker::Send> as core[27de1724e4349be2]::ops::function::Fn<(&std[3b51380354919863]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x64b40d79de2e - test[182b2e79ecd7bbd9]::test_main_with_exit_callback::<test[182b2e79ecd7bbd9]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x64b40dab64e2 - <alloc[a57f19327c0ad893]::boxed::Box<dyn for<'a, 'b> core[27de1724e4349be2]::ops::function::Fn<(&'a std[3b51380354919863]::panic::PanicHookInfo<'b>,), Output = ()> + core[27de1724e4349be2]::marker::Sync + core[27de1724e4349be2]::marker::Send> as core[27de1724e4349be2]::ops::function::Fn<(&std[3b51380354919863]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x64b40dab64e2 - std[3b51380354919863]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x64b40da9c5b8 - std[3b51380354919863]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x64b40da916a9 - std[3b51380354919863]::sys::backtrace::__rust_end_short_backtrace::<std[3b51380354919863]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x64b40da9d40d - __rustc[d79c0ace40940972]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x64b40dad6a8c - core[27de1724e4349be2]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x64b40d72f13b - nfrouter[22d1064e8b9713ed]::commands::set::interface::tests::test_set_interface_zone_valid
[INFO] [stdout]                                at /opt/rustwide/workdir/src/commands/set/interface.rs:1359:9
[INFO] [stdout]   20:     0x64b40d72a3f7 - nfrouter[22d1064e8b9713ed]::commands::set::interface::tests::test_set_interface_zone_valid::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/commands/set/interface.rs:1353:39
[INFO] [stdout]   21:     0x64b40d73f4a6 - <nfrouter[22d1064e8b9713ed]::commands::set::interface::tests::test_set_interface_zone_valid::{closure#0} as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x64b40d7921db - <fn() -> core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String> as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x64b40d7921db - test[182b2e79ecd7bbd9]::__rust_begin_short_backtrace::<core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>, fn() -> core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:663:18
[INFO] [stdout]   24:     0x64b40d79ea3a - test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:686:74
[INFO] [stdout]   25:     0x64b40d79ea3a - <core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}> as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   26:     0x64b40d79ea3a - std[3b51380354919863]::panicking::catch_unwind::do_call::<core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}>, core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x64b40d79ea3a - std[3b51380354919863]::panicking::catch_unwind::<core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>, core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x64b40d79ea3a - std[3b51380354919863]::panic::catch_unwind::<core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}>, core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x64b40d79ea3a - test[182b2e79ecd7bbd9]::run_test_in_process
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:686:27
[INFO] [stdout]   30:     0x64b40d79ea3a - test[182b2e79ecd7bbd9]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:607:43
[INFO] [stdout]   31:     0x64b40d799fe4 - test[182b2e79ecd7bbd9]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:637:41
[INFO] [stdout]   32:     0x64b40d799fe4 - std[3b51380354919863]::sys::backtrace::__rust_begin_short_backtrace::<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x64b40d7a1532 - std[3b51380354919863]::thread::lifecycle::spawn_unchecked::<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   34:     0x64b40d7a1532 - <core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   35:     0x64b40d7a1532 - std[3b51380354919863]::panicking::catch_unwind::do_call::<core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x64b40d7a1532 - std[3b51380354919863]::panicking::catch_unwind::<(), core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x64b40d7a1532 - std[3b51380354919863]::panic::catch_unwind::<core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x64b40d7a1532 - std[3b51380354919863]::thread::lifecycle::spawn_unchecked::<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   39:     0x64b40d7a1532 - <std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1} as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x64b40dabdabf - <alloc[a57f19327c0ad893]::boxed::Box<dyn core[27de1724e4349be2]::ops::function::FnOnce<(), Output = ()> + core[27de1724e4349be2]::marker::Send> as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   41:     0x64b40dabdabf - <std[3b51380354919863]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   42:     0x764bb04daaa4 - <unknown>
[INFO] [stdout]   43:     0x764bb0567a64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- commands::set::test::test_apply_json_configuration stdout ----
[INFO] [stdout] Applying nat command: set nat dnat from 203.0.113.1 8080 to 192.168.1.10 80
[INFO] [stdout] Applying nat command: set nat snat from zone internal to 203.0.113.1
[INFO] [stdout] IP forwarding has been enabled
[INFO] [stdout] Applying command: set firewall test-rule-set default-policy drop
[INFO] [stdout] Default policy for rule set test-rule-set has been set to drop
[INFO] [stdout] Applying command: set interface eth0 address 192.168.1.1/24
[INFO] [stdout] Assigned static IP 192.168.1.1/24 to interface eth0
[INFO] [stdout] Applying command: set interface eth0 description Internal Network
[INFO] [stdout] Set description 'Internal Network' on interface eth0
[INFO] [stdout] 
[INFO] [stdout] Applying command: set interface eth0 firewall in test-rule-set
[INFO] [stdout] Applied firewall test-rule-set to interface eth0 for in traffic
[INFO] [stdout] Applying command: set interface eth0 options hw-id 00:1A:2B:3C:4D:5E
[INFO] [stdout] Set hw-id 00:1A:2B:3C:4D:5E on interface eth0
[INFO] [stdout] 
[INFO] [stdout] Applying command: set interface eth0 options mtu 1500
[INFO] [stdout] Set MTU 1500 on interface eth0
[INFO] [stdout] 
[INFO] [stdout] Applying command: set interface eth0 zone internal
[INFO] [stdout] Error: Interface 'eth0' does not exist on the system.
[INFO] [stdout] Applying command: set interface eth1 address 192.168.10.1/24
[INFO] [stdout] Assigned static IP 192.168.10.1/24 to interface eth1
[INFO] [stdout] Applying command: set interface eth1 description External Network
[INFO] [stdout] Set description 'External Network' on interface eth1
[INFO] [stdout] 
[INFO] [stdout] Applying command: set interface eth1 options hw-id 00:1A:2B:3C:4D:5A
[INFO] [stdout] Set hw-id 00:1A:2B:3C:4D:5A on interface eth1
[INFO] [stdout] 
[INFO] [stdout] Applying command: set interface eth1 options mtu 1500
[INFO] [stdout] Set MTU 1500 on interface eth1
[INFO] [stdout] 
[INFO] [stdout] Applying command: set firewall test-rule-set action accept source 192.168.0.1 destination 192.168.0.2 protocol tcp port 80
[INFO] [stdout] Firewall rule added successfully to test-rule-set
[INFO] [stdout] Applying command: set firewall test-rule-set action accept destination 192.168.0.2 protocol tcp port 443
[INFO] [stdout] Firewall rule added successfully to test-rule-set
[INFO] [stdout] Applying command: set firewall test-rule-set action accept source 192.168.0.3 protocol udp port 53
[INFO] [stdout] Firewall rule added successfully to test-rule-set
[INFO] [stdout] Applying command: set firewall test-rule-set action accept source 192.168.0.4 destination 192.168.0.5 protocol icmp
[INFO] [stdout] Firewall rule added successfully to test-rule-set
[INFO] [stdout] Applying command: set firewall test-rule-set action accept protocol tcp port 22
[INFO] [stdout] Firewall rule added successfully to test-rule-set
[INFO] [stdout] Applying command: set firewall test-rule-set action accept source 192.168.0.6
[INFO] [stdout] Firewall rule added successfully to test-rule-set
[INFO] [stdout] Applying command: set firewall test-rule-set action accept destination 192.168.0.7
[INFO] [stdout] Firewall rule added successfully to test-rule-set
[INFO] [stdout] Applying command: set hostname testrouter
[INFO] [stdout] Hostname set successfully
[INFO] [stdout] Applying command: set nat dnat from 203.0.113.1 8080 to 192.168.1.10 80
[INFO] [stdout] Enabled NAT DNAT from public IP '203.0.113.1:8080' to private IP '192.168.1.10:80'
[INFO] [stdout] Applying command: set nat snat from zone internal to 203.0.113.1
[INFO] [stdout] Error: Zone 'internal' is not defined on any interface.
[INFO] [stdout] Applying command: set protocol rip distance 200
[INFO] [stdout] RIP administrative distance set to 200 and applied in FRR.
[INFO] [stdout] Applying command: set protocol rip network 192.168.12.0/24
[INFO] [stdout] 192.168.12.0/24 added to RIP.
[INFO] [stdout] Applying command: set protocol rip passive-interface eth0
[INFO] [stdout] Interface eth0 set as passive in RIP.
[INFO] [stdout] Applying command: set protocol rip receive-version 2
[INFO] [stdout] RIP receive version 2.
[INFO] [stdout] Applying command: set protocol rip redistribute connected
[INFO] [stdout] Connected routes redistributed into RIP.
[INFO] [stdout] Applying command: set protocol rip redistribute static
[INFO] [stdout] RIP configured to redistribute static routes.
[INFO] [stdout] Applying command: set protocol rip send-version 1
[INFO] [stdout] RIP send version 1 set.
[INFO] [stdout] Applying command: set protocol rip version 2
[INFO] [stdout] RIP version 2 set.
[INFO] [stdout] Applying command: set service dhcp-server shared-network-name net_internal subnet 192.168.1.0/24 default-router 192.168.1.1
[INFO] [stdout] DHCP server configuration updated for network 'net_internal' subnet '192.168.1.0/24'
[INFO] [stdout] Applying command: set service dhcp-server shared-network-name net_internal subnet 192.168.1.0/24 dns-server 8.8.8.8
[INFO] [stdout] DHCP server configuration updated for network 'net_internal' subnet '192.168.1.0/24'
[INFO] [stdout] Applying command: set service dhcp-server shared-network-name net_internal subnet 192.168.1.0/24 lease 86400
[INFO] [stdout] DHCP server configuration updated for network 'net_internal' subnet '192.168.1.0/24'
[INFO] [stdout] Applying command: set service dhcp-server shared-network-name net_internal subnet 192.168.1.0/24 start 192.168.1.100
[INFO] [stdout] DHCP server configuration updated for network 'net_internal' subnet '192.168.1.0/24'
[INFO] [stdout] Applying command: set service dhcp-server shared-network-name net_internal subnet 192.168.1.0/24 stop 192.168.1.200
[INFO] [stdout] DHCP server configuration updated for network 'net_internal' subnet '192.168.1.0/24'
[INFO] [stdout] Applying 'enabled' command: set interface eth0 options enabled
[INFO] [stdout] Interface eth0 is now enabled
[INFO] [stdout] Applying 'enabled' command: set interface eth1 options enabled
[INFO] [stdout] Interface eth1 is now enabled
[INFO] [stdout] Applying 'enabled' command: set service dhcp-server enabled
[INFO] [stdout] DHCP server (dnsmasq) enabled and configuration applied
[INFO] [stdout] 
[INFO] [stdout] thread 'commands::set::test::test_apply_json_configuration' (101) panicked at src/commands/set/mod.rs:669:9:
[INFO] [stdout] assertion `left == right` failed: The resulting configuration does not match the expected configuration
[INFO] [stdout]   left: Object {"config-version": String("0.2.0"), "firewall": Object {"test-rule-set": Object {"default-policy": String("drop"), "rules": Array [Object {"action": String("accept"), "destination": String("192.168.0.2"), "port": Number(80), "protocol": String("tcp"), "source": String("192.168.0.1")}, Object {"action": String("accept"), "destination": String("192.168.0.2"), "port": Number(443), "protocol": String("tcp")}, Object {"action": String("accept"), "port": Number(53), "protocol": String("udp"), "source": String("192.168.0.3")}, Object {"action": String("accept"), "destination": String("192.168.0.5"), "protocol": String("icmp"), "source": String("192.168.0.4")}, Object {"action": String("accept"), "port": Number(22), "protocol": String("tcp")}, Object {"action": String("accept"), "source": String("192.168.0.6")}, Object {"action": String("accept"), "destination": String("192.168.0.7")}]}}, "hostname": String("testrouter"), "interface": Object {"eth0": Object {"address": String("192.168.1.1/24"), "description": String("Internal Network"), "firewall": Object {"in": String("test-rule-set")}, "options": Object {"enabled": Bool(true), "hw-id": String("00:1A:2B:3C:4D:5E"), "mtu": Number(1500)}}, "eth1": Object {"address": String("192.168.10.1/24"), "description": String("External Network"), "options": Object {"enabled": Bool(true), "hw-id": String("00:1A:2B:3C:4D:5A"), "mtu": Number(1500)}}}, "nat": Object {"dnat": Array [Object {"from": Object {"203.0.113.1": Number(8080)}, "to": Object {"192.168.1.10": Number(80)}}]}, "protocol": Object {"rip": Object {"distance": Number(200), "network": Array [String("192.168.12.0/24")], "passive-interface": Array [String("eth0")], "receive-version": Number(2), "redistribute": Object {"connected": Bool(true), "static": Bool(true)}, "send-version": Number(1), "version": Number(2)}}, "service": Object {"dhcp-server": Object {"enabled": Bool(true), "shared-network-name": Object {"net_internal": Object {"subnet": Object {"192.168.1.0/24": Object {"default-router": String("192.168.1.1"), "dns-server": String("8.8.8.8"), "lease": String("86400"), "start": String("192.168.1.100"), "stop": String("192.168.1.200")}}}}}}, "system": Object {"ipforwarding": Object {"enabled": Bool(true)}}}
[INFO] [stdout]  right: Object {"config-version": String("0.2.0"), "firewall": Object {"test-rule-set": Object {"default-policy": String("drop"), "rules": Array [Object {"action": String("accept"), "destination": String("192.168.0.2"), "port": Number(80), "protocol": String("tcp"), "source": String("192.168.0.1")}, Object {"action": String("accept"), "destination": String("192.168.0.2"), "port": Number(443), "protocol": String("tcp")}, Object {"action": String("accept"), "port": Number(53), "protocol": String("udp"), "source": String("192.168.0.3")}, Object {"action": String("accept"), "destination": String("192.168.0.5"), "protocol": String("icmp"), "source": String("192.168.0.4")}, Object {"action": String("accept"), "port": Number(22), "protocol": String("tcp")}, Object {"action": String("accept"), "source": String("192.168.0.6")}, Object {"action": String("accept"), "destination": String("192.168.0.7")}]}}, "hostname": String("testrouter"), "interface": Object {"eth0": Object {"address": String("192.168.1.1/24"), "description": String("Internal Network"), "firewall": Object {"in": String("test-rule-set")}, "options": Object {"enabled": Bool(true), "hw-id": String("00:1A:2B:3C:4D:5E"), "mtu": Number(1500)}, "zone": String("internal")}, "eth1": Object {"address": String("192.168.10.1/24"), "description": String("External Network"), "options": Object {"enabled": Bool(true), "hw-id": String("00:1A:2B:3C:4D:5A"), "mtu": Number(1500)}}}, "nat": Object {"dnat": Array [Object {"from": Object {"203.0.113.1": Number(8080)}, "to": Object {"192.168.1.10": Number(80)}}], "snat": Array [Object {"from": Object {"zone": String("internal")}, "to": String("203.0.113.1")}]}, "protocol": Object {"rip": Object {"distance": Number(200), "network": Array [String("192.168.12.0/24")], "passive-interface": Array [String("eth0")], "receive-version": Number(2), "redistribute": Object {"connected": Bool(true), "static": Bool(true)}, "send-version": Number(1), "version": Number(2)}}, "service": Object {"dhcp-server": Object {"enabled": Bool(true), "shared-network-name": Object {"net_internal": Object {"subnet": Object {"192.168.1.0/24": Object {"default-router": String("192.168.1.1"), "dns-server": String("8.8.8.8"), "lease": String("86400"), "start": String("192.168.1.100"), "stop": String("192.168.1.200")}}}}}}, "system": Object {"ipforwarding": Object {"enabled": Bool(true)}}}
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x64b40dabe752 - std[3b51380354919863]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x64b40dabe752 - std[3b51380354919863]::backtrace_rs::backtrace::trace_unsynchronized::<std[3b51380354919863]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x64b40dabe752 - std[3b51380354919863]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x64b40dabe752 - <<std[3b51380354919863]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[27de1724e4349be2]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x64b40dad62ca - <core[27de1724e4349be2]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x64b40dad62ca - core[27de1724e4349be2]::fmt::write
[INFO] [stdout]    6:     0x64b40dac37b6 - std[3b51380354919863]::io::default_write_fmt::<alloc[a57f19327c0ad893]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x64b40dac37b6 - <alloc[a57f19327c0ad893]::vec::Vec<u8> as std[3b51380354919863]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x64b40da9c4ff - <std[3b51380354919863]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x64b40da9c4ff - std[3b51380354919863]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x64b40dab6329 - std[3b51380354919863]::panicking::default_hook
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x64b40d79de2e - <alloc[a57f19327c0ad893]::boxed::Box<dyn for<'a, 'b> core[27de1724e4349be2]::ops::function::Fn<(&'a std[3b51380354919863]::panic::PanicHookInfo<'b>,), Output = ()> + core[27de1724e4349be2]::marker::Sync + core[27de1724e4349be2]::marker::Send> as core[27de1724e4349be2]::ops::function::Fn<(&std[3b51380354919863]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x64b40d79de2e - test[182b2e79ecd7bbd9]::test_main_with_exit_callback::<test[182b2e79ecd7bbd9]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x64b40dab64e2 - <alloc[a57f19327c0ad893]::boxed::Box<dyn for<'a, 'b> core[27de1724e4349be2]::ops::function::Fn<(&'a std[3b51380354919863]::panic::PanicHookInfo<'b>,), Output = ()> + core[27de1724e4349be2]::marker::Sync + core[27de1724e4349be2]::marker::Send> as core[27de1724e4349be2]::ops::function::Fn<(&std[3b51380354919863]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x64b40dab64e2 - std[3b51380354919863]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x64b40da9c5b8 - std[3b51380354919863]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x64b40da916a9 - std[3b51380354919863]::sys::backtrace::__rust_end_short_backtrace::<std[3b51380354919863]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x64b40da9d40d - __rustc[d79c0ace40940972]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x64b40dad6a8c - core[27de1724e4349be2]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x64b40dad69a3 - core[27de1724e4349be2]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x64b40d723d0e - core[27de1724e4349be2]::panicking::assert_failed::<serde_json[e9a9003b6b93663c]::value::Value, serde_json[e9a9003b6b93663c]::value::Value>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x64b40d7919ce - nfrouter[22d1064e8b9713ed]::commands::set::test::test_apply_json_configuration
[INFO] [stdout]                                at /opt/rustwide/workdir/src/commands/set/mod.rs:669:9
[INFO] [stdout]   22:     0x64b40d783cc7 - nfrouter[22d1064e8b9713ed]::commands::set::test::test_apply_json_configuration::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/commands/set/mod.rs:528:39
[INFO] [stdout]   23:     0x64b40d73e2a6 - <nfrouter[22d1064e8b9713ed]::commands::set::test::test_apply_json_configuration::{closure#0} as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x64b40d7921db - <fn() -> core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String> as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x64b40d7921db - test[182b2e79ecd7bbd9]::__rust_begin_short_backtrace::<core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>, fn() -> core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x64b40d79ea3a - test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x64b40d79ea3a - <core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}> as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x64b40d79ea3a - std[3b51380354919863]::panicking::catch_unwind::do_call::<core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}>, core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x64b40d79ea3a - std[3b51380354919863]::panicking::catch_unwind::<core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>, core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x64b40d79ea3a - std[3b51380354919863]::panic::catch_unwind::<core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}>, core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x64b40d79ea3a - test[182b2e79ecd7bbd9]::run_test_in_process
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x64b40d79ea3a - test[182b2e79ecd7bbd9]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x64b40d799fe4 - test[182b2e79ecd7bbd9]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x64b40d799fe4 - std[3b51380354919863]::sys::backtrace::__rust_begin_short_backtrace::<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x64b40d7a1532 - std[3b51380354919863]::thread::lifecycle::spawn_unchecked::<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x64b40d7a1532 - <core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x64b40d7a1532 - std[3b51380354919863]::panicking::catch_unwind::do_call::<core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x64b40d7a1532 - std[3b51380354919863]::panicking::catch_unwind::<(), core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x64b40d7a1532 - std[3b51380354919863]::panic::catch_unwind::<core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x64b40d7a1532 - std[3b51380354919863]::thread::lifecycle::spawn_unchecked::<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x64b40d7a1532 - <std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1} as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x64b40dabdabf - <alloc[a57f19327c0ad893]::boxed::Box<dyn core[27de1724e4349be2]::ops::function::FnOnce<(), Output = ()> + core[27de1724e4349be2]::marker::Send> as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   43:     0x64b40dabdabf - <std[3b51380354919863]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   44:     0x764bb04daaa4 - <unknown>
[INFO] [stdout]   45:     0x764bb0567a64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- commands::set::test::test_full_configuration stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'commands::set::test::test_full_configuration' (102) panicked at src/commands/set/mod.rs:521:9:
[INFO] [stdout] assertion `left == right` failed: Full configuration mismatch
[INFO] [stdout]   left: Object {"config-version": String("0.2.0"), "hostname": String("testrouter"), "interface": Object {"eth0": Object {"address": String("192.168.1.1/24"), "description": String("Internal Network"), "options": Object {"enabled": Bool(true), "hw-id": String("00:1A:2B:3C:4D:5E"), "mtu": Number(1500)}}}, "protocol": Object {"rip": Object {"distance": Number(200), "network": Array [String("192.168.1.0/24")], "passive-interface": Array [String("eth0")], "receive-version": Number(2), "redistribute": Object {"connected": Bool(true), "static": Bool(true)}, "send-version": Number(1), "version": Number(2)}}, "service": Object {"dhcp-server": Object {"enabled": Bool(true), "shared-network-name": Object {"net_internal": Object {"subnet": Object {"192.168.1.0/24": Object {"default-router": String("192.168.1.1"), "dns-server": String("8.8.8.8"), "lease": String("86400"), "start": String("192.168.1.100"), "stop": String("192.168.1.200")}}}}}}, "system": Object {"ipforwarding": Object {"enabled": Bool(true)}}}
[INFO] [stdout]  right: Object {"config-version": String("0.2.0"), "hostname": String("testrouter"), "interface": Object {"eth0": Object {"address": String("192.168.1.1/24"), "description": String("Internal Network"), "options": Object {"enabled": Bool(true), "hw-id": String("00:1A:2B:3C:4D:5E"), "mtu": Number(1500)}, "zone": String("internal")}}, "protocol": Object {"rip": Object {"distance": Number(200), "network": Array [String("192.168.1.0/24")], "passive-interface": Array [String("eth0")], "receive-version": Number(2), "redistribute": Object {"connected": Bool(true), "static": Bool(true)}, "send-version": Number(1), "version": Number(2)}}, "service": Object {"dhcp-server": Object {"enabled": Bool(true), "shared-network-name": Object {"net_internal": Object {"subnet": Object {"192.168.1.0/24": Object {"default-router": String("192.168.1.1"), "dns-server": String("8.8.8.8"), "lease": String("86400"), "start": String("192.168.1.100"), "stop": String("192.168.1.200")}}}}}}, "system": Object {"ipforwarding": Object {"enabled": Bool(true)}}}
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x64b40dabe752 - std[3b51380354919863]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x64b40dabe752 - std[3b51380354919863]::backtrace_rs::backtrace::trace_unsynchronized::<std[3b51380354919863]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x64b40dabe752 - std[3b51380354919863]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x64b40dabe752 - <<std[3b51380354919863]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[27de1724e4349be2]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x64b40dad62ca - <core[27de1724e4349be2]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x64b40dad62ca - core[27de1724e4349be2]::fmt::write
[INFO] [stdout]    6:     0x64b40dac37b6 - std[3b51380354919863]::io::default_write_fmt::<alloc[a57f19327c0ad893]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x64b40dac37b6 - <alloc[a57f19327c0ad893]::vec::Vec<u8> as std[3b51380354919863]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x64b40da9c4ff - <std[3b51380354919863]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x64b40da9c4ff - std[3b51380354919863]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x64b40dab6329 - std[3b51380354919863]::panicking::default_hook
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x64b40d79de2e - <alloc[a57f19327c0ad893]::boxed::Box<dyn for<'a, 'b> core[27de1724e4349be2]::ops::function::Fn<(&'a std[3b51380354919863]::panic::PanicHookInfo<'b>,), Output = ()> + core[27de1724e4349be2]::marker::Sync + core[27de1724e4349be2]::marker::Send> as core[27de1724e4349be2]::ops::function::Fn<(&std[3b51380354919863]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x64b40d79de2e - test[182b2e79ecd7bbd9]::test_main_with_exit_callback::<test[182b2e79ecd7bbd9]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x64b40dab64e2 - <alloc[a57f19327c0ad893]::boxed::Box<dyn for<'a, 'b> core[27de1724e4349be2]::ops::function::Fn<(&'a std[3b51380354919863]::panic::PanicHookInfo<'b>,), Output = ()> + core[27de1724e4349be2]::marker::Sync + core[27de1724e4349be2]::marker::Send> as core[27de1724e4349be2]::ops::function::Fn<(&std[3b51380354919863]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x64b40dab64e2 - std[3b51380354919863]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x64b40da9c5b8 - std[3b51380354919863]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x64b40da916a9 - std[3b51380354919863]::sys::backtrace::__rust_end_short_backtrace::<std[3b51380354919863]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x64b40da9d40d - __rustc[d79c0ace40940972]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x64b40dad6a8c - core[27de1724e4349be2]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x64b40dad69a3 - core[27de1724e4349be2]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x64b40d723d0e - core[27de1724e4349be2]::panicking::assert_failed::<serde_json[e9a9003b6b93663c]::value::Value, serde_json[e9a9003b6b93663c]::value::Value>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x64b40d788c26 - nfrouter[22d1064e8b9713ed]::commands::set::test::test_full_configuration
[INFO] [stdout]                                at /opt/rustwide/workdir/src/commands/set/mod.rs:521:9
[INFO] [stdout]   22:     0x64b40d783c97 - nfrouter[22d1064e8b9713ed]::commands::set::test::test_full_configuration::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/commands/set/mod.rs:395:33
[INFO] [stdout]   23:     0x64b40d73e266 - <nfrouter[22d1064e8b9713ed]::commands::set::test::test_full_configuration::{closure#0} as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x64b40d7921db - <fn() -> core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String> as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x64b40d7921db - test[182b2e79ecd7bbd9]::__rust_begin_short_backtrace::<core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>, fn() -> core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x64b40d79ea3a - test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x64b40d79ea3a - <core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}> as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x64b40d79ea3a - std[3b51380354919863]::panicking::catch_unwind::do_call::<core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}>, core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x64b40d79ea3a - std[3b51380354919863]::panicking::catch_unwind::<core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>, core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x64b40d79ea3a - std[3b51380354919863]::panic::catch_unwind::<core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<test[182b2e79ecd7bbd9]::run_test_in_process::{closure#0}>, core[27de1724e4349be2]::result::Result<(), alloc[a57f19327c0ad893]::string::String>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x64b40d79ea3a - test[182b2e79ecd7bbd9]::run_test_in_process
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x64b40d79ea3a - test[182b2e79ecd7bbd9]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x64b40d799fe4 - test[182b2e79ecd7bbd9]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x64b40d799fe4 - std[3b51380354919863]::sys::backtrace::__rust_begin_short_backtrace::<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x64b40d7a1532 - std[3b51380354919863]::thread::lifecycle::spawn_unchecked::<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x64b40d7a1532 - <core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x64b40d7a1532 - std[3b51380354919863]::panicking::catch_unwind::do_call::<core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x64b40d7a1532 - std[3b51380354919863]::panicking::catch_unwind::<(), core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x64b40d7a1532 - std[3b51380354919863]::panic::catch_unwind::<core[27de1724e4349be2]::panic::unwind_safe::AssertUnwindSafe<std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x64b40d7a1532 - std[3b51380354919863]::thread::lifecycle::spawn_unchecked::<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x64b40d7a1532 - <std[3b51380354919863]::thread::lifecycle::spawn_unchecked<test[182b2e79ecd7bbd9]::run_test::{closure#1}, ()>::{closure#1} as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x64b40dabdabf - <alloc[a57f19327c0ad893]::boxed::Box<dyn core[27de1724e4349be2]::ops::function::FnOnce<(), Output = ()> + core[27de1724e4349be2]::marker::Send> as core[27de1724e4349be2]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   43:     0x64b40dabdabf - <std[3b51380354919863]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/0d162b25edd5bf0dba9a22e83b614f1113e90474/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   44:     0x764bb04daaa4 - <unknown>
[INFO] [stdout]   45:     0x764bb0567a64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     commands::set::interface::tests::test_set_interface_zone_valid
[INFO] [stdout]     commands::set::test::test_apply_json_configuration
[INFO] [stdout]     commands::set::test::test_full_configuration
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 99 passed; 3 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin nfrouter`
[INFO] running `Command { std: "docker" "inspect" "460619d1e0bcca0f799f676c86951dec3bcf8851a8a2cf41b9741b52a79b1535", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "460619d1e0bcca0f799f676c86951dec3bcf8851a8a2cf41b9741b52a79b1535", kill_on_drop: false }`
[INFO] [stdout] 460619d1e0bcca0f799f676c86951dec3bcf8851a8a2cf41b9741b52a79b1535
