[INFO] cloning repository https://github.com/dmyTRUEk/elatum-kb-optim [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/dmyTRUEk/elatum-kb-optim" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FdmyTRUEk%2Felatum-kb-optim", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FdmyTRUEk%2Felatum-kb-optim'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 34b8e93bc7957fa5f8fb8889fb5094163193695c [INFO] linting dmyTRUEk/elatum-kb-optim against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FdmyTRUEk%2Felatum-kb-optim" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-4-tc1/source/rust-toolchain.toml [INFO] started tweaking git repo https://github.com/dmyTRUEk/elatum-kb-optim [INFO] finished tweaking git repo https://github.com/dmyTRUEk/elatum-kb-optim [INFO] tweaked toml for git repo https://github.com/dmyTRUEk/elatum-kb-optim written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/dmyTRUEk/elatum-kb-optim 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/dmyTRUEk/elatum-kb-optim 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 paste v1.0.13 [INFO] [stderr] Downloaded unicode-ident v1.0.10 [INFO] [stderr] Downloaded nalgebra-macros v0.2.2 [INFO] [stderr] Downloaded bytemuck v1.13.1 [INFO] [stderr] Downloaded num-complex v0.4.3 [INFO] [stderr] Downloaded clap_derive v4.5.40 [INFO] [stderr] Downloaded matrixmultiply v0.3.7 [INFO] [stderr] Downloaded clap v4.5.40 [INFO] [stderr] Downloaded safe_arch v0.7.0 [INFO] [stderr] Downloaded wide v0.7.10 [INFO] [stderr] Downloaded clap_builder v4.5.40 [INFO] [stderr] Downloaded syn v2.0.43 [INFO] [stderr] Downloaded libc v0.2.173 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 1e400723b645954875bdbb74e2db35538eb3728d0ca6b37b741302bb2146fd23 [INFO] running `Command { std: "docker" "start" "-a" "1e400723b645954875bdbb74e2db35538eb3728d0ca6b37b741302bb2146fd23", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "1e400723b645954875bdbb74e2db35538eb3728d0ca6b37b741302bb2146fd23", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1e400723b645954875bdbb74e2db35538eb3728d0ca6b37b741302bb2146fd23", kill_on_drop: false }` [INFO] [stdout] 1e400723b645954875bdbb74e2db35538eb3728d0ca6b37b741302bb2146fd23 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 35306fec03a3aa4f15d60783cc6d064030d57e3d9b46cc3442af5aa6925c2740 [INFO] running `Command { std: "docker" "start" "-a" "35306fec03a3aa4f15d60783cc6d064030d57e3d9b46cc3442af5aa6925c2740", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.1.0 [INFO] [stderr] Compiling proc-macro2 v1.0.95 [INFO] [stderr] Compiling unicode-ident v1.0.10 [INFO] [stderr] Compiling quote v1.0.29 [INFO] [stderr] Compiling libc v0.2.173 [INFO] [stderr] Compiling getrandom v0.3.3 [INFO] [stderr] Checking bytemuck v1.13.1 [INFO] [stderr] Compiling paste v1.0.13 [INFO] [stderr] Compiling rayon-core v1.12.1 [INFO] [stderr] Checking safe_arch v0.7.0 [INFO] [stderr] Checking anstyle-query v1.1.3 [INFO] [stderr] Checking anstyle v1.0.11 [INFO] [stderr] Compiling typenum v1.16.0 [INFO] [stderr] Checking ppv-lite86 v0.2.17 [INFO] [stderr] Compiling num-traits v0.2.15 [INFO] [stderr] Compiling num-integer v0.1.45 [INFO] [stderr] Compiling matrixmultiply v0.3.7 [INFO] [stderr] Compiling num-rational v0.4.1 [INFO] [stderr] Checking wide v0.7.10 [INFO] [stderr] Checking anstream v0.6.19 [INFO] [stderr] Checking clap_lex v0.7.5 [INFO] [stderr] Compiling syn v2.0.43 [INFO] [stderr] Checking clap_builder v4.5.40 [INFO] [stderr] Checking rand_core v0.9.3 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking approx v0.5.1 [INFO] [stderr] Checking num-complex v0.4.3 [INFO] [stderr] Checking rand v0.9.1 [INFO] [stderr] Checking rayon v1.10.0 [INFO] [stderr] Checking simba v0.9.0 [INFO] [stderr] Compiling clap_derive v4.5.40 [INFO] [stderr] Compiling nalgebra-macros v0.2.2 [INFO] [stderr] Checking clap v4.5.40 [INFO] [stderr] Checking nalgebra v0.33.2 [INFO] [stderr] Checking elatum-kb-optim v0.0.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: enum `Constraint` is never used [INFO] [stdout] --> src/main.rs:123:6 [INFO] [stdout] | [INFO] [stdout] 123 | enum Constraint { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `KeyboardAction` is never used [INFO] [stdout] --> src/main.rs:131:6 [INFO] [stdout] | [INFO] [stdout] 131 | enum KeyboardAction { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `optimize`, `optimized`, and `to_string2` are never used [INFO] [stdout] --> src/main.rs:262:5 [INFO] [stdout] | [INFO] [stdout] 145 | impl Keyboard { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 262 | fn optimize(&mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | fn optimized(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 377 | fn to_string2(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_totally_better_than`, `is_4_better_than`, and `is_better_exc_taps_than` are never used [INFO] [stdout] --> src/main.rs:446:5 [INFO] [stdout] | [INFO] [stdout] 427 | impl KeyboardQuality { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 446 | fn is_totally_better_than(&self, other: Self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 454 | fn is_4_better_than(&self, other: Self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 486 | fn is_better_exc_taps_than(&self, other: Self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:280:6 [INFO] [stdout] | [INFO] [stdout] 280 | &self.symbols_locations.iter().find(|&sl| sl.0 == Some(symbol)).unwrap_or_else(|| panic!("{symbol}")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.symbols_locations.iter().find(|&sl| sl.0 == Some(symbol)).unwrap_or_else(|| panic!("{symbol}"))` [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 `map_or` can be simplified [INFO] [stdout] --> src/main.rs:332:8 [INFO] [stdout] | [INFO] [stdout] 332 | if self.symbols_locations[i].0.map_or(false, |c| EXCLUDE_CHARS.contains(c)) || [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 332 - if self.symbols_locations[i].0.map_or(false, |c| EXCLUDE_CHARS.contains(c)) || [INFO] [stdout] 332 + if self.symbols_locations[i].0.is_some_and(|c| EXCLUDE_CHARS.contains(c)) || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/main.rs:333:6 [INFO] [stdout] | [INFO] [stdout] 333 | self.symbols_locations[j].0.map_or(false, |c| EXCLUDE_CHARS.contains(c)) { continue } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 333 - self.symbols_locations[j].0.map_or(false, |c| EXCLUDE_CHARS.contains(c)) { continue } [INFO] [stdout] 333 + self.symbols_locations[j].0.is_some_and(|c| EXCLUDE_CHARS.contains(c)) { continue } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implementation of inherent method `to_string(&self) -> String` for type `Keyboard` [INFO] [stdout] --> src/main.rs:342:2 [INFO] [stdout] | [INFO] [stdout] 342 | / fn to_string(&self) -> String { [INFO] [stdout] 343 | | let x_min = self.symbols_locations.iter().map(|(_c, (p, _d))| p.x).min().unwrap(); [INFO] [stdout] 344 | | let x_max = self.symbols_locations.iter().map(|(_c, (p, _d))| p.x).max().unwrap(); [INFO] [stdout] 345 | | let y_min = self.symbols_locations.iter().map(|(_c, (p, _d))| p.y).min().unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 374 | | .join("\n") [INFO] [stdout] 375 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: implement trait `Display` for type `Keyboard` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inherent_to_string [INFO] [stdout] = note: `#[warn(clippy::inherent_to_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:455:3 [INFO] [stdout] | [INFO] [stdout] 455 | / (//self.taps < other.taps && [INFO] [stdout] 456 | | self.straight_swipes < other.straight_swipes && [INFO] [stdout] 457 | | self.diagonal_swipes < other.diagonal_swipes && [INFO] [stdout] 458 | | self.straight_travels < other.straight_travels && [INFO] [stdout] ... | [INFO] [stdout] 464 | | self.straight_travels < other.straight_travels && [INFO] [stdout] 465 | | self.diagonal_travels < other.diagonal_travels) [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] 455 - (//self.taps < other.taps && [INFO] [stdout] 456 - self.straight_swipes < other.straight_swipes && [INFO] [stdout] 457 - self.diagonal_swipes < other.diagonal_swipes && [INFO] [stdout] 458 - self.straight_travels < other.straight_travels && [INFO] [stdout] 459 - self.diagonal_travels < other.diagonal_travels) [INFO] [stdout] 460 - || [INFO] [stdout] 461 - (self.taps < other.taps && [INFO] [stdout] 462 - // self.straight_swipes < other.straight_swipes && [INFO] [stdout] 463 - self.diagonal_swipes < other.diagonal_swipes && [INFO] [stdout] 464 - self.straight_travels < other.straight_travels && [INFO] [stdout] 465 - self.diagonal_travels < other.diagonal_travels) [INFO] [stdout] 455 + !(self.diagonal_swipes >= other.diagonal_swipes || self.straight_travels >= other.straight_travels || self.diagonal_travels >= other.diagonal_travels || self.straight_swipes >= other.straight_swipes && self.taps >= other.taps) [INFO] [stdout] | [INFO] [stdout] 455 - (//self.taps < other.taps && [INFO] [stdout] 456 - self.straight_swipes < other.straight_swipes && [INFO] [stdout] 457 - self.diagonal_swipes < other.diagonal_swipes && [INFO] [stdout] 458 - self.straight_travels < other.straight_travels && [INFO] [stdout] 459 - self.diagonal_travels < other.diagonal_travels) [INFO] [stdout] 460 - || [INFO] [stdout] 461 - (self.taps < other.taps && [INFO] [stdout] 462 - // self.straight_swipes < other.straight_swipes && [INFO] [stdout] 463 - self.diagonal_swipes < other.diagonal_swipes && [INFO] [stdout] 464 - self.straight_travels < other.straight_travels && [INFO] [stdout] 465 - self.diagonal_travels < other.diagonal_travels) [INFO] [stdout] 455 + (self.taps < other.taps || self.straight_swipes < other.straight_swipes) && self.diagonal_travels < other.diagonal_travels && self.straight_travels < other.straight_travels && self.diagonal_swipes < other.diagonal_swipes [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is `Copy`) usually take `self` by value [INFO] [stdout] --> src/main.rs:521:10 [INFO] [stdout] | [INFO] [stdout] 521 | fn to_x(&self) -> i8 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is `Copy`) usually take `self` by value [INFO] [stdout] --> src/main.rs:529:10 [INFO] [stdout] | [INFO] [stdout] 529 | fn to_y(&self) -> i8 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Constraint` is never used [INFO] [stdout] --> src/main.rs:123:6 [INFO] [stdout] | [INFO] [stdout] 123 | enum Constraint { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `KeyboardAction` is never used [INFO] [stdout] --> src/main.rs:131:6 [INFO] [stdout] | [INFO] [stdout] 131 | enum KeyboardAction { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `optimize` and `optimized` are never used [INFO] [stdout] --> src/main.rs:262:5 [INFO] [stdout] | [INFO] [stdout] 145 | impl Keyboard { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 262 | fn optimize(&mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | fn optimized(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_totally_better_than`, `is_4_better_than`, and `is_better_exc_taps_than` are never used [INFO] [stdout] --> src/main.rs:446:5 [INFO] [stdout] | [INFO] [stdout] 427 | impl KeyboardQuality { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 446 | fn is_totally_better_than(&self, other: Self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 454 | fn is_4_better_than(&self, other: Self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 486 | fn is_better_exc_taps_than(&self, other: Self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this looks like you are swapping `x` and `y` manually [INFO] [stdout] --> src/macros.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / let t = $a; [INFO] [stdout] 18 | | $a = $b; [INFO] [stdout] 19 | | $b = t; [INFO] [stdout] | |_______________^ help: try: `std::mem::swap(&mut x, &mut y);` [INFO] [stdout] ... [INFO] [stdout] 70 | swap!(x, y); [INFO] [stdout] | ----------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: or maybe you should use `std::mem::replace`? [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stdout] = note: `#[warn(clippy::manual_swap)]` on by default [INFO] [stdout] = note: this warning originates in the macro `swap` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this looks like you are swapping `y` and `x` manually [INFO] [stdout] --> src/macros.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / let t = $a; [INFO] [stdout] 18 | | $a = $b; [INFO] [stdout] 19 | | $b = t; [INFO] [stdout] | |_______________^ help: try: `std::mem::swap(&mut y, &mut x);` [INFO] [stdout] ... [INFO] [stdout] 77 | swap!(y, x); [INFO] [stdout] | ----------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: or maybe you should use `std::mem::replace`? [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stdout] = note: this warning originates in the macro `swap` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this looks like you are swapping `x` and `y` manually [INFO] [stdout] --> src/macros.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / let t = $a; [INFO] [stdout] 18 | | $a = $b; [INFO] [stdout] 19 | | $b = t; [INFO] [stdout] | |_______________^ help: try: `std::mem::swap(&mut x, &mut y);` [INFO] [stdout] ... [INFO] [stdout] 84 | swap!(x, y); [INFO] [stdout] | ----------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: or maybe you should use `std::mem::replace`? [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stdout] = note: this warning originates in the macro `swap` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:280:6 [INFO] [stdout] | [INFO] [stdout] 280 | &self.symbols_locations.iter().find(|&sl| sl.0 == Some(symbol)).unwrap_or_else(|| panic!("{symbol}")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.symbols_locations.iter().find(|&sl| sl.0 == Some(symbol)).unwrap_or_else(|| panic!("{symbol}"))` [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 `map_or` can be simplified [INFO] [stdout] --> src/main.rs:332:8 [INFO] [stdout] | [INFO] [stdout] 332 | if self.symbols_locations[i].0.map_or(false, |c| EXCLUDE_CHARS.contains(c)) || [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 332 - if self.symbols_locations[i].0.map_or(false, |c| EXCLUDE_CHARS.contains(c)) || [INFO] [stdout] 332 + if self.symbols_locations[i].0.is_some_and(|c| EXCLUDE_CHARS.contains(c)) || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/main.rs:333:6 [INFO] [stdout] | [INFO] [stdout] 333 | self.symbols_locations[j].0.map_or(false, |c| EXCLUDE_CHARS.contains(c)) { continue } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 333 - self.symbols_locations[j].0.map_or(false, |c| EXCLUDE_CHARS.contains(c)) { continue } [INFO] [stdout] 333 + self.symbols_locations[j].0.is_some_and(|c| EXCLUDE_CHARS.contains(c)) { continue } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implementation of inherent method `to_string(&self) -> String` for type `Keyboard` [INFO] [stdout] --> src/main.rs:342:2 [INFO] [stdout] | [INFO] [stdout] 342 | / fn to_string(&self) -> String { [INFO] [stdout] 343 | | let x_min = self.symbols_locations.iter().map(|(_c, (p, _d))| p.x).min().unwrap(); [INFO] [stdout] 344 | | let x_max = self.symbols_locations.iter().map(|(_c, (p, _d))| p.x).max().unwrap(); [INFO] [stdout] 345 | | let y_min = self.symbols_locations.iter().map(|(_c, (p, _d))| p.y).min().unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 374 | | .join("\n") [INFO] [stdout] 375 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: implement trait `Display` for type `Keyboard` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inherent_to_string [INFO] [stdout] = note: `#[warn(clippy::inherent_to_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:455:3 [INFO] [stdout] | [INFO] [stdout] 455 | / (//self.taps < other.taps && [INFO] [stdout] 456 | | self.straight_swipes < other.straight_swipes && [INFO] [stdout] 457 | | self.diagonal_swipes < other.diagonal_swipes && [INFO] [stdout] 458 | | self.straight_travels < other.straight_travels && [INFO] [stdout] ... | [INFO] [stdout] 464 | | self.straight_travels < other.straight_travels && [INFO] [stdout] 465 | | self.diagonal_travels < other.diagonal_travels) [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] 455 - (//self.taps < other.taps && [INFO] [stdout] 456 - self.straight_swipes < other.straight_swipes && [INFO] [stdout] 457 - self.diagonal_swipes < other.diagonal_swipes && [INFO] [stdout] 458 - self.straight_travels < other.straight_travels && [INFO] [stdout] 459 - self.diagonal_travels < other.diagonal_travels) [INFO] [stdout] 460 - || [INFO] [stdout] 461 - (self.taps < other.taps && [INFO] [stdout] 462 - // self.straight_swipes < other.straight_swipes && [INFO] [stdout] 463 - self.diagonal_swipes < other.diagonal_swipes && [INFO] [stdout] 464 - self.straight_travels < other.straight_travels && [INFO] [stdout] 465 - self.diagonal_travels < other.diagonal_travels) [INFO] [stdout] 455 + !(self.diagonal_swipes >= other.diagonal_swipes || self.straight_travels >= other.straight_travels || self.diagonal_travels >= other.diagonal_travels || self.straight_swipes >= other.straight_swipes && self.taps >= other.taps) [INFO] [stdout] | [INFO] [stdout] 455 - (//self.taps < other.taps && [INFO] [stdout] 456 - self.straight_swipes < other.straight_swipes && [INFO] [stdout] 457 - self.diagonal_swipes < other.diagonal_swipes && [INFO] [stdout] 458 - self.straight_travels < other.straight_travels && [INFO] [stdout] 459 - self.diagonal_travels < other.diagonal_travels) [INFO] [stdout] 460 - || [INFO] [stdout] 461 - (self.taps < other.taps && [INFO] [stdout] 462 - // self.straight_swipes < other.straight_swipes && [INFO] [stdout] 463 - self.diagonal_swipes < other.diagonal_swipes && [INFO] [stdout] 464 - self.straight_travels < other.straight_travels && [INFO] [stdout] 465 - self.diagonal_travels < other.diagonal_travels) [INFO] [stdout] 455 + (self.taps < other.taps || self.straight_swipes < other.straight_swipes) && self.diagonal_travels < other.diagonal_travels && self.straight_travels < other.straight_travels && self.diagonal_swipes < other.diagonal_swipes [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is `Copy`) usually take `self` by value [INFO] [stdout] --> src/main.rs:521:10 [INFO] [stdout] | [INFO] [stdout] 521 | fn to_x(&self) -> i8 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is `Copy`) usually take `self` by value [INFO] [stdout] --> src/main.rs:529:10 [INFO] [stdout] | [INFO] [stdout] 529 | fn to_y(&self) -> i8 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.56s [INFO] running `Command { std: "docker" "inspect" "35306fec03a3aa4f15d60783cc6d064030d57e3d9b46cc3442af5aa6925c2740", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "35306fec03a3aa4f15d60783cc6d064030d57e3d9b46cc3442af5aa6925c2740", kill_on_drop: false }` [INFO] [stdout] 35306fec03a3aa4f15d60783cc6d064030d57e3d9b46cc3442af5aa6925c2740