[INFO] cloning repository https://github.com/jayfeather9/PenelOSPF [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jayfeather9/PenelOSPF" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjayfeather9%2FPenelOSPF", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjayfeather9%2FPenelOSPF'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] f25f441a7caafedc14ac730fd03de296e640c319 [INFO] linting jayfeather9/PenelOSPF against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjayfeather9%2FPenelOSPF" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-0-tc1/source/.cargo/config.toml [INFO] started tweaking git repo https://github.com/jayfeather9/PenelOSPF [INFO] finished tweaking git repo https://github.com/jayfeather9/PenelOSPF [INFO] tweaked toml for git repo https://github.com/jayfeather9/PenelOSPF written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/jayfeather9/PenelOSPF on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/jayfeather9/PenelOSPF 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" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded pnet_transport v0.35.0 [INFO] [stderr] Downloaded pnet_packet v0.35.0 [INFO] [stderr] Downloaded ipnetwork v0.20.0 [INFO] [stderr] Downloaded pnet_base v0.35.0 [INFO] [stderr] Downloaded pnet v0.35.0 [INFO] [stderr] Downloaded nom-derive-impl v0.10.1 [INFO] [stderr] Downloaded nom-derive v0.10.1 [INFO] [stderr] Downloaded pnet_macros v0.35.0 [INFO] [stderr] Downloaded pnet_sys v0.35.0 [INFO] [stderr] Downloaded pnet_datalink v0.35.0 [INFO] [stderr] Downloaded pnet_macros_support v0.35.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] fa41855addf05baea59afb848250aa529141d8f7938b454161ec37ce4e2f5f8b [INFO] running `Command { std: "docker" "start" "-a" "fa41855addf05baea59afb848250aa529141d8f7938b454161ec37ce4e2f5f8b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "fa41855addf05baea59afb848250aa529141d8f7938b454161ec37ce4e2f5f8b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fa41855addf05baea59afb848250aa529141d8f7938b454161ec37ce4e2f5f8b", kill_on_drop: false }` [INFO] [stdout] fa41855addf05baea59afb848250aa529141d8f7938b454161ec37ce4e2f5f8b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 96f5efb380ff979f5635183714cb1115891d4af13c1fe32fcccb5592df1b6f39 [INFO] running `Command { std: "docker" "start" "-a" "96f5efb380ff979f5635183714cb1115891d4af13c1fe32fcccb5592df1b6f39", kill_on_drop: false }` [INFO] [stderr] Compiling regex-syntax v0.8.4 [INFO] [stderr] Checking no-std-net v0.6.0 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling serde v1.0.203 [INFO] [stderr] Compiling rustversion v1.0.17 [INFO] [stderr] Compiling pnet v0.35.0 [INFO] [stderr] Checking bytes v1.6.0 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Compiling syn v2.0.66 [INFO] [stderr] Checking pnet_sys v0.35.0 [INFO] [stderr] Checking signal-hook-registry v1.4.2 [INFO] [stderr] Checking mio v0.8.11 [INFO] [stderr] Checking socket2 v0.5.7 [INFO] [stderr] Checking pnet_base v0.35.0 [INFO] [stderr] Checking pnet_macros_support v0.35.0 [INFO] [stderr] Compiling regex-automata v0.4.7 [INFO] [stderr] Checking ipnetwork v0.20.0 [INFO] [stderr] Checking pnet_datalink v0.35.0 [INFO] [stderr] Compiling tokio-macros v2.3.0 [INFO] [stderr] Checking tokio v1.38.0 [INFO] [stderr] Compiling nom-derive-impl v0.10.1 [INFO] [stderr] Compiling encoding_derive v0.1.0 (/opt/rustwide/workdir/encoding_derive) [INFO] [stderr] Compiling regex v1.10.5 [INFO] [stderr] Compiling pnet_macros v0.35.0 [INFO] [stderr] Checking nom-derive v0.10.1 [INFO] [stderr] Checking pnet_packet v0.35.0 [INFO] [stderr] Checking pnet_transport v0.35.0 [INFO] [stderr] Checking PenelOSPF v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::net::Ipv4Addr` [INFO] [stdout] --> src/config.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::net::Ipv4Addr; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::packets::DBDFlag` [INFO] [stdout] --> src/interface.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::packets::DBDFlag; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Neighbor` [INFO] [stdout] --> src/interface_query.rs:5:33 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::neighbor::{NbrState, Neighbor}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `LinkStateRequest` [INFO] [stdout] --> src/interface_send.rs:114:30 [INFO] [stdout] | [INFO] [stdout] 114 | use crate::packets::{LinkStateRequest, LinkStateRequestItem}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::Ipv4Addr` [INFO] [stdout] --> src/config.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::net::Ipv4Addr; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::route` [INFO] [stdout] --> src/route.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::route; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::env::current_exe` [INFO] [stdout] --> src/route.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::env::current_exe; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::packets::DBDFlag` [INFO] [stdout] --> src/interface.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::packets::DBDFlag; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/main.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | use tokio; [INFO] [stdout] | ^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Neighbor` [INFO] [stdout] --> src/interface_query.rs:5:33 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::neighbor::{NbrState, Neighbor}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `LinkStateRequest` [INFO] [stdout] --> src/interface_send.rs:114:30 [INFO] [stdout] | [INFO] [stdout] 114 | use crate::packets::{LinkStateRequest, LinkStateRequestItem}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::route` [INFO] [stdout] --> src/route.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::route; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::env::current_exe` [INFO] [stdout] --> src/route.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::env::current_exe; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/main.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | use tokio; [INFO] [stdout] | ^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lsa` [INFO] [stdout] --> src/receiver.rs:110:49 [INFO] [stdout] | [INFO] [stdout] 110 | OSPFPacket::LinkStateAcknowledgment(lsa) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_lsa` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `interface` [INFO] [stdout] --> src/sender.rs:45:77 [INFO] [stdout] | [INFO] [stdout] 45 | SenderRequestType::SendOSPFPacket(mut packet, (src_ip, dst_ip), interface) => { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interface` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LS_REFRESH_TIME` is never used [INFO] [stdout] --> src/config.rs:3:11 [INFO] [stdout] | [INFO] [stdout] 3 | pub const LS_REFRESH_TIME: u32 = 1800; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MIN_LS_INTERVAL` is never used [INFO] [stdout] --> src/config.rs:4:11 [INFO] [stdout] | [INFO] [stdout] 4 | pub const MIN_LS_INTERVAL: u32 = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MIN_LS_ARRIVAL` is never used [INFO] [stdout] --> src/config.rs:5:11 [INFO] [stdout] | [INFO] [stdout] 5 | pub const MIN_LS_ARRIVAL: u32 = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LS_INFINITY` is never used [INFO] [stdout] --> src/config.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | pub const LS_INFINITY: u32 = 0xFF_FFFF; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ChangeConfig`, `QueryLsaByLSID`, `QueryLsaByLSIDAdvRouter`, `RemoveLsa`, and `QueryAllLsaByType` are never constructed [INFO] [stdout] --> src/database.rs:58:5 [INFO] [stdout] | [INFO] [stdout] 56 | pub enum DatabaseRequestType { [INFO] [stdout] | ------------------- variants in this enum [INFO] [stdout] 57 | QueryConfig, [INFO] [stdout] 58 | ChangeConfig(Config), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 59 | QueryLsaByHdr(LsaHeader), [INFO] [stdout] 60 | QueryLsaByLSID(u32), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 61 | QueryLsaByLSIDAdvRouter(u32, u32), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 62 | QueryMultiLsa(Vec<(u32, u32)>), [INFO] [stdout] 63 | RemoveLsa(LsaHeader), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | QueryAllLsaByType(u8), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DatabaseRequestType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `int_type`, `area_id`, `hello_interval`, and `inf_transit_delay` are never read [INFO] [stdout] --> src/interface.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct Interface { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 16 | pub name: String, [INFO] [stdout] 17 | pub int_type: InterfaceType, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | pub area_id: u32, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 22 | pub hello_interval: u32, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 23 | pub dead_interval: u32, [INFO] [stdout] 24 | pub inf_transit_delay: u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Interface` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Broadcast`, `NBMA`, `P2MP`, and `Virtual` are never constructed [INFO] [stdout] --> src/interface.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 42 | pub enum InterfaceType { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] 43 | P2P, [INFO] [stdout] 44 | Broadcast, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 45 | NBMA, [INFO] [stdout] | ^^^^ [INFO] [stdout] 46 | P2MP, [INFO] [stdout] | ^^^^ [INFO] [stdout] 47 | Virtual, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InterfaceType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `PointToPoint` is never constructed [INFO] [stdout] --> src/interface.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 51 | pub enum InterfaceState { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 55 | PointToPoint, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InterfaceState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `InterfaceDown`, `UnloopInd`, and `LoopInd` are never constructed [INFO] [stdout] --> src/interface.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 62 | pub enum InterfaceEvent { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 63 | InterfaceUp, [INFO] [stdout] 64 | InterfaceDown, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 65 | UnloopInd, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 66 | LoopInd, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InterfaceEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Virtual` is never constructed [INFO] [stdout] --> src/lsa.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 34 | pub enum LinkType { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 38 | Virtual, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_rtr` is never used [INFO] [stdout] --> src/lsa.rs:78:12 [INFO] [stdout] | [INFO] [stdout] 57 | impl Lsa { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn get_rtr(&mut self) -> Option<&mut LsaRouter> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Start`, `SeqNumberMatch`, and `LLDown` are never constructed [INFO] [stdout] --> src/neighbor.rs:69:5 [INFO] [stdout] | [INFO] [stdout] 68 | pub enum NbrEvent { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] 69 | Start, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | SeqNumberMatch, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | LLDown, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `NbrEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `dest_id`, `mask`, `next_hop`, `metric`, and `int_addr` are never read [INFO] [stdout] --> src/route.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct RouteEntry { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 10 | pub dest_id: Ipv4Addr, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 11 | pub mask: Ipv4Addr, [INFO] [stdout] | ^^^^ [INFO] [stdout] 12 | pub next_hop: Ipv4Addr, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 13 | pub metric: u32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 14 | pub int_addr: Ipv4Addr, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RouteEntry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/database.rs:42:30 [INFO] [stdout] | [INFO] [stdout] 42 | cur_lsa_seq_num: crate::config::INIT_SEQ_NUM_LSA as i32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate::config::INIT_SEQ_NUM_LSA` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lsa` [INFO] [stdout] --> src/receiver.rs:110:49 [INFO] [stdout] | [INFO] [stdout] 110 | OSPFPacket::LinkStateAcknowledgment(lsa) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_lsa` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Config` which implements the `Copy` trait [INFO] [stdout] --> src/database.rs:110:42 [INFO] [stdout] | [INFO] [stdout] 110 | DatabaseResponse::Config(self.global_config.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.global_config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/database.rs:120:46 [INFO] [stdout] | [INFO] [stdout] 120 | .position(|x| x.same_ids(&lsa.get_hdr())); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `lsa.get_hdr()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/database.rs:205:46 [INFO] [stdout] | [INFO] [stdout] 205 | .position(|x| x.same_ids(&lsa.get_hdr())); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `lsa.get_hdr()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/database.rs:207:54 [INFO] [stdout] | [INFO] [stdout] 207 | self.lsa_list.retain(|x| !x.same_ids(&lsa.get_hdr())); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `lsa.get_hdr()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/database.rs:222:46 [INFO] [stdout] | [INFO] [stdout] 222 | .position(|x| x.same_ids(&lsa.get_hdr())); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `lsa.get_hdr()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `NBMA` contains a capitalized acronym [INFO] [stdout] --> src/interface.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | NBMA, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Nbma` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `BDR` contains a capitalized acronym [INFO] [stdout] --> src/interface.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | BDR, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Bdr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `bdr` after checking its variant with `is_some` [INFO] [stdout] --> src/interface.rs:280:18 [INFO] [stdout] | [INFO] [stdout] 279 | if bdr.is_some() { [INFO] [stdout] | ---------------- help: try: `if let Some() = bdr` [INFO] [stdout] 280 | Some(bdr.unwrap().nbr_ip) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/interface.rs:258:21 [INFO] [stdout] | [INFO] [stdout] 258 | candidates: &'a Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 258 - candidates: &'a Vec, [INFO] [stdout] 258 + candidates: &'a [Neighbor], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/interface.rs:270:34 [INFO] [stdout] | [INFO] [stdout] 270 | if bdr.is_none() { [INFO] [stdout] | __________________________________^ [INFO] [stdout] 271 | | bdr = Some(nbr); [INFO] [stdout] 272 | | } else if nbr.nbr_pri > bdr.unwrap().nbr_pri [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/interface.rs:274:17 [INFO] [stdout] | [INFO] [stdout] 274 | / { [INFO] [stdout] 275 | | bdr = Some(nbr); [INFO] [stdout] 276 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `dr` after checking its variant with `is_some` [INFO] [stdout] --> src/interface.rs:302:18 [INFO] [stdout] | [INFO] [stdout] 301 | if dr.is_some() { [INFO] [stdout] | --------------- help: try: `if let Some() = dr` [INFO] [stdout] 302 | Some(dr.unwrap().nbr_ip) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/interface.rs:286:48 [INFO] [stdout] | [INFO] [stdout] 286 | fn elect_once_dr<'a>(&'a self, candidates: &'a Vec) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 286 - fn elect_once_dr<'a>(&'a self, candidates: &'a Vec) -> Option { [INFO] [stdout] 286 + fn elect_once_dr<'a>(&'a self, candidates: &'a [Neighbor]) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/interface.rs:292:33 [INFO] [stdout] | [INFO] [stdout] 292 | if dr.is_none() { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 293 | | dr = Some(nbr); [INFO] [stdout] 294 | | } else if nbr.nbr_pri > dr.unwrap().nbr_pri [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/interface.rs:296:17 [INFO] [stdout] | [INFO] [stdout] 296 | / { [INFO] [stdout] 297 | | dr = Some(nbr); [INFO] [stdout] 298 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `interface` [INFO] [stdout] --> src/sender.rs:45:77 [INFO] [stdout] | [INFO] [stdout] 45 | SenderRequestType::SendOSPFPacket(mut packet, (src_ip, dst_ip), interface) => { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interface` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/interface_query.rs:117:12 [INFO] [stdout] | [INFO] [stdout] 117 | if nbr_ip_list.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `nbr_ip_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LS_REFRESH_TIME` is never used [INFO] [stdout] --> src/config.rs:3:11 [INFO] [stdout] | [INFO] [stdout] 3 | pub const LS_REFRESH_TIME: u32 = 1800; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MIN_LS_INTERVAL` is never used [INFO] [stdout] --> src/config.rs:4:11 [INFO] [stdout] | [INFO] [stdout] 4 | pub const MIN_LS_INTERVAL: u32 = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MIN_LS_ARRIVAL` is never used [INFO] [stdout] --> src/config.rs:5:11 [INFO] [stdout] | [INFO] [stdout] 5 | pub const MIN_LS_ARRIVAL: u32 = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LS_INFINITY` is never used [INFO] [stdout] --> src/config.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | pub const LS_INFINITY: u32 = 0xFF_FFFF; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ChangeConfig`, `QueryLsaByLSID`, `QueryLsaByLSIDAdvRouter`, `RemoveLsa`, and `QueryAllLsaByType` are never constructed [INFO] [stdout] --> src/database.rs:58:5 [INFO] [stdout] | [INFO] [stdout] 56 | pub enum DatabaseRequestType { [INFO] [stdout] | ------------------- variants in this enum [INFO] [stdout] 57 | QueryConfig, [INFO] [stdout] 58 | ChangeConfig(Config), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 59 | QueryLsaByHdr(LsaHeader), [INFO] [stdout] 60 | QueryLsaByLSID(u32), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 61 | QueryLsaByLSIDAdvRouter(u32, u32), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 62 | QueryMultiLsa(Vec<(u32, u32)>), [INFO] [stdout] 63 | RemoveLsa(LsaHeader), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | QueryAllLsaByType(u8), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DatabaseRequestType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `int_type`, `area_id`, `hello_interval`, and `inf_transit_delay` are never read [INFO] [stdout] --> src/interface.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct Interface { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 16 | pub name: String, [INFO] [stdout] 17 | pub int_type: InterfaceType, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | pub area_id: u32, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 22 | pub hello_interval: u32, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 23 | pub dead_interval: u32, [INFO] [stdout] 24 | pub inf_transit_delay: u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Interface` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Broadcast`, `NBMA`, `P2MP`, and `Virtual` are never constructed [INFO] [stdout] --> src/interface.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 42 | pub enum InterfaceType { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] 43 | P2P, [INFO] [stdout] 44 | Broadcast, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 45 | NBMA, [INFO] [stdout] | ^^^^ [INFO] [stdout] 46 | P2MP, [INFO] [stdout] | ^^^^ [INFO] [stdout] 47 | Virtual, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InterfaceType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `PointToPoint` is never constructed [INFO] [stdout] --> src/interface.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 51 | pub enum InterfaceState { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 55 | PointToPoint, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InterfaceState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `InterfaceDown`, `UnloopInd`, and `LoopInd` are never constructed [INFO] [stdout] --> src/interface.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 62 | pub enum InterfaceEvent { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 63 | InterfaceUp, [INFO] [stdout] 64 | InterfaceDown, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 65 | UnloopInd, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 66 | LoopInd, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InterfaceEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Virtual` is never constructed [INFO] [stdout] --> src/lsa.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 34 | pub enum LinkType { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 38 | Virtual, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_rtr` is never used [INFO] [stdout] --> src/lsa.rs:78:12 [INFO] [stdout] | [INFO] [stdout] 57 | impl Lsa { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn get_rtr(&mut self) -> Option<&mut LsaRouter> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Start`, `SeqNumberMatch`, and `LLDown` are never constructed [INFO] [stdout] --> src/neighbor.rs:69:5 [INFO] [stdout] | [INFO] [stdout] 68 | pub enum NbrEvent { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] 69 | Start, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | SeqNumberMatch, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | LLDown, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `NbrEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `dest_id`, `mask`, `next_hop`, `metric`, and `int_addr` are never read [INFO] [stdout] --> src/route.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct RouteEntry { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 10 | pub dest_id: Ipv4Addr, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 11 | pub mask: Ipv4Addr, [INFO] [stdout] | ^^^^ [INFO] [stdout] 12 | pub next_hop: Ipv4Addr, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 13 | pub metric: u32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 14 | pub int_addr: Ipv4Addr, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RouteEntry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same prefix: `Lsa` [INFO] [stdout] --> src/lsa.rs:25:1 [INFO] [stdout] | [INFO] [stdout] 25 | / pub enum LsaType { [INFO] [stdout] 26 | | LsaRouter = 1, [INFO] [stdout] 27 | | LsaNetwork, [INFO] [stdout] 28 | | LsaSumnet, [INFO] [stdout] 29 | | LsaSumasb, [INFO] [stdout] 30 | | LsaAsexternal, [INFO] [stdout] 31 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/lsa.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | LsaSumnet(LsaSum), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/lsa.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | LsaSumasb(LsaSum), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same prefix: `Lsa` [INFO] [stdout] --> src/lsa.rs:42:1 [INFO] [stdout] | [INFO] [stdout] 42 | / pub enum Lsa { [INFO] [stdout] 43 | | LsaRouter(LsaRouter), [INFO] [stdout] 44 | | LsaNetwork(LsaNetwork), [INFO] [stdout] 45 | | LsaSumnet(LsaSum), [INFO] [stdout] 46 | | LsaSumasb(LsaSum), [INFO] [stdout] 47 | | LsaAsexternal(LsaAsexternal), [INFO] [stdout] 48 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/database.rs:42:30 [INFO] [stdout] | [INFO] [stdout] 42 | cur_lsa_seq_num: crate::config::INIT_SEQ_NUM_LSA as i32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `crate::config::INIT_SEQ_NUM_LSA` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting the result of `i32::abs()` to u32 [INFO] [stdout] --> src/lsa.rs:109:19 [INFO] [stdout] | [INFO] [stdout] 109 | } else if (my_hdr.age as i32 - oth_hdr.age as i32).abs() as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(my_hdr.age as i32 - oth_hdr.age as i32).unsigned_abs()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_abs_to_unsigned [INFO] [stdout] = note: `#[warn(clippy::cast_abs_to_unsigned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/lsa.rs:189:39 [INFO] [stdout] | [INFO] [stdout] 189 | self.get_mut_hdr().checksum = sum as u16; [INFO] [stdout] | ^^^^^^^^^^ help: try: `sum` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Config` which implements the `Copy` trait [INFO] [stdout] --> src/database.rs:110:42 [INFO] [stdout] | [INFO] [stdout] 110 | DatabaseResponse::Config(self.global_config.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.global_config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/database.rs:120:46 [INFO] [stdout] | [INFO] [stdout] 120 | .position(|x| x.same_ids(&lsa.get_hdr())); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `lsa.get_hdr()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/database.rs:205:46 [INFO] [stdout] | [INFO] [stdout] 205 | .position(|x| x.same_ids(&lsa.get_hdr())); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `lsa.get_hdr()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/database.rs:207:54 [INFO] [stdout] | [INFO] [stdout] 207 | self.lsa_list.retain(|x| !x.same_ids(&lsa.get_hdr())); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `lsa.get_hdr()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/database.rs:222:46 [INFO] [stdout] | [INFO] [stdout] 222 | .position(|x| x.same_ids(&lsa.get_hdr())); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `lsa.get_hdr()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `NBMA` contains a capitalized acronym [INFO] [stdout] --> src/interface.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | NBMA, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Nbma` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `BDR` contains a capitalized acronym [INFO] [stdout] --> src/interface.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | BDR, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Bdr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/neighbor.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | / match self { [INFO] [stdout] 43 | | NbrState::Down | NbrState::Attempt => true, [INFO] [stdout] 44 | | _ => false, [INFO] [stdout] 45 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 42 - match self { [INFO] [stdout] 43 - NbrState::Down | NbrState::Attempt => true, [INFO] [stdout] 44 - _ => false, [INFO] [stdout] 45 - } [INFO] [stdout] 42 + matches!(self, NbrState::Down | NbrState::Attempt) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/neighbor.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / match self { [INFO] [stdout] 50 | | NbrState::ExStart | NbrState::Exchange | NbrState::Loading | NbrState::Full => true, [INFO] [stdout] 51 | | _ => false, [INFO] [stdout] 52 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 49 - match self { [INFO] [stdout] 50 - NbrState::ExStart | NbrState::Exchange | NbrState::Loading | NbrState::Full => true, [INFO] [stdout] 51 - _ => false, [INFO] [stdout] 52 - } [INFO] [stdout] 49 + matches!(self, NbrState::ExStart | NbrState::Exchange | NbrState::Loading | NbrState::Full) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/neighbor.rs:56:9 [INFO] [stdout] | [INFO] [stdout] 56 | / match self { [INFO] [stdout] 57 | | NbrState::Down | NbrState::Attempt | NbrState::Init => false, [INFO] [stdout] 58 | | _ => true, [INFO] [stdout] 59 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 56 - match self { [INFO] [stdout] 57 - NbrState::Down | NbrState::Attempt | NbrState::Init => false, [INFO] [stdout] 58 - _ => true, [INFO] [stdout] 59 - } [INFO] [stdout] 56 + !matches!(self, NbrState::Down | NbrState::Attempt | NbrState::Init) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `bdr` after checking its variant with `is_some` [INFO] [stdout] --> src/interface.rs:280:18 [INFO] [stdout] | [INFO] [stdout] 279 | if bdr.is_some() { [INFO] [stdout] | ---------------- help: try: `if let Some() = bdr` [INFO] [stdout] 280 | Some(bdr.unwrap().nbr_ip) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/interface.rs:258:21 [INFO] [stdout] | [INFO] [stdout] 258 | candidates: &'a Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 258 - candidates: &'a Vec, [INFO] [stdout] 258 + candidates: &'a [Neighbor], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/interface.rs:270:34 [INFO] [stdout] | [INFO] [stdout] 270 | if bdr.is_none() { [INFO] [stdout] | __________________________________^ [INFO] [stdout] 271 | | bdr = Some(nbr); [INFO] [stdout] 272 | | } else if nbr.nbr_pri > bdr.unwrap().nbr_pri [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/interface.rs:274:17 [INFO] [stdout] | [INFO] [stdout] 274 | / { [INFO] [stdout] 275 | | bdr = Some(nbr); [INFO] [stdout] 276 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `dr` after checking its variant with `is_some` [INFO] [stdout] --> src/interface.rs:302:18 [INFO] [stdout] | [INFO] [stdout] 301 | if dr.is_some() { [INFO] [stdout] | --------------- help: try: `if let Some() = dr` [INFO] [stdout] 302 | Some(dr.unwrap().nbr_ip) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/interface.rs:286:48 [INFO] [stdout] | [INFO] [stdout] 286 | fn elect_once_dr<'a>(&'a self, candidates: &'a Vec) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 286 - fn elect_once_dr<'a>(&'a self, candidates: &'a Vec) -> Option { [INFO] [stdout] 286 + fn elect_once_dr<'a>(&'a self, candidates: &'a [Neighbor]) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/interface.rs:292:33 [INFO] [stdout] | [INFO] [stdout] 292 | if dr.is_none() { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 293 | | dr = Some(nbr); [INFO] [stdout] 294 | | } else if nbr.nbr_pri > dr.unwrap().nbr_pri [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/interface.rs:296:17 [INFO] [stdout] | [INFO] [stdout] 296 | / { [INFO] [stdout] 297 | | dr = Some(nbr); [INFO] [stdout] 298 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `DBD` contains a capitalized acronym [INFO] [stdout] --> src/packets.rs:132:5 [INFO] [stdout] | [INFO] [stdout] 132 | DBD, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Dbd` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `LSR` contains a capitalized acronym [INFO] [stdout] --> src/packets.rs:133:5 [INFO] [stdout] | [INFO] [stdout] 133 | LSR, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Lsr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `LSU` contains a capitalized acronym [INFO] [stdout] --> src/packets.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | LSU, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Lsu` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/interface_query.rs:117:12 [INFO] [stdout] | [INFO] [stdout] 117 | if nbr_ip_list.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `nbr_ip_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/packets.rs:173:9 [INFO] [stdout] | [INFO] [stdout] 173 | return (self.flags & 0b1110_0000) == 0b1110_0000; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 173 - return (self.flags & 0b1110_0000) == 0b1110_0000; [INFO] [stdout] 173 + (self.flags & 0b1110_0000) == 0b1110_0000 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same prefix: `Lsa` [INFO] [stdout] --> src/lsa.rs:25:1 [INFO] [stdout] | [INFO] [stdout] 25 | / pub enum LsaType { [INFO] [stdout] 26 | | LsaRouter = 1, [INFO] [stdout] 27 | | LsaNetwork, [INFO] [stdout] 28 | | LsaSumnet, [INFO] [stdout] 29 | | LsaSumasb, [INFO] [stdout] 30 | | LsaAsexternal, [INFO] [stdout] 31 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/lsa.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | LsaSumnet(LsaSum), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/lsa.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | LsaSumasb(LsaSum), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same prefix: `Lsa` [INFO] [stdout] --> src/lsa.rs:42:1 [INFO] [stdout] | [INFO] [stdout] 42 | / pub enum Lsa { [INFO] [stdout] 43 | | LsaRouter(LsaRouter), [INFO] [stdout] 44 | | LsaNetwork(LsaNetwork), [INFO] [stdout] 45 | | LsaSumnet(LsaSum), [INFO] [stdout] 46 | | LsaSumasb(LsaSum), [INFO] [stdout] 47 | | LsaAsexternal(LsaAsexternal), [INFO] [stdout] 48 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting the result of `i32::abs()` to u32 [INFO] [stdout] --> src/lsa.rs:109:19 [INFO] [stdout] | [INFO] [stdout] 109 | } else if (my_hdr.age as i32 - oth_hdr.age as i32).abs() as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(my_hdr.age as i32 - oth_hdr.age as i32).unsigned_abs()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_abs_to_unsigned [INFO] [stdout] = note: `#[warn(clippy::cast_abs_to_unsigned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/lsa.rs:189:39 [INFO] [stdout] | [INFO] [stdout] 189 | self.get_mut_hdr().checksum = sum as u16; [INFO] [stdout] | ^^^^^^^^^^ help: try: `sum` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/receiver.rs:193:25 [INFO] [stdout] | [INFO] [stdout] 193 | let dbd_duped = (!sender_nbr.last_rcv_dbd.is_none()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `sender_nbr.last_rcv_dbd.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/receiver.rs:375:20 [INFO] [stdout] | [INFO] [stdout] 375 | if sender_nbr.db_summary_list.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!sender_nbr.db_summary_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/receiver.rs:412:24 [INFO] [stdout] | [INFO] [stdout] 412 | if sender_nbr.db_summary_list.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!sender_nbr.db_summary_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/receiver.rs:583:57 [INFO] [stdout] | [INFO] [stdout] 583 | if sender_nbr.state == NbrState::Loading && sender_nbr.link_state_req_list.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `sender_nbr.link_state_req_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/neighbor.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | / match self { [INFO] [stdout] 43 | | NbrState::Down | NbrState::Attempt => true, [INFO] [stdout] 44 | | _ => false, [INFO] [stdout] 45 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 42 - match self { [INFO] [stdout] 43 - NbrState::Down | NbrState::Attempt => true, [INFO] [stdout] 44 - _ => false, [INFO] [stdout] 45 - } [INFO] [stdout] 42 + matches!(self, NbrState::Down | NbrState::Attempt) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/neighbor.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / match self { [INFO] [stdout] 50 | | NbrState::ExStart | NbrState::Exchange | NbrState::Loading | NbrState::Full => true, [INFO] [stdout] 51 | | _ => false, [INFO] [stdout] 52 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 49 - match self { [INFO] [stdout] 50 - NbrState::ExStart | NbrState::Exchange | NbrState::Loading | NbrState::Full => true, [INFO] [stdout] 51 - _ => false, [INFO] [stdout] 52 - } [INFO] [stdout] 49 + matches!(self, NbrState::ExStart | NbrState::Exchange | NbrState::Loading | NbrState::Full) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/neighbor.rs:56:9 [INFO] [stdout] | [INFO] [stdout] 56 | / match self { [INFO] [stdout] 57 | | NbrState::Down | NbrState::Attempt | NbrState::Init => false, [INFO] [stdout] 58 | | _ => true, [INFO] [stdout] 59 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 56 - match self { [INFO] [stdout] 57 - NbrState::Down | NbrState::Attempt | NbrState::Init => false, [INFO] [stdout] 58 - _ => true, [INFO] [stdout] 59 - } [INFO] [stdout] 56 + !matches!(self, NbrState::Down | NbrState::Attempt | NbrState::Init) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/route.rs:92:13 [INFO] [stdout] | [INFO] [stdout] 92 | / match lsa { [INFO] [stdout] 93 | | Lsa::LsaSumnet(l) => { [INFO] [stdout] 94 | | // self-originated [INFO] [stdout] 95 | | if l.header.advertising_router == self.global_config.router_id { [INFO] [stdout] ... | [INFO] [stdout] 128 | | _ => {} [INFO] [stdout] 129 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 92 ~ if let Lsa::LsaSumnet(l) = lsa { [INFO] [stdout] 93 + // self-originated [INFO] [stdout] 94 + if l.header.advertising_router == self.global_config.router_id { [INFO] [stdout] 95 + continue; [INFO] [stdout] 96 + } [INFO] [stdout] 97 + let adv_rtr = self [INFO] [stdout] 98 + .route_table [INFO] [stdout] 99 + .nodes [INFO] [stdout] 100 + .get(&Ipv4Addr::from(l.header.advertising_router)); [INFO] [stdout] 101 + // if the advertising router is not in the route table, skip [INFO] [stdout] 102 + if adv_rtr.is_none() { [INFO] [stdout] 103 + continue; [INFO] [stdout] 104 + } [INFO] [stdout] 105 + let adv_rtr = adv_rtr.unwrap().clone(); [INFO] [stdout] 106 + // if the advertising router is not reachable, skip [INFO] [stdout] 107 + if adv_rtr.dis == u32::MAX { [INFO] [stdout] 108 + continue; [INFO] [stdout] 109 + } [INFO] [stdout] 110 + self.route_table.nodes.insert( [INFO] [stdout] 111 + Ipv4Addr::from(l.header.link_state_id), [INFO] [stdout] 112 + Node { [INFO] [stdout] 113 + id: Ipv4Addr::from(l.header.link_state_id), [INFO] [stdout] 114 + mask: Ipv4Addr::from(l.network_mask), [INFO] [stdout] 115 + dis: adv_rtr.dis, [INFO] [stdout] 116 + }, [INFO] [stdout] 117 + ); [INFO] [stdout] 118 + self.route_table.put_or_update_edge( [INFO] [stdout] 119 + adv_rtr.id, [INFO] [stdout] 120 + Ipv4Addr::from(l.header.link_state_id), [INFO] [stdout] 121 + l.metric as u32, [INFO] [stdout] 122 + ); [INFO] [stdout] 123 + self.route_table [INFO] [stdout] 124 + .prevs [INFO] [stdout] 125 + .insert(Ipv4Addr::from(l.header.link_state_id), adv_rtr.id); [INFO] [stdout] 126 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/route.rs:122:25 [INFO] [stdout] | [INFO] [stdout] 122 | l.metric as u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `l.metric` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/route.rs:195:25 [INFO] [stdout] | [INFO] [stdout] 195 | / match nlsa { [INFO] [stdout] 196 | | Lsa::LsaNetwork(n) => { [INFO] [stdout] 197 | | println!( [INFO] [stdout] 198 | | "Itering etwork lsa, ls_id: {}, adv_rtr: {}", [INFO] [stdout] ... | [INFO] [stdout] 203 | | _ => {} [INFO] [stdout] 204 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 195 ~ if let Lsa::LsaNetwork(n) = nlsa { [INFO] [stdout] 196 + println!( [INFO] [stdout] 197 + "Itering etwork lsa, ls_id: {}, adv_rtr: {}", [INFO] [stdout] 198 + Ipv4Addr::from(n.header.link_state_id), [INFO] [stdout] 199 + Ipv4Addr::from(n.header.advertising_router) [INFO] [stdout] 200 + ); [INFO] [stdout] 201 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/route.rs:272:13 [INFO] [stdout] | [INFO] [stdout] 272 | q.sort_by(|a, b| a.dis.cmp(&b.dis)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 272 - q.sort_by(|a, b| a.dis.cmp(&b.dis)); [INFO] [stdout] 272 + q.sort_by_key(|a| a.dis); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `DBD` contains a capitalized acronym [INFO] [stdout] --> src/packets.rs:132:5 [INFO] [stdout] | [INFO] [stdout] 132 | DBD, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Dbd` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `LSR` contains a capitalized acronym [INFO] [stdout] --> src/packets.rs:133:5 [INFO] [stdout] | [INFO] [stdout] 133 | LSR, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Lsr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `LSU` contains a capitalized acronym [INFO] [stdout] --> src/packets.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | LSU, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Lsu` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty `loop {}` wastes CPU cycles [INFO] [stdout] --> src/main.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 77 | loop {} [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: you should either use `panic!()` or add `std::thread::sleep(..);` to the loop body [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_loop [INFO] [stdout] = note: `#[warn(clippy::empty_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/packets.rs:173:9 [INFO] [stdout] | [INFO] [stdout] 173 | return (self.flags & 0b1110_0000) == 0b1110_0000; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 173 - return (self.flags & 0b1110_0000) == 0b1110_0000; [INFO] [stdout] 173 + (self.flags & 0b1110_0000) == 0b1110_0000 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/receiver.rs:193:25 [INFO] [stdout] | [INFO] [stdout] 193 | let dbd_duped = (!sender_nbr.last_rcv_dbd.is_none()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `sender_nbr.last_rcv_dbd.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/receiver.rs:375:20 [INFO] [stdout] | [INFO] [stdout] 375 | if sender_nbr.db_summary_list.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!sender_nbr.db_summary_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/receiver.rs:412:24 [INFO] [stdout] | [INFO] [stdout] 412 | if sender_nbr.db_summary_list.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!sender_nbr.db_summary_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/receiver.rs:583:57 [INFO] [stdout] | [INFO] [stdout] 583 | if sender_nbr.state == NbrState::Loading && sender_nbr.link_state_req_list.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `sender_nbr.link_state_req_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/route.rs:92:13 [INFO] [stdout] | [INFO] [stdout] 92 | / match lsa { [INFO] [stdout] 93 | | Lsa::LsaSumnet(l) => { [INFO] [stdout] 94 | | // self-originated [INFO] [stdout] 95 | | if l.header.advertising_router == self.global_config.router_id { [INFO] [stdout] ... | [INFO] [stdout] 128 | | _ => {} [INFO] [stdout] 129 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 92 ~ if let Lsa::LsaSumnet(l) = lsa { [INFO] [stdout] 93 + // self-originated [INFO] [stdout] 94 + if l.header.advertising_router == self.global_config.router_id { [INFO] [stdout] 95 + continue; [INFO] [stdout] 96 + } [INFO] [stdout] 97 + let adv_rtr = self [INFO] [stdout] 98 + .route_table [INFO] [stdout] 99 + .nodes [INFO] [stdout] 100 + .get(&Ipv4Addr::from(l.header.advertising_router)); [INFO] [stdout] 101 + // if the advertising router is not in the route table, skip [INFO] [stdout] 102 + if adv_rtr.is_none() { [INFO] [stdout] 103 + continue; [INFO] [stdout] 104 + } [INFO] [stdout] 105 + let adv_rtr = adv_rtr.unwrap().clone(); [INFO] [stdout] 106 + // if the advertising router is not reachable, skip [INFO] [stdout] 107 + if adv_rtr.dis == u32::MAX { [INFO] [stdout] 108 + continue; [INFO] [stdout] 109 + } [INFO] [stdout] 110 + self.route_table.nodes.insert( [INFO] [stdout] 111 + Ipv4Addr::from(l.header.link_state_id), [INFO] [stdout] 112 + Node { [INFO] [stdout] 113 + id: Ipv4Addr::from(l.header.link_state_id), [INFO] [stdout] 114 + mask: Ipv4Addr::from(l.network_mask), [INFO] [stdout] 115 + dis: adv_rtr.dis, [INFO] [stdout] 116 + }, [INFO] [stdout] 117 + ); [INFO] [stdout] 118 + self.route_table.put_or_update_edge( [INFO] [stdout] 119 + adv_rtr.id, [INFO] [stdout] 120 + Ipv4Addr::from(l.header.link_state_id), [INFO] [stdout] 121 + l.metric as u32, [INFO] [stdout] 122 + ); [INFO] [stdout] 123 + self.route_table [INFO] [stdout] 124 + .prevs [INFO] [stdout] 125 + .insert(Ipv4Addr::from(l.header.link_state_id), adv_rtr.id); [INFO] [stdout] 126 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/route.rs:122:25 [INFO] [stdout] | [INFO] [stdout] 122 | l.metric as u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `l.metric` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/route.rs:195:25 [INFO] [stdout] | [INFO] [stdout] 195 | / match nlsa { [INFO] [stdout] 196 | | Lsa::LsaNetwork(n) => { [INFO] [stdout] 197 | | println!( [INFO] [stdout] 198 | | "Itering etwork lsa, ls_id: {}, adv_rtr: {}", [INFO] [stdout] ... | [INFO] [stdout] 203 | | _ => {} [INFO] [stdout] 204 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 195 ~ if let Lsa::LsaNetwork(n) = nlsa { [INFO] [stdout] 196 + println!( [INFO] [stdout] 197 + "Itering etwork lsa, ls_id: {}, adv_rtr: {}", [INFO] [stdout] 198 + Ipv4Addr::from(n.header.link_state_id), [INFO] [stdout] 199 + Ipv4Addr::from(n.header.advertising_router) [INFO] [stdout] 200 + ); [INFO] [stdout] 201 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/route.rs:272:13 [INFO] [stdout] | [INFO] [stdout] 272 | q.sort_by(|a, b| a.dis.cmp(&b.dis)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 272 - q.sort_by(|a, b| a.dis.cmp(&b.dis)); [INFO] [stdout] 272 + q.sort_by_key(|a| a.dis); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty `loop {}` wastes CPU cycles [INFO] [stdout] --> src/main.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 77 | loop {} [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: you should either use `panic!()` or add `std::thread::sleep(..);` to the loop body [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_loop [INFO] [stdout] = note: `#[warn(clippy::empty_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 19.30s [INFO] running `Command { std: "docker" "inspect" "96f5efb380ff979f5635183714cb1115891d4af13c1fe32fcccb5592df1b6f39", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "96f5efb380ff979f5635183714cb1115891d4af13c1fe32fcccb5592df1b6f39", kill_on_drop: false }` [INFO] [stdout] 96f5efb380ff979f5635183714cb1115891d4af13c1fe32fcccb5592df1b6f39