[INFO] cloning repository https://github.com/ssande7/i3_companion [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ssande7/i3_companion" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fssande7%2Fi3_companion", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fssande7%2Fi3_companion'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 3f4e94a62f14aea1851757ee5497c24d4f0d12b7 [INFO] linting ssande7/i3_companion against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fssande7%2Fi3_companion" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/ssande7/i3_companion [INFO] finished tweaking git repo https://github.com/ssande7/i3_companion [INFO] tweaked toml for git repo https://github.com/ssande7/i3_companion written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/ssande7/i3_companion 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/ssande7/i3_companion 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] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded dirs-sys v0.3.7 [INFO] [stderr] Downloaded dirs v4.0.0 [INFO] [stderr] Downloaded i3ipc-types v0.16.0 [INFO] [stderr] Downloaded dirs-sys-next v0.1.2 [INFO] [stderr] Downloaded futures-io v0.3.30 [INFO] [stderr] Downloaded fastrand v2.1.0 [INFO] [stderr] Downloaded windows-implement v0.56.0 [INFO] [stderr] Downloaded async-signal v0.2.10 [INFO] [stderr] Downloaded windows-result v0.1.2 [INFO] [stderr] Downloaded async-process v2.2.4 [INFO] [stderr] Downloaded thiserror v1.0.63 [INFO] [stderr] Downloaded thiserror-impl v1.0.63 [INFO] [stderr] Downloaded ordered-stream v0.2.0 [INFO] [stderr] Downloaded autocfg v1.3.0 [INFO] [stderr] Downloaded zbus_macros v4.4.0 [INFO] [stderr] Downloaded async-executor v1.13.0 [INFO] [stderr] Downloaded objc v0.2.7 [INFO] [stderr] Downloaded pin-project-lite v0.2.14 [INFO] [stderr] Downloaded async-trait v0.1.81 [INFO] [stderr] Downloaded async-fs v2.1.2 [INFO] [stderr] Downloaded concurrent-queue v2.5.0 [INFO] [stderr] Downloaded futures-core v0.3.30 [INFO] [stderr] Downloaded zvariant_derive v4.2.0 [INFO] [stderr] Downloaded tokio-util v0.6.10 [INFO] [stderr] Downloaded async-task v4.7.1 [INFO] [stderr] Downloaded blocking v1.6.1 [INFO] [stderr] Downloaded crossbeam-utils v0.8.20 [INFO] [stderr] Downloaded async-io v2.3.4 [INFO] [stderr] Downloaded tauri-winrt-notification v0.2.1 [INFO] [stderr] Downloaded windows-core v0.56.0 [INFO] [stderr] Downloaded once_cell v1.19.0 [INFO] [stderr] Downloaded async-lock v3.4.0 [INFO] [stderr] Downloaded futures-lite v2.3.0 [INFO] [stderr] Downloaded tempfile v3.12.0 [INFO] [stderr] Downloaded tokio-stream v0.1.15 [INFO] [stderr] Downloaded serde v1.0.207 [INFO] [stderr] Downloaded addr2line v0.22.0 [INFO] [stderr] Downloaded uds_windows v1.1.0 [INFO] [stderr] Downloaded notify-rust v4.11.1 [INFO] [stderr] Downloaded event-listener v5.3.1 [INFO] [stderr] Downloaded bytes v1.7.1 [INFO] [stderr] Downloaded polling v3.7.3 [INFO] [stderr] Downloaded miniz_oxide v0.7.4 [INFO] [stderr] Downloaded enumflags2 v0.7.10 [INFO] [stderr] Downloaded serde_derive v1.0.207 [INFO] [stderr] Downloaded async-broadcast v0.7.1 [INFO] [stderr] Downloaded tracing-attributes v0.1.27 [INFO] [stderr] Downloaded xdg-home v1.3.0 [INFO] [stderr] Downloaded enumflags2_derive v0.7.10 [INFO] [stderr] Downloaded adler v1.0.2 [INFO] [stderr] Downloaded dirs-next v2.0.0 [INFO] [stderr] Downloaded objc-foundation v0.1.1 [INFO] [stderr] Downloaded objc_id v0.1.1 [INFO] [stderr] Downloaded windows-version v0.1.1 [INFO] [stderr] Downloaded event-listener-strategy v0.5.2 [INFO] [stderr] Downloaded glob v0.3.1 [INFO] [stderr] Downloaded redox_users v0.4.5 [INFO] [stderr] Downloaded block v0.1.6 [INFO] [stderr] Downloaded zvariant v4.2.0 [INFO] [stderr] Downloaded malloc_buf v0.0.6 [INFO] [stderr] Downloaded mac-notification-sys v0.6.1 [INFO] [stderr] Downloaded cc v1.1.12 [INFO] [stderr] Downloaded windows-interface v0.56.0 [INFO] [stderr] Downloaded hermit-abi v0.4.0 [INFO] [stderr] Downloaded async-recursion v1.1.1 [INFO] [stderr] Downloaded indexmap v2.4.0 [INFO] [stderr] Downloaded tokio-util v0.7.11 [INFO] [stderr] Downloaded backtrace v0.3.73 [INFO] [stderr] Downloaded toml_edit v0.21.1 [INFO] [stderr] Downloaded async-channel v2.3.1 [INFO] [stderr] Downloaded parking v2.2.0 [INFO] [stderr] Downloaded futures-task v0.3.30 [INFO] [stderr] Downloaded errno v0.3.9 [INFO] [stderr] Downloaded zbus_names v3.0.0 [INFO] [stderr] Downloaded endi v1.1.0 [INFO] [stderr] Downloaded proc-macro-crate v3.1.0 [INFO] [stderr] Downloaded zvariant_utils v2.1.0 [INFO] [stderr] Downloaded shellwords v1.1.0 [INFO] [stderr] Downloaded serde_repr v0.1.19 [INFO] [stderr] Downloaded tokio-i3ipc v0.16.0 [INFO] [stderr] Downloaded futures-sink v0.3.30 [INFO] [stderr] Downloaded time v0.3.36 [INFO] [stderr] Downloaded quote v1.0.36 [INFO] [stderr] Downloaded unicode-ident v1.0.12 [INFO] [stderr] Downloaded libredox v0.1.3 [INFO] [stderr] Downloaded piper v0.2.4 [INFO] [stderr] Downloaded serde_json v1.0.125 [INFO] [stderr] Downloaded cpufeatures v0.2.13 [INFO] [stderr] Downloaded proc-macro2 v1.0.86 [INFO] [stderr] Downloaded zbus v4.4.0 [INFO] [stderr] Downloaded quick-xml v0.31.0 [INFO] [stderr] Downloaded syn v2.0.74 [INFO] [stderr] Downloaded futures-util v0.3.30 [INFO] [stderr] Downloaded winnow v0.5.40 [INFO] [stderr] Downloaded regex v1.10.6 [INFO] [stderr] Downloaded gimli v0.29.0 [INFO] [stderr] Downloaded object v0.36.3 [INFO] [stderr] Downloaded regex-syntax v0.8.4 [INFO] [stderr] Downloaded rustix v0.38.34 [INFO] [stderr] Downloaded regex-automata v0.4.7 [INFO] [stderr] Downloaded libc v0.2.155 [INFO] [stderr] Downloaded tokio v1.39.2 [INFO] [stderr] Downloaded linux-raw-sys v0.4.14 [INFO] [stderr] Downloaded windows v0.56.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 3c519e26fff02271b1db14f2a3840253474e2b24f14f1a2786816b4c7411062d [INFO] running `Command { std: "docker" "start" "-a" "3c519e26fff02271b1db14f2a3840253474e2b24f14f1a2786816b4c7411062d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3c519e26fff02271b1db14f2a3840253474e2b24f14f1a2786816b4c7411062d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3c519e26fff02271b1db14f2a3840253474e2b24f14f1a2786816b4c7411062d", kill_on_drop: false }` [INFO] [stdout] 3c519e26fff02271b1db14f2a3840253474e2b24f14f1a2786816b4c7411062d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 5b47cef54371604b4cdf468edc336adb09f5a2f1c62a8887ee4c0b7f8e04366a [INFO] running `Command { std: "docker" "start" "-a" "5b47cef54371604b4cdf468edc336adb09f5a2f1c62a8887ee4c0b7f8e04366a", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.86 [INFO] [stderr] Compiling unicode-ident v1.0.12 [INFO] [stderr] Checking pin-project-lite v0.2.14 [INFO] [stderr] Compiling libc v0.2.155 [INFO] [stderr] Checking futures-core v0.3.30 [INFO] [stderr] Compiling crossbeam-utils v0.8.20 [INFO] [stderr] Checking parking v2.2.0 [INFO] [stderr] Compiling autocfg v1.3.0 [INFO] [stderr] Compiling serde v1.0.207 [INFO] [stderr] Checking memchr v2.7.4 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling typenum v1.17.0 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling equivalent v1.0.1 [INFO] [stderr] Checking futures-io v0.3.30 [INFO] [stderr] Compiling toml_datetime v0.6.8 [INFO] [stderr] Compiling winnow v0.5.40 [INFO] [stderr] Checking fastrand v2.1.0 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Checking once_cell v1.19.0 [INFO] [stderr] Checking bitflags v2.6.0 [INFO] [stderr] Checking futures-sink v0.3.30 [INFO] [stderr] Compiling rustix v0.38.34 [INFO] [stderr] Checking futures-lite v2.3.0 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Checking bytes v1.7.1 [INFO] [stderr] Checking tracing-core v0.1.32 [INFO] [stderr] Checking linux-raw-sys v0.4.14 [INFO] [stderr] Compiling cfg_aliases v0.2.1 [INFO] [stderr] Checking atomic-waker v1.1.2 [INFO] [stderr] Checking async-task v4.7.1 [INFO] [stderr] Compiling nix v0.29.0 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Compiling memoffset v0.9.1 [INFO] [stderr] Checking piper v0.2.4 [INFO] [stderr] Checking concurrent-queue v2.5.0 [INFO] [stderr] Compiling quote v1.0.36 [INFO] [stderr] Compiling serde_json v1.0.125 [INFO] [stderr] Checking static_assertions v1.1.0 [INFO] [stderr] Checking endi v1.1.0 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking event-listener v5.3.1 [INFO] [stderr] Compiling syn v2.0.74 [INFO] [stderr] Checking regex-syntax v0.8.4 [INFO] [stderr] Checking event-listener-strategy v0.5.2 [INFO] [stderr] Checking ryu v1.0.18 [INFO] [stderr] Checking itoa v1.0.11 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Checking futures-task v0.3.30 [INFO] [stderr] Checking cpufeatures v0.2.13 [INFO] [stderr] Checking ordered-stream v0.2.0 [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Checking async-channel v2.3.1 [INFO] [stderr] Checking async-lock v3.4.0 [INFO] [stderr] Checking futures-util v0.3.30 [INFO] [stderr] Checking async-broadcast v0.7.1 [INFO] [stderr] Checking hex v0.4.3 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Checking glob v0.3.1 [INFO] [stderr] Compiling indexmap v2.4.0 [INFO] [stderr] Checking blocking v1.6.1 [INFO] [stderr] Checking async-executor v1.13.0 [INFO] [stderr] Checking async-fs v2.1.2 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking mio v1.0.2 [INFO] [stderr] Checking socket2 v0.5.7 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Checking xdg-home v1.3.0 [INFO] [stderr] Checking dirs-sys v0.3.7 [INFO] [stderr] Checking dirs v4.0.0 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Compiling toml_edit v0.21.1 [INFO] [stderr] Checking regex-automata v0.4.7 [INFO] [stderr] Compiling proc-macro-crate v3.1.0 [INFO] [stderr] Compiling zvariant_utils v2.1.0 [INFO] [stderr] Checking regex v1.10.6 [INFO] [stderr] Checking shellwords v1.1.0 [INFO] [stderr] Compiling serde_derive v1.0.207 [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Compiling tokio-macros v2.4.0 [INFO] [stderr] Compiling tracing-attributes v0.1.27 [INFO] [stderr] Compiling enumflags2_derive v0.7.10 [INFO] [stderr] Compiling zvariant_derive v4.2.0 [INFO] [stderr] Compiling serde_repr v0.1.19 [INFO] [stderr] Compiling zbus_macros v4.4.0 [INFO] [stderr] Compiling async-trait v0.1.81 [INFO] [stderr] Checking tokio v1.39.2 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Checking tracing v0.1.40 [INFO] [stderr] Checking polling v3.7.3 [INFO] [stderr] Checking ppv-lite86 v0.2.20 [INFO] [stderr] Checking async-io v2.3.4 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking tokio-util v0.7.11 [INFO] [stderr] Checking tokio-stream v0.1.15 [INFO] [stderr] Checking tokio-util v0.6.10 [INFO] [stderr] Checking enumflags2 v0.7.10 [INFO] [stderr] Checking toml v0.5.11 [INFO] [stderr] Checking zvariant v4.2.0 [INFO] [stderr] Checking i3ipc-types v0.16.0 [INFO] [stderr] Checking tokio-i3ipc v0.16.0 [INFO] [stderr] Checking zbus_names v3.0.0 [INFO] [stderr] Checking zbus v4.4.0 [INFO] [stderr] Checking notify-rust v4.11.1 [INFO] [stderr] Checking i3-companion v0.1.4 (/opt/rustwide/workdir) [INFO] [stdout] warning: field `pipes` is never read [INFO] [stdout] --> src/types/config.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 54 | pub struct Config { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 60 | pub pipes: Option>>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `pipes` is never read [INFO] [stdout] --> src/types/config.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 54 | pub struct Config { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 60 | pub pipes: Option>>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/types/layout_tracker.rs:133:8 [INFO] [stdout] | [INFO] [stdout] 133 | if node.focused.focus.len() == 0 || node.focused.focused { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `node.focused.focus.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: length comparison to zero [INFO] [stdout] --> src/types/layout_tracker.rs:133:8 [INFO] [stdout] | [INFO] [stdout] 133 | if node.focused.focus.len() == 0 || node.focused.focused { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `node.focused.focus.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: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | Self { 0: d } [INFO] [stdout] | ^^^^^^^^^^^^^ help: use tuple initialization: `Self(d)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] = note: `#[warn(clippy::init_numbered_fields)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:47:28 [INFO] [stdout] | [INFO] [stdout] 47 | "ns" => Ok(ParsableDuration { [INFO] [stdout] | ____________________________^ [INFO] [stdout] 48 | | 0: Duration::from_secs_f32(dur * 1000.0 * 1000.0 * 1000.0), [INFO] [stdout] 49 | | }), [INFO] [stdout] | |_________________^ help: use tuple initialization: `ParsableDuration(Duration::from_secs_f32(dur * 1000.0 * 1000.0 * 1000.0))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:50:28 [INFO] [stdout] | [INFO] [stdout] 50 | "us" => Ok(ParsableDuration { [INFO] [stdout] | ____________________________^ [INFO] [stdout] 51 | | 0: Duration::from_secs_f32(dur * 1000.0 * 1000.0), [INFO] [stdout] 52 | | }), [INFO] [stdout] | |_________________^ help: use tuple initialization: `ParsableDuration(Duration::from_secs_f32(dur * 1000.0 * 1000.0))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:53:28 [INFO] [stdout] | [INFO] [stdout] 53 | "ms" => Ok(ParsableDuration { [INFO] [stdout] | ____________________________^ [INFO] [stdout] 54 | | 0: Duration::from_secs_f32(dur * 1000.0), [INFO] [stdout] 55 | | }), [INFO] [stdout] | |_________________^ help: use tuple initialization: `ParsableDuration(Duration::from_secs_f32(dur * 1000.0))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:56:27 [INFO] [stdout] | [INFO] [stdout] 56 | "s" => Ok(ParsableDuration { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 57 | | 0: Duration::from_secs_f32(dur), [INFO] [stdout] 58 | | }), [INFO] [stdout] | |_________________^ help: use tuple initialization: `ParsableDuration(Duration::from_secs_f32(dur))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:59:27 [INFO] [stdout] | [INFO] [stdout] 59 | "m" => Ok(ParsableDuration { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 60 | | 0: Duration::from_secs_f32(dur / 60.0), [INFO] [stdout] 61 | | }), [INFO] [stdout] | |_________________^ help: use tuple initialization: `ParsableDuration(Duration::from_secs_f32(dur / 60.0))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:62:27 [INFO] [stdout] | [INFO] [stdout] 62 | "h" => Ok(ParsableDuration { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 63 | | 0: Duration::from_secs_f32(dur / 3600.0), [INFO] [stdout] 64 | | }), [INFO] [stdout] | |_________________^ help: use tuple initialization: `ParsableDuration(Duration::from_secs_f32(dur / 3600.0))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/types/pipe_sender.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | / for bar in bars { [INFO] [stdout] 28 | | if let Ok(pipe) = bar { [INFO] [stdout] 29 | | if let Some(fname) = pipe.to_str() { [INFO] [stdout] 30 | | match OpenOptions::new() [INFO] [stdout] ... | [INFO] [stdout] 50 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/types/pipe_sender.rs:28:17 [INFO] [stdout] | [INFO] [stdout] 28 | / if let Ok(pipe) = bar { [INFO] [stdout] 29 | | if let Some(fname) = pipe.to_str() { [INFO] [stdout] 30 | | match OpenOptions::new() [INFO] [stdout] 31 | | .write(true) [INFO] [stdout] ... | [INFO] [stdout] 49 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 27 ~ for pipe in bars.flatten() { [INFO] [stdout] 28 + if let Some(fname) = pipe.to_str() { [INFO] [stdout] 29 + match OpenOptions::new() [INFO] [stdout] 30 + .write(true) [INFO] [stdout] 31 + .append(true) [INFO] [stdout] 32 + .custom_flags(libc::O_NONBLOCK) [INFO] [stdout] 33 + .open(fname) [INFO] [stdout] 34 + { [INFO] [stdout] 35 + Ok(mut fid) => { [INFO] [stdout] 36 + if let Err(e) = fid.write(&msg.as_bytes()) { [INFO] [stdout] 37 + eprintln!("Error writing to pipe [{}]: {}", fname, e); [INFO] [stdout] 38 + } [INFO] [stdout] 39 + if let Err(e) = fid.flush() { [INFO] [stdout] 40 + eprintln!("Error flushing pipe buffer [{}]: {}", fname, e); [INFO] [stdout] 41 + } [INFO] [stdout] 42 + }, [INFO] [stdout] 43 + Err(e) => { [INFO] [stdout] 44 + eprintln!("Error opening pipe [{}]: {}", fname, e); [INFO] [stdout] 45 + } [INFO] [stdout] 46 + } [INFO] [stdout] 47 + } [INFO] [stdout] 48 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `.write(true)` because there is `.append(true)` [INFO] [stdout] --> src/types/pipe_sender.rs:31:29 [INFO] [stdout] | [INFO] [stdout] 31 | ... .write(true) [INFO] [stdout] | ^^^^^^^^^^^^ help: remove `.write(true)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ineffective_open_options [INFO] [stdout] = note: `#[warn(clippy::ineffective_open_options)]` 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/types/pipe_sender.rs:37:59 [INFO] [stdout] | [INFO] [stdout] 37 | ... if let Err(e) = fid.write(&msg.as_bytes()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `msg.as_bytes()` [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: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | Self { 0: d } [INFO] [stdout] | ^^^^^^^^^^^^^ help: use tuple initialization: `Self(d)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] = note: `#[warn(clippy::init_numbered_fields)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:47:28 [INFO] [stdout] | [INFO] [stdout] 47 | "ns" => Ok(ParsableDuration { [INFO] [stdout] | ____________________________^ [INFO] [stdout] 48 | | 0: Duration::from_secs_f32(dur * 1000.0 * 1000.0 * 1000.0), [INFO] [stdout] 49 | | }), [INFO] [stdout] | |_________________^ help: use tuple initialization: `ParsableDuration(Duration::from_secs_f32(dur * 1000.0 * 1000.0 * 1000.0))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:50:28 [INFO] [stdout] | [INFO] [stdout] 50 | "us" => Ok(ParsableDuration { [INFO] [stdout] | ____________________________^ [INFO] [stdout] 51 | | 0: Duration::from_secs_f32(dur * 1000.0 * 1000.0), [INFO] [stdout] 52 | | }), [INFO] [stdout] | |_________________^ help: use tuple initialization: `ParsableDuration(Duration::from_secs_f32(dur * 1000.0 * 1000.0))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:53:28 [INFO] [stdout] | [INFO] [stdout] 53 | "ms" => Ok(ParsableDuration { [INFO] [stdout] | ____________________________^ [INFO] [stdout] 54 | | 0: Duration::from_secs_f32(dur * 1000.0), [INFO] [stdout] 55 | | }), [INFO] [stdout] | |_________________^ help: use tuple initialization: `ParsableDuration(Duration::from_secs_f32(dur * 1000.0))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:56:27 [INFO] [stdout] | [INFO] [stdout] 56 | "s" => Ok(ParsableDuration { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 57 | | 0: Duration::from_secs_f32(dur), [INFO] [stdout] 58 | | }), [INFO] [stdout] | |_________________^ help: use tuple initialization: `ParsableDuration(Duration::from_secs_f32(dur))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:59:27 [INFO] [stdout] | [INFO] [stdout] 59 | "m" => Ok(ParsableDuration { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 60 | | 0: Duration::from_secs_f32(dur / 60.0), [INFO] [stdout] 61 | | }), [INFO] [stdout] | |_________________^ help: use tuple initialization: `ParsableDuration(Duration::from_secs_f32(dur / 60.0))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/parsable_duration.rs:62:27 [INFO] [stdout] | [INFO] [stdout] 62 | "h" => Ok(ParsableDuration { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 63 | | 0: Duration::from_secs_f32(dur / 3600.0), [INFO] [stdout] 64 | | }), [INFO] [stdout] | |_________________^ help: use tuple initialization: `ParsableDuration(Duration::from_secs_f32(dur / 3600.0))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/types/pipe_sender.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | / for bar in bars { [INFO] [stdout] 28 | | if let Ok(pipe) = bar { [INFO] [stdout] 29 | | if let Some(fname) = pipe.to_str() { [INFO] [stdout] 30 | | match OpenOptions::new() [INFO] [stdout] ... | [INFO] [stdout] 50 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/types/pipe_sender.rs:28:17 [INFO] [stdout] | [INFO] [stdout] 28 | / if let Ok(pipe) = bar { [INFO] [stdout] 29 | | if let Some(fname) = pipe.to_str() { [INFO] [stdout] 30 | | match OpenOptions::new() [INFO] [stdout] 31 | | .write(true) [INFO] [stdout] ... | [INFO] [stdout] 49 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 27 ~ for pipe in bars.flatten() { [INFO] [stdout] 28 + if let Some(fname) = pipe.to_str() { [INFO] [stdout] 29 + match OpenOptions::new() [INFO] [stdout] 30 + .write(true) [INFO] [stdout] 31 + .append(true) [INFO] [stdout] 32 + .custom_flags(libc::O_NONBLOCK) [INFO] [stdout] 33 + .open(fname) [INFO] [stdout] 34 + { [INFO] [stdout] 35 + Ok(mut fid) => { [INFO] [stdout] 36 + if let Err(e) = fid.write(&msg.as_bytes()) { [INFO] [stdout] 37 + eprintln!("Error writing to pipe [{}]: {}", fname, e); [INFO] [stdout] 38 + } [INFO] [stdout] 39 + if let Err(e) = fid.flush() { [INFO] [stdout] 40 + eprintln!("Error flushing pipe buffer [{}]: {}", fname, e); [INFO] [stdout] 41 + } [INFO] [stdout] 42 + }, [INFO] [stdout] 43 + Err(e) => { [INFO] [stdout] 44 + eprintln!("Error opening pipe [{}]: {}", fname, e); [INFO] [stdout] 45 + } [INFO] [stdout] 46 + } [INFO] [stdout] 47 + } [INFO] [stdout] 48 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `.write(true)` because there is `.append(true)` [INFO] [stdout] --> src/types/pipe_sender.rs:31:29 [INFO] [stdout] | [INFO] [stdout] 31 | ... .write(true) [INFO] [stdout] | ^^^^^^^^^^^^ help: remove `.write(true)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ineffective_open_options [INFO] [stdout] = note: `#[warn(clippy::ineffective_open_options)]` 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/types/pipe_sender.rs:37:59 [INFO] [stdout] | [INFO] [stdout] 37 | ... if let Err(e) = fid.write(&msg.as_bytes()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `msg.as_bytes()` [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: useless conversion to the same type: `std::time::Duration` [INFO] [stdout] --> src/types/ws_history.rs:179:36 [INFO] [stdout] | [INFO] [stdout] 179 | activity_timeout: Some(Duration::from_secs(10).into()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Duration::from_secs(10)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/types/ws_history.rs:280:26 [INFO] [stdout] | [INFO] [stdout] 280 | let per_output = match self.hist.hist { [INFO] [stdout] | __________________________^ [INFO] [stdout] 281 | | HistType::PerOutput(_) => true, [INFO] [stdout] 282 | | _ => false, [INFO] [stdout] 283 | | }; [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] 280 - let per_output = match self.hist.hist { [INFO] [stdout] 281 - HistType::PerOutput(_) => true, [INFO] [stdout] 282 - _ => false, [INFO] [stdout] 283 - }; [INFO] [stdout] 280 + let per_output = matches!(self.hist.hist, HistType::PerOutput(_)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::time::Duration` [INFO] [stdout] --> src/types/ws_history.rs:179:36 [INFO] [stdout] | [INFO] [stdout] 179 | activity_timeout: Some(Duration::from_secs(10).into()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Duration::from_secs(10)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/types/ws_history.rs:349:28 [INFO] [stdout] | [INFO] [stdout] 349 | if (per_output && (ws.output != self.cur_output || ws.visible)) [INFO] [stdout] | ____________________________^ [INFO] [stdout] 350 | | || (!per_output && self.skip_visible && ws.visible)) [INFO] [stdout] | |___________________________________________________________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 349 - if (per_output && (ws.output != self.cur_output || ws.visible)) [INFO] [stdout] 350 - || (!per_output && self.skip_visible && ws.visible)) [INFO] [stdout] 349 + if (self.skip_visible || per_output) && (ws.visible || ws.output != self.cur_output) && (ws.visible || per_output)) [INFO] [stdout] | [INFO] [stdout] 349 - if (per_output && (ws.output != self.cur_output || ws.visible)) [INFO] [stdout] 350 - || (!per_output && self.skip_visible && ws.visible)) [INFO] [stdout] 349 + if per_output && ws.output != self.cur_output || per_output && ws.visible || ws.visible && self.skip_visible) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/types/ws_history.rs:333:26 [INFO] [stdout] | [INFO] [stdout] 333 | let per_output = match self.hist.hist { [INFO] [stdout] | __________________________^ [INFO] [stdout] 334 | | HistType::PerOutput(_) => true, [INFO] [stdout] 335 | | _ => false, [INFO] [stdout] 336 | | }; [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] 333 - let per_output = match self.hist.hist { [INFO] [stdout] 334 - HistType::PerOutput(_) => true, [INFO] [stdout] 335 - _ => false, [INFO] [stdout] 336 - }; [INFO] [stdout] 333 + let per_output = matches!(self.hist.hist, HistType::PerOutput(_)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/types/ws_history.rs:280:26 [INFO] [stdout] | [INFO] [stdout] 280 | let per_output = match self.hist.hist { [INFO] [stdout] | __________________________^ [INFO] [stdout] 281 | | HistType::PerOutput(_) => true, [INFO] [stdout] 282 | | _ => false, [INFO] [stdout] 283 | | }; [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] 280 - let per_output = match self.hist.hist { [INFO] [stdout] 281 - HistType::PerOutput(_) => true, [INFO] [stdout] 282 - _ => false, [INFO] [stdout] 283 - }; [INFO] [stdout] 280 + let per_output = matches!(self.hist.hist, HistType::PerOutput(_)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/types/ws_history.rs:349:28 [INFO] [stdout] | [INFO] [stdout] 349 | if (per_output && (ws.output != self.cur_output || ws.visible)) [INFO] [stdout] | ____________________________^ [INFO] [stdout] 350 | | || (!per_output && self.skip_visible && ws.visible)) [INFO] [stdout] | |___________________________________________________________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 349 - if (per_output && (ws.output != self.cur_output || ws.visible)) [INFO] [stdout] 350 - || (!per_output && self.skip_visible && ws.visible)) [INFO] [stdout] 349 + if (self.skip_visible || per_output) && (ws.visible || ws.output != self.cur_output) && (ws.visible || per_output)) [INFO] [stdout] | [INFO] [stdout] 349 - if (per_output && (ws.output != self.cur_output || ws.visible)) [INFO] [stdout] 350 - || (!per_output && self.skip_visible && ws.visible)) [INFO] [stdout] 349 + if per_output && ws.output != self.cur_output || per_output && ws.visible || ws.visible && self.skip_visible) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/types/ws_history.rs:333:26 [INFO] [stdout] | [INFO] [stdout] 333 | let per_output = match self.hist.hist { [INFO] [stdout] | __________________________^ [INFO] [stdout] 334 | | HistType::PerOutput(_) => true, [INFO] [stdout] 335 | | _ => false, [INFO] [stdout] 336 | | }; [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] 333 - let per_output = match self.hist.hist { [INFO] [stdout] 334 - HistType::PerOutput(_) => true, [INFO] [stdout] 335 - _ => false, [INFO] [stdout] 336 - }; [INFO] [stdout] 333 + let per_output = matches!(self.hist.hist, HistType::PerOutput(_)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/types/ws_history.rs:455:26 [INFO] [stdout] | [INFO] [stdout] 455 | let per_output = match self.hist.hist { [INFO] [stdout] | __________________________^ [INFO] [stdout] 456 | | HistType::PerOutput(_) => true, [INFO] [stdout] 457 | | _ => false, [INFO] [stdout] 458 | | }; [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] 455 - let per_output = match self.hist.hist { [INFO] [stdout] 456 - HistType::PerOutput(_) => true, [INFO] [stdout] 457 - _ => false, [INFO] [stdout] 458 - }; [INFO] [stdout] 455 + let per_output = matches!(self.hist.hist, HistType::PerOutput(_)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/types/ws_history.rs:455:26 [INFO] [stdout] | [INFO] [stdout] 455 | let per_output = match self.hist.hist { [INFO] [stdout] | __________________________^ [INFO] [stdout] 456 | | HistType::PerOutput(_) => true, [INFO] [stdout] 457 | | _ => false, [INFO] [stdout] 458 | | }; [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] 455 - let per_output = match self.hist.hist { [INFO] [stdout] 456 - HistType::PerOutput(_) => true, [INFO] [stdout] 457 - _ => false, [INFO] [stdout] 458 - }; [INFO] [stdout] 455 + let per_output = matches!(self.hist.hist, HistType::PerOutput(_)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:522:25 [INFO] [stdout] | [INFO] [stdout] 522 | / self.goto_ws(WSDirection::PREV, i3) [INFO] [stdout] 523 | | .await [INFO] [stdout] 524 | | .and_then(|new_ws| { [INFO] [stdout] 525 | | self.ignore_ctr += 1; [INFO] [stdout] 526 | | Some(format!("workspace number {}", new_ws)) [INFO] [stdout] 527 | | }) [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 524 ~ .map(|new_ws| { [INFO] [stdout] 525 | self.ignore_ctr += 1; [INFO] [stdout] 526 ~ format!("workspace number {}", new_ws) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:529:25 [INFO] [stdout] | [INFO] [stdout] 529 | / self.goto_ws(WSDirection::PREV, i3) [INFO] [stdout] 530 | | .await [INFO] [stdout] 531 | | .and_then(|new_ws| { [INFO] [stdout] 532 | | self.ignore_ctr += 2; [INFO] [stdout] ... | [INFO] [stdout] 536 | | )) [INFO] [stdout] 537 | | }) [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 531 ~ .map(|new_ws| { [INFO] [stdout] 532 | self.ignore_ctr += 2; [INFO] [stdout] 533 ~ format!( [INFO] [stdout] 534 + "move container to workspace number {0}; workspace number {0}", [INFO] [stdout] 535 + new_ws [INFO] [stdout] 536 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:522:25 [INFO] [stdout] | [INFO] [stdout] 522 | / self.goto_ws(WSDirection::PREV, i3) [INFO] [stdout] 523 | | .await [INFO] [stdout] 524 | | .and_then(|new_ws| { [INFO] [stdout] 525 | | self.ignore_ctr += 1; [INFO] [stdout] 526 | | Some(format!("workspace number {}", new_ws)) [INFO] [stdout] 527 | | }) [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 524 ~ .map(|new_ws| { [INFO] [stdout] 525 | self.ignore_ctr += 1; [INFO] [stdout] 526 ~ format!("workspace number {}", new_ws) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:529:25 [INFO] [stdout] | [INFO] [stdout] 529 | / self.goto_ws(WSDirection::PREV, i3) [INFO] [stdout] 530 | | .await [INFO] [stdout] 531 | | .and_then(|new_ws| { [INFO] [stdout] 532 | | self.ignore_ctr += 2; [INFO] [stdout] ... | [INFO] [stdout] 536 | | )) [INFO] [stdout] 537 | | }) [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 531 ~ .map(|new_ws| { [INFO] [stdout] 532 | self.ignore_ctr += 2; [INFO] [stdout] 533 ~ format!( [INFO] [stdout] 534 + "move container to workspace number {0}; workspace number {0}", [INFO] [stdout] 535 + new_ws [INFO] [stdout] 536 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:539:25 [INFO] [stdout] | [INFO] [stdout] 539 | / self.goto_ws(WSDirection::NEXT, i3) [INFO] [stdout] 540 | | .await [INFO] [stdout] 541 | | .and_then(|new_ws| { [INFO] [stdout] 542 | | self.ignore_ctr += 1; [INFO] [stdout] 543 | | Some(format!("workspace number {}", new_ws)) [INFO] [stdout] 544 | | }) [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 541 ~ .map(|new_ws| { [INFO] [stdout] 542 | self.ignore_ctr += 1; [INFO] [stdout] 543 ~ format!("workspace number {}", new_ws) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:539:25 [INFO] [stdout] | [INFO] [stdout] 539 | / self.goto_ws(WSDirection::NEXT, i3) [INFO] [stdout] 540 | | .await [INFO] [stdout] 541 | | .and_then(|new_ws| { [INFO] [stdout] 542 | | self.ignore_ctr += 1; [INFO] [stdout] 543 | | Some(format!("workspace number {}", new_ws)) [INFO] [stdout] 544 | | }) [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 541 ~ .map(|new_ws| { [INFO] [stdout] 542 | self.ignore_ctr += 1; [INFO] [stdout] 543 ~ format!("workspace number {}", new_ws) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:546:25 [INFO] [stdout] | [INFO] [stdout] 546 | / self.goto_ws(WSDirection::NEXT, i3) [INFO] [stdout] 547 | | .await [INFO] [stdout] 548 | | .and_then(|new_ws| { [INFO] [stdout] 549 | | self.ignore_ctr += 2; [INFO] [stdout] ... | [INFO] [stdout] 553 | | )) [INFO] [stdout] 554 | | }) [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 548 ~ .map(|new_ws| { [INFO] [stdout] 549 | self.ignore_ctr += 2; [INFO] [stdout] 550 ~ format!( [INFO] [stdout] 551 + "move container to workspace number {0}; workspace number {0}", [INFO] [stdout] 552 + new_ws [INFO] [stdout] 553 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:546:25 [INFO] [stdout] | [INFO] [stdout] 546 | / self.goto_ws(WSDirection::NEXT, i3) [INFO] [stdout] 547 | | .await [INFO] [stdout] 548 | | .and_then(|new_ws| { [INFO] [stdout] 549 | | self.ignore_ctr += 2; [INFO] [stdout] ... | [INFO] [stdout] 553 | | )) [INFO] [stdout] 554 | | }) [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 548 ~ .map(|new_ws| { [INFO] [stdout] 549 | self.ignore_ctr += 2; [INFO] [stdout] 550 ~ format!( [INFO] [stdout] 551 + "move container to workspace number {0}; workspace number {0}", [INFO] [stdout] 552 + new_ws [INFO] [stdout] 553 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:571:25 [INFO] [stdout] | [INFO] [stdout] 571 | / self.goto_head(i3).await.and_then(|new_ws| { [INFO] [stdout] 572 | | self.ignore_ctr += 1; [INFO] [stdout] 573 | | Some(format!("workspace number {}", new_ws)) [INFO] [stdout] 574 | | }) [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 571 ~ self.goto_head(i3).await.map(|new_ws| { [INFO] [stdout] 572 | self.ignore_ctr += 1; [INFO] [stdout] 573 ~ format!("workspace number {}", new_ws) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:571:25 [INFO] [stdout] | [INFO] [stdout] 571 | / self.goto_head(i3).await.and_then(|new_ws| { [INFO] [stdout] 572 | | self.ignore_ctr += 1; [INFO] [stdout] 573 | | Some(format!("workspace number {}", new_ws)) [INFO] [stdout] 574 | | }) [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 571 ~ self.goto_head(i3).await.map(|new_ws| { [INFO] [stdout] 572 | self.ignore_ctr += 1; [INFO] [stdout] 573 ~ format!("workspace number {}", new_ws) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:576:25 [INFO] [stdout] | [INFO] [stdout] 576 | / self.goto_head(i3).await.and_then(|new_ws| { [INFO] [stdout] 577 | | self.ignore_ctr += 2; [INFO] [stdout] 578 | | Some(format!( [INFO] [stdout] 579 | | "move container to workspace number {0}; workspace number {0}", [INFO] [stdout] 580 | | new_ws [INFO] [stdout] 581 | | )) [INFO] [stdout] 582 | | }) [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 576 ~ self.goto_head(i3).await.map(|new_ws| { [INFO] [stdout] 577 | self.ignore_ctr += 2; [INFO] [stdout] 578 ~ format!( [INFO] [stdout] 579 + "move container to workspace number {0}; workspace number {0}", [INFO] [stdout] 580 + new_ws [INFO] [stdout] 581 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:576:25 [INFO] [stdout] | [INFO] [stdout] 576 | / self.goto_head(i3).await.and_then(|new_ws| { [INFO] [stdout] 577 | | self.ignore_ctr += 2; [INFO] [stdout] 578 | | Some(format!( [INFO] [stdout] 579 | | "move container to workspace number {0}; workspace number {0}", [INFO] [stdout] 580 | | new_ws [INFO] [stdout] 581 | | )) [INFO] [stdout] 582 | | }) [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 576 ~ self.goto_head(i3).await.map(|new_ws| { [INFO] [stdout] 577 | self.ignore_ctr += 2; [INFO] [stdout] 578 ~ format!( [INFO] [stdout] 579 + "move container to workspace number {0}; workspace number {0}", [INFO] [stdout] 580 + new_ws [INFO] [stdout] 581 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:584:25 [INFO] [stdout] | [INFO] [stdout] 584 | / self.rem_ws(WSDirection::PREV, i3).await.and_then(|new_ws| { [INFO] [stdout] 585 | | self.ignore_ctr += 1; [INFO] [stdout] 586 | | Some(format!("workspace number {}", new_ws)) [INFO] [stdout] 587 | | }) [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 584 ~ self.rem_ws(WSDirection::PREV, i3).await.map(|new_ws| { [INFO] [stdout] 585 | self.ignore_ctr += 1; [INFO] [stdout] 586 ~ format!("workspace number {}", new_ws) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:584:25 [INFO] [stdout] | [INFO] [stdout] 584 | / self.rem_ws(WSDirection::PREV, i3).await.and_then(|new_ws| { [INFO] [stdout] 585 | | self.ignore_ctr += 1; [INFO] [stdout] 586 | | Some(format!("workspace number {}", new_ws)) [INFO] [stdout] 587 | | }) [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 584 ~ self.rem_ws(WSDirection::PREV, i3).await.map(|new_ws| { [INFO] [stdout] 585 | self.ignore_ctr += 1; [INFO] [stdout] 586 ~ format!("workspace number {}", new_ws) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:589:25 [INFO] [stdout] | [INFO] [stdout] 589 | / self.rem_ws(WSDirection::NEXT, i3).await.and_then(|new_ws| { [INFO] [stdout] 590 | | self.ignore_ctr += 1; [INFO] [stdout] 591 | | Some(format!("workspace number {}", new_ws)) [INFO] [stdout] 592 | | }) [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 589 ~ self.rem_ws(WSDirection::NEXT, i3).await.map(|new_ws| { [INFO] [stdout] 590 | self.ignore_ctr += 1; [INFO] [stdout] 591 ~ format!("workspace number {}", new_ws) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/ws_history.rs:589:25 [INFO] [stdout] | [INFO] [stdout] 589 | / self.rem_ws(WSDirection::NEXT, i3).await.and_then(|new_ws| { [INFO] [stdout] 590 | | self.ignore_ctr += 1; [INFO] [stdout] 591 | | Some(format!("workspace number {}", new_ws)) [INFO] [stdout] 592 | | }) [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 589 ~ self.rem_ws(WSDirection::NEXT, i3).await.map(|new_ws| { [INFO] [stdout] 590 | self.ignore_ctr += 1; [INFO] [stdout] 591 ~ format!("workspace number {}", new_ws) [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/types/ws_history.rs:602:29 [INFO] [stdout] | [INFO] [stdout] 602 | / ... match notify_rust::Notification::new() [INFO] [stdout] 603 | | ... .summary(header.as_str()) [INFO] [stdout] 604 | | ... .body(hist_msg.as_str()) [INFO] [stdout] 605 | | ... .appname("i3-companion") [INFO] [stdout] ... | [INFO] [stdout] 611 | | ... Ok(_) => (), [INFO] [stdout] 612 | | ... } [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] 602 ~ if let Err(err) = notify_rust::Notification::new() [INFO] [stdout] 603 + .summary(header.as_str()) [INFO] [stdout] 604 + .body(hist_msg.as_str()) [INFO] [stdout] 605 + .appname("i3-companion") [INFO] [stdout] 606 + .show() { [INFO] [stdout] 607 + eprintln!("Error showing history stack: {}", err); [INFO] [stdout] 608 + } [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/types/ws_history.rs:602:29 [INFO] [stdout] | [INFO] [stdout] 602 | / ... match notify_rust::Notification::new() [INFO] [stdout] 603 | | ... .summary(header.as_str()) [INFO] [stdout] 604 | | ... .body(hist_msg.as_str()) [INFO] [stdout] 605 | | ... .appname("i3-companion") [INFO] [stdout] ... | [INFO] [stdout] 611 | | ... Ok(_) => (), [INFO] [stdout] 612 | | ... } [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] 602 ~ if let Err(err) = notify_rust::Notification::new() [INFO] [stdout] 603 + .summary(header.as_str()) [INFO] [stdout] 604 + .body(hist_msg.as_str()) [INFO] [stdout] 605 + .appname("i3-companion") [INFO] [stdout] 606 + .show() { [INFO] [stdout] 607 + eprintln!("Error showing history stack: {}", err); [INFO] [stdout] 608 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `NEXT` contains a capitalized acronym [INFO] [stdout] --> src/types/ws_history.rs:630:5 [INFO] [stdout] | [INFO] [stdout] 630 | NEXT, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Next` [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 `NEXT` contains a capitalized acronym [INFO] [stdout] --> src/types/ws_history.rs:630:5 [INFO] [stdout] | [INFO] [stdout] 630 | NEXT, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Next` [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 `PREV` contains a capitalized acronym [INFO] [stdout] --> src/types/ws_history.rs:632:5 [INFO] [stdout] | [INFO] [stdout] 632 | PREV, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Prev` [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 `PREV` contains a capitalized acronym [INFO] [stdout] --> src/types/ws_history.rs:632:5 [INFO] [stdout] | [INFO] [stdout] 632 | PREV, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Prev` [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: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/config.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | Self { 0: d.into() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use tuple initialization: `Self(d.into())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/config.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | Self { 0: d.into() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use tuple initialization: `Self(d.into())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/config.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | Self { 0: d.into() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use tuple initialization: `Self(d.into())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used a field initializer for a tuple struct [INFO] [stdout] --> src/types/config.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | Self { 0: d.into() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use tuple initialization: `Self(d.into())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/config.rs:65:13 [INFO] [stdout] | [INFO] [stdout] 65 | / config.pipes.and_then(|h| { [INFO] [stdout] 66 | | Some( [INFO] [stdout] 67 | | h.into_iter() [INFO] [stdout] 68 | | .map(|p| { [INFO] [stdout] ... | [INFO] [stdout] 81 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 65 ~ config.pipes.map(|h| h.into_iter() [INFO] [stdout] 66 + .map(|p| { [INFO] [stdout] 67 + ( [INFO] [stdout] 68 + p.0, [INFO] [stdout] 69 + match p.1 .0 { [INFO] [stdout] 70 + SenderType::SHELL => Arc::new(ShellCaller::new(p.1 .1)) [INFO] [stdout] 71 + as Arc, [INFO] [stdout] 72 + SenderType::PIPE => Arc::new(PipeSender::new(p.1 .1)) [INFO] [stdout] 73 + as Arc, [INFO] [stdout] 74 + }, [INFO] [stdout] 75 + ) [INFO] [stdout] 76 + }) [INFO] [stdout] 77 ~ .collect()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/config.rs:85:25 [INFO] [stdout] | [INFO] [stdout] 85 | ws_history: config.ws_history.and_then(|c| Some(c.into())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `config.ws_history.map(|c| c.into())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/config.rs:86:29 [INFO] [stdout] | [INFO] [stdout] 86 | layout_tracker: config.layout_tracker.and_then(|c| { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 87 | | Some( [INFO] [stdout] 88 | | ( [INFO] [stdout] 89 | | c, [INFO] [stdout] ... | [INFO] [stdout] 97 | | }), [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 86 ~ layout_tracker: config.layout_tracker.map(|c| ( [INFO] [stdout] 87 + c, [INFO] [stdout] 88 + pipes.as_ref().unwrap_or_else(|| { [INFO] [stdout] 89 + eprintln!("ERROR: Layout tracker requires a pipe"); [INFO] [stdout] 90 + exit(7); [INFO] [stdout] 91 + }), [INFO] [stdout] 92 + ) [INFO] [stdout] 93 ~ .into()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/config.rs:65:13 [INFO] [stdout] | [INFO] [stdout] 65 | / config.pipes.and_then(|h| { [INFO] [stdout] 66 | | Some( [INFO] [stdout] 67 | | h.into_iter() [INFO] [stdout] 68 | | .map(|p| { [INFO] [stdout] ... | [INFO] [stdout] 81 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 65 ~ config.pipes.map(|h| h.into_iter() [INFO] [stdout] 66 + .map(|p| { [INFO] [stdout] 67 + ( [INFO] [stdout] 68 + p.0, [INFO] [stdout] 69 + match p.1 .0 { [INFO] [stdout] 70 + SenderType::SHELL => Arc::new(ShellCaller::new(p.1 .1)) [INFO] [stdout] 71 + as Arc, [INFO] [stdout] 72 + SenderType::PIPE => Arc::new(PipeSender::new(p.1 .1)) [INFO] [stdout] 73 + as Arc, [INFO] [stdout] 74 + }, [INFO] [stdout] 75 + ) [INFO] [stdout] 76 + }) [INFO] [stdout] 77 ~ .collect()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/config.rs:98:29 [INFO] [stdout] | [INFO] [stdout] 98 | output_tracker: config.output_tracker.and_then(|c| { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 99 | | Some( [INFO] [stdout] 100 | | ( [INFO] [stdout] 101 | | c, [INFO] [stdout] ... | [INFO] [stdout] 109 | | }), [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 98 ~ output_tracker: config.output_tracker.map(|c| ( [INFO] [stdout] 99 + c, [INFO] [stdout] 100 + pipes.as_ref().unwrap_or_else(|| { [INFO] [stdout] 101 + eprintln!("ERROR: Layout tracker requires a pipe"); [INFO] [stdout] 102 + exit(7); [INFO] [stdout] 103 + }), [INFO] [stdout] 104 + ) [INFO] [stdout] 105 ~ .into()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/config.rs:85:25 [INFO] [stdout] | [INFO] [stdout] 85 | ws_history: config.ws_history.and_then(|c| Some(c.into())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `config.ws_history.map(|c| c.into())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/config.rs:86:29 [INFO] [stdout] | [INFO] [stdout] 86 | layout_tracker: config.layout_tracker.and_then(|c| { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 87 | | Some( [INFO] [stdout] 88 | | ( [INFO] [stdout] 89 | | c, [INFO] [stdout] ... | [INFO] [stdout] 97 | | }), [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 86 ~ layout_tracker: config.layout_tracker.map(|c| ( [INFO] [stdout] 87 + c, [INFO] [stdout] 88 + pipes.as_ref().unwrap_or_else(|| { [INFO] [stdout] 89 + eprintln!("ERROR: Layout tracker requires a pipe"); [INFO] [stdout] 90 + exit(7); [INFO] [stdout] 91 + }), [INFO] [stdout] 92 + ) [INFO] [stdout] 93 ~ .into()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/config.rs:98:29 [INFO] [stdout] | [INFO] [stdout] 98 | output_tracker: config.output_tracker.and_then(|c| { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 99 | | Some( [INFO] [stdout] 100 | | ( [INFO] [stdout] 101 | | c, [INFO] [stdout] ... | [INFO] [stdout] 109 | | }), [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 98 ~ output_tracker: config.output_tracker.map(|c| ( [INFO] [stdout] 99 + c, [INFO] [stdout] 100 + pipes.as_ref().unwrap_or_else(|| { [INFO] [stdout] 101 + eprintln!("ERROR: Layout tracker requires a pipe"); [INFO] [stdout] 102 + exit(7); [INFO] [stdout] 103 + }), [INFO] [stdout] 104 + ) [INFO] [stdout] 105 ~ .into()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/config.rs:135:35 [INFO] [stdout] | [INFO] [stdout] 135 | .and_then(|n| n.to_str().and_then(|s| Some(s.to_string()))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `n.to_str().map(|s| s.to_string())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/types/config.rs:135:35 [INFO] [stdout] | [INFO] [stdout] 135 | .and_then(|n| n.to_str().and_then(|s| Some(s.to_string()))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `n.to_str().map(|s| s.to_string())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.or_else(|x| Err(y))`, which is more succinctly expressed as `map_err(|x| y)` [INFO] [stdout] --> src/types/config.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | / toml::from_str(config_content.as_str()).or_else(|e| { [INFO] [stdout] 163 | | eprintln!("Error parsing config file:\n{}", e); [INFO] [stdout] 164 | | exit(5); [INFO] [stdout] 165 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map_err` instead [INFO] [stdout] | [INFO] [stdout] 162 - toml::from_str(config_content.as_str()).or_else(|e| { [INFO] [stdout] 162 + toml::from_str(config_content.as_str()).map_err(|e| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `SHELL` contains a capitalized acronym [INFO] [stdout] --> src/types/mod.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | SHELL, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Shell` [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: using `Result.or_else(|x| Err(y))`, which is more succinctly expressed as `map_err(|x| y)` [INFO] [stdout] --> src/types/config.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | / toml::from_str(config_content.as_str()).or_else(|e| { [INFO] [stdout] 163 | | eprintln!("Error parsing config file:\n{}", e); [INFO] [stdout] 164 | | exit(5); [INFO] [stdout] 165 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: use `map_err` instead [INFO] [stdout] | [INFO] [stdout] 162 - toml::from_str(config_content.as_str()).or_else(|e| { [INFO] [stdout] 162 + toml::from_str(config_content.as_str()).map_err(|e| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `PIPE` contains a capitalized acronym [INFO] [stdout] --> src/types/mod.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | PIPE, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Pipe` [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 `SHELL` contains a capitalized acronym [INFO] [stdout] --> src/types/mod.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | SHELL, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Shell` [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 `PIPE` contains a capitalized acronym [INFO] [stdout] --> src/types/mod.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | PIPE, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Pipe` [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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 44.36s [INFO] running `Command { std: "docker" "inspect" "5b47cef54371604b4cdf468edc336adb09f5a2f1c62a8887ee4c0b7f8e04366a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5b47cef54371604b4cdf468edc336adb09f5a2f1c62a8887ee4c0b7f8e04366a", kill_on_drop: false }` [INFO] [stdout] 5b47cef54371604b4cdf468edc336adb09f5a2f1c62a8887ee4c0b7f8e04366a