[INFO] fetching crate prinThor 0.0.3... [INFO] linting prinThor-0.0.3 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate prinThor 0.0.3 into /workspace/builds/worker-6-tc1/source [INFO] removed /workspace/builds/worker-6-tc1/source/.cargo/config.toml [INFO] started tweaking crates.io crate prinThor 0.0.3 [INFO] finished tweaking crates.io crate prinThor 0.0.3 [INFO] tweaked toml for crates.io crate prinThor 0.0.3 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate prinThor 0.0.3 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 crates.io crate prinThor 0.0.3 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded rustversion v1.0.14 [INFO] [stderr] Downloaded printhor-hwi_skr_mini_e3 v0.0.3 [INFO] [stderr] Downloaded tmc2209 v0.2.2 [INFO] [stderr] Downloaded embassy-net-driver v0.2.0 [INFO] [stderr] Downloaded printhor-hwa-common v0.0.3 [INFO] [stderr] Downloaded rust_decimal_macros v1.33.1 [INFO] [stderr] Downloaded display-interface v0.4.1 [INFO] [stderr] Downloaded ssmarshal v1.0.0 [INFO] [stderr] Downloaded embedded-storage-async v0.4.1 [INFO] [stderr] Downloaded float-cmp v0.8.0 [INFO] [stderr] Downloaded panic-probe v0.3.1 [INFO] [stderr] Downloaded printhor-hwi_nucleo_64_arduino_cnc_hat v0.0.3 [INFO] [stderr] Downloaded embassy-net-driver-channel v0.2.0 [INFO] [stderr] Downloaded embassy-executor-macros v0.4.0 [INFO] [stderr] Downloaded display-interface-parallel-gpio v0.6.0 [INFO] [stderr] Downloaded const_env v0.1.2 [INFO] [stderr] Downloaded ili9341 v0.5.0 [INFO] [stderr] Downloaded lvgl-codegen v0.5.2 [INFO] [stderr] Downloaded defmt-rtt v0.4.0 [INFO] [stderr] Downloaded const_env_impl v0.1.2 [INFO] [stderr] Downloaded embedded-graphics-core v0.3.3 [INFO] [stderr] Downloaded value-bag v1.6.0 [INFO] [stderr] Downloaded embedded-graphics v0.6.2 [INFO] [stderr] Downloaded polling v3.3.1 [INFO] [stderr] Downloaded gnuplot v0.0.39 [INFO] [stderr] Downloaded embedded-sdmmc v0.5.0 [INFO] [stderr] Downloaded async-std v1.12.0 [INFO] [stderr] Downloaded embassy-stm32 v0.1.0 [INFO] [stderr] Downloaded micromath v2.1.0 [INFO] [stderr] Downloaded futures-lite v2.2.0 [INFO] [stderr] Downloaded env_logger v0.10.1 [INFO] [stderr] Downloaded bindgen v0.54.0 [INFO] [stderr] Downloaded async-gcode v0.3.0 [INFO] [stderr] Downloaded usb-device v0.2.9 [INFO] [stderr] Downloaded usbd-hid-macros v0.6.0 [INFO] [stderr] Downloaded embassy-usb v0.1.0 [INFO] [stderr] Downloaded embassy-time v0.3.0 [INFO] [stderr] Downloaded libloading v0.5.2 [INFO] [stderr] Downloaded rustix v0.38.28 [INFO] [stderr] Downloaded lvgl v0.5.2 [INFO] [stderr] Downloaded async-executor v1.8.0 [INFO] [stderr] Downloaded stm32-fmc v0.3.0 [INFO] [stderr] Downloaded embassy-sync v0.3.0 [INFO] [stderr] Downloaded thiserror v1.0.56 [INFO] [stderr] Downloaded document-features v0.2.8 [INFO] [stderr] Downloaded embassy-time-driver v0.1.0 [INFO] [stderr] Downloaded micromath v1.1.1 [INFO] [stderr] Downloaded pid v4.0.0 [INFO] [stderr] Downloaded async-channel v2.1.1 [INFO] [stderr] Downloaded wasm-bindgen-futures v0.4.39 [INFO] [stderr] Downloaded is-terminal v0.4.10 [INFO] [stderr] Downloaded usbd-hid-descriptors v0.1.2 [INFO] [stderr] Downloaded usbd-hid v0.6.1 [INFO] [stderr] Downloaded embedded-io-async v0.6.1 [INFO] [stderr] Downloaded clang-sys v0.29.3 [INFO] [stderr] Downloaded async-io v2.2.2 [INFO] [stderr] Downloaded printhor-hwi_native v0.0.3 [INFO] [stderr] Downloaded bxcan v0.7.0 [INFO] [stderr] Downloaded cortex-m-rt v0.7.3 [INFO] [stderr] Downloaded serde v1.0.195 [INFO] [stderr] Downloaded linked_list_allocator v0.10.5 [INFO] [stderr] Downloaded embassy-executor v0.5.0 [INFO] [stderr] Downloaded semver v1.0.21 [INFO] [stderr] Downloaded embassy-usb-driver v0.1.0 [INFO] [stderr] Downloaded embassy-sync v0.5.0 [INFO] [stderr] Downloaded defmt v0.3.5 [INFO] [stderr] Downloaded thread-priority v0.15.1 [INFO] [stderr] Downloaded defmt-macros v0.3.6 [INFO] [stderr] Downloaded printhor-hwi_mks_robin_nano v0.0.3 [INFO] [stderr] Downloaded gloo-timers v0.2.6 [INFO] [stderr] Downloaded embassy-embedded-hal v0.1.0 [INFO] [stderr] Downloaded sdio-host v0.5.0 [INFO] [stderr] Downloaded embassy-futures v0.1.1 [INFO] [stderr] Downloaded thiserror-impl v1.0.56 [INFO] [stderr] Downloaded serde_derive v1.0.195 [INFO] [stderr] Downloaded proc-macro2 v1.0.76 [INFO] [stderr] Downloaded embassy-hal-internal v0.1.0 [INFO] [stderr] Downloaded embedded-storage v0.3.1 [INFO] [stderr] Downloaded static_cell v2.0.0 [INFO] [stderr] Downloaded alloc-cortex-m v0.4.4 [INFO] [stderr] Downloaded cortex-m-rt-macros v0.7.0 [INFO] [stderr] Downloaded strum_macros v0.25.3 [INFO] [stderr] Downloaded defmt-parser v0.3.3 [INFO] [stderr] Downloaded embassy-time-queue-driver v0.1.0 [INFO] [stderr] Downloaded embedded-graphics v0.7.1 [INFO] [stderr] Downloaded lvgl-sys v0.5.2 [INFO] [stderr] Downloaded stm32-metapac v15.0.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] e51e47d6c8ee48cc354f07dcd2fbfe9977aeb42c07dce57fc20d737aed39897e [INFO] running `Command { std: "docker" "start" "-a" "e51e47d6c8ee48cc354f07dcd2fbfe9977aeb42c07dce57fc20d737aed39897e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "e51e47d6c8ee48cc354f07dcd2fbfe9977aeb42c07dce57fc20d737aed39897e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e51e47d6c8ee48cc354f07dcd2fbfe9977aeb42c07dce57fc20d737aed39897e", kill_on_drop: false }` [INFO] [stdout] e51e47d6c8ee48cc354f07dcd2fbfe9977aeb42c07dce57fc20d737aed39897e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] b48c397a8c1010750210653b77c27922573a5efbb42c547cc74207aa67a030b9 [INFO] running `Command { std: "docker" "start" "-a" "b48c397a8c1010750210653b77c27922573a5efbb42c547cc74207aa67a030b9", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.1.0 [INFO] [stderr] Checking pin-project-lite v0.2.13 [INFO] [stderr] Checking futures-core v0.3.30 [INFO] [stderr] Compiling proc-macro2 v1.0.76 [INFO] [stderr] Compiling crossbeam-utils v0.8.19 [INFO] [stderr] Compiling unicode-ident v1.0.12 [INFO] [stderr] Checking parking v2.2.0 [INFO] [stderr] Checking cfg-if v1.0.0 [INFO] [stderr] Checking futures-io v0.3.30 [INFO] [stderr] Compiling libc v0.2.152 [INFO] [stderr] Checking bytemuck v1.14.0 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Checking byteorder v1.4.3 [INFO] [stderr] Checking futures-sink v0.3.30 [INFO] [stderr] Checking value-bag v1.6.0 [INFO] [stderr] Compiling rustix v0.38.28 [INFO] [stderr] Checking log v0.4.20 [INFO] [stderr] Checking bitflags v2.4.1 [INFO] [stderr] Checking critical-section v1.1.2 [INFO] [stderr] Checking linux-raw-sys v0.4.12 [INFO] [stderr] Checking fastrand v2.0.1 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Checking futures-task v0.3.30 [INFO] [stderr] Checking memchr v2.7.1 [INFO] [stderr] Compiling num-traits v0.2.17 [INFO] [stderr] Checking concurrent-queue v2.4.0 [INFO] [stderr] Checking futures-util v0.3.30 [INFO] [stderr] Compiling heapless v0.8.0 [INFO] [stderr] Checking nb v1.1.0 [INFO] [stderr] Checking tracing-core v0.1.32 [INFO] [stderr] Checking event-listener v4.0.3 [INFO] [stderr] Checking event-listener-strategy v0.4.0 [INFO] [stderr] Compiling litrs v0.4.1 [INFO] [stderr] Checking tracing v0.1.40 [INFO] [stderr] Checking nb v0.1.3 [INFO] [stderr] Checking async-lock v3.3.0 [INFO] [stderr] Compiling quote v1.0.35 [INFO] [stderr] Checking futures-lite v2.2.0 [INFO] [stderr] Checking hash32 v0.3.1 [INFO] [stderr] Compiling syn v2.0.48 [INFO] [stderr] Compiling embedded-hal-async v1.0.0 [INFO] [stderr] Compiling embassy-time-driver v0.1.0 [INFO] [stderr] Compiling ident_case v1.0.1 [INFO] [stderr] Compiling document-features v0.2.8 [INFO] [stderr] Checking stable_deref_trait v1.2.0 [INFO] [stderr] Checking void v1.0.2 [INFO] [stderr] Compiling fnv v1.0.7 [INFO] [stderr] Compiling embassy-time-queue-driver v0.1.0 [INFO] [stderr] Compiling rustversion v1.0.14 [INFO] [stderr] Compiling embedded-io-async v0.6.1 [INFO] [stderr] Compiling strsim v0.10.0 [INFO] [stderr] Compiling io-lifetimes v1.0.11 [INFO] [stderr] Checking embedded-hal v0.2.7 [INFO] [stderr] Compiling polling v2.8.0 [INFO] [stderr] Compiling embassy-sync v0.5.0 [INFO] [stderr] Checking async-task v4.7.0 [INFO] [stderr] Checking embedded-io v0.6.1 [INFO] [stderr] Checking atomic-waker v1.1.2 [INFO] [stderr] Checking event-listener v2.5.3 [INFO] [stderr] Compiling portable-atomic v1.6.0 [INFO] [stderr] Checking bitflags v1.3.2 [INFO] [stderr] Checking embedded-hal v1.0.0 [INFO] [stderr] Compiling rustix v0.37.27 [INFO] [stderr] Checking piper v0.2.1 [INFO] [stderr] Checking async-channel v2.1.1 [INFO] [stderr] Checking aho-corasick v1.1.2 [INFO] [stderr] Compiling async-io v1.13.0 [INFO] [stderr] Checking fastrand v1.9.0 [INFO] [stderr] Checking waker-fn v1.1.1 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking regex-syntax v0.8.2 [INFO] [stderr] Checking linux-raw-sys v0.3.8 [INFO] [stderr] Checking futures-lite v1.13.0 [INFO] [stderr] Checking embassy-time v0.3.0 [INFO] [stderr] Checking blocking v1.5.1 [INFO] [stderr] Checking async-executor v1.8.0 [INFO] [stderr] Checking async-lock v2.8.0 [INFO] [stderr] Checking socket2 v0.4.10 [INFO] [stderr] Checking futures-channel v0.3.30 [INFO] [stderr] Checking embedded-storage v0.3.1 [INFO] [stderr] Compiling embassy-executor v0.5.0 [INFO] [stderr] Compiling serde v1.0.195 [INFO] [stderr] Checking once_cell v1.19.0 [INFO] [stderr] Compiling rust_decimal v1.33.1 [INFO] [stderr] Checking regex-automata v0.4.3 [INFO] [stderr] Checking static_cell v2.0.0 [INFO] [stderr] Checking embedded-storage-async v0.4.1 [INFO] [stderr] Checking futures v0.3.30 [INFO] [stderr] Checking async-channel v1.9.0 [INFO] [stderr] Checking kv-log-macro v1.0.7 [INFO] [stderr] Checking embassy-futures v0.1.1 [INFO] [stderr] Checking termcolor v1.4.1 [INFO] [stderr] Compiling darling_core v0.20.3 [INFO] [stderr] Compiling arrayvec v0.7.4 [INFO] [stderr] Compiling heck v0.4.1 [INFO] [stderr] Checking either v1.9.0 [INFO] [stderr] Checking humantime v2.1.0 [INFO] [stderr] Checking async-gcode v0.3.0 [INFO] [stderr] Checking embassy-embedded-hal v0.1.0 [INFO] [stderr] Checking printhor-hwa-common v0.0.3 [INFO] [stderr] Checking polling v3.3.1 [INFO] [stderr] Checking is-terminal v0.4.10 [INFO] [stderr] Checking thread-priority v0.15.1 [INFO] [stderr] Checking async-io v2.2.2 [INFO] [stderr] Checking regex v1.10.2 [INFO] [stderr] Checking embedded-sdmmc v0.5.0 [INFO] [stderr] Checking async-global-executor v2.4.1 [INFO] [stderr] Compiling prinThor v0.0.3 (/opt/rustwide/workdir) [INFO] [stderr] Checking async-std v1.12.0 [INFO] [stderr] Checking env_logger v0.10.1 [INFO] [stderr] Compiling rust_decimal_macros v1.33.1 [INFO] [stderr] Checking pid v4.0.0 [INFO] [stderr] Checking gnuplot v0.0.39 [INFO] [stderr] Checking micromath v2.1.0 [INFO] [stderr] Compiling strum_macros v0.25.3 [INFO] [stderr] Compiling darling_macro v0.20.3 [INFO] [stderr] Compiling const_env_impl v0.1.2 [INFO] [stderr] Compiling darling v0.20.3 [INFO] [stderr] Compiling embassy-executor-macros v0.4.0 [INFO] [stderr] Checking printhor-hwi_native v0.0.3 [INFO] [stderr] Checking strum v0.25.0 [INFO] [stderr] Compiling const_env v0.1.2 [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/mod.rs:89:11 [INFO] [stdout] | [INFO] [stdout] 89 | #[cfg(all(feature = "integration-test"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "integration-test"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] = note: `#[warn(clippy::non_minimal_cfg)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:47:7 [INFO] [stdout] | [INFO] [stdout] 47 | #[cfg(any(feature = "with-hotend"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-hotend"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:50:7 [INFO] [stdout] | [INFO] [stdout] 50 | #[cfg(any(feature = "with-hotend"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-hotend"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:53:7 [INFO] [stdout] | [INFO] [stdout] 53 | #[cfg(any(feature = "with-hotend"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-hotend"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:58:7 [INFO] [stdout] | [INFO] [stdout] 58 | #[cfg(any(feature = "with-hotbed"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-hotbed"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:61:7 [INFO] [stdout] | [INFO] [stdout] 61 | #[cfg(any(feature = "with-hotbed"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-hotbed"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:64:7 [INFO] [stdout] | [INFO] [stdout] 64 | #[cfg(any(feature = "with-hotbed"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-hotbed"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:68:7 [INFO] [stdout] | [INFO] [stdout] 68 | #[cfg(any(feature = "with-fan0"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-fan0"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:71:7 [INFO] [stdout] | [INFO] [stdout] 71 | #[cfg(any(feature = "with-fan0"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-fan0"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:74:7 [INFO] [stdout] | [INFO] [stdout] 74 | #[cfg(any(feature = "with-fan-layer"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-fan-layer"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:77:7 [INFO] [stdout] | [INFO] [stdout] 77 | #[cfg(any(feature = "with-fan-layer"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-fan-layer"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:80:7 [INFO] [stdout] | [INFO] [stdout] 80 | #[cfg(any(feature = "with-laser"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-laser"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:83:7 [INFO] [stdout] | [INFO] [stdout] 83 | #[cfg(any(feature = "with-laser"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-laser"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/mod.rs:89:11 [INFO] [stdout] | [INFO] [stdout] 89 | #[cfg(all(feature = "integration-test"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "integration-test"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] = note: `#[warn(clippy::non_minimal_cfg)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:47:7 [INFO] [stdout] | [INFO] [stdout] 47 | #[cfg(any(feature = "with-hotend"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-hotend"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:50:7 [INFO] [stdout] | [INFO] [stdout] 50 | #[cfg(any(feature = "with-hotend"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-hotend"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:53:7 [INFO] [stdout] | [INFO] [stdout] 53 | #[cfg(any(feature = "with-hotend"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-hotend"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:58:7 [INFO] [stdout] | [INFO] [stdout] 58 | #[cfg(any(feature = "with-hotbed"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-hotbed"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:61:7 [INFO] [stdout] | [INFO] [stdout] 61 | #[cfg(any(feature = "with-hotbed"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-hotbed"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:64:7 [INFO] [stdout] | [INFO] [stdout] 64 | #[cfg(any(feature = "with-hotbed"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-hotbed"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:68:7 [INFO] [stdout] | [INFO] [stdout] 68 | #[cfg(any(feature = "with-fan0"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-fan0"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:71:7 [INFO] [stdout] | [INFO] [stdout] 71 | #[cfg(any(feature = "with-fan0"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-fan0"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:74:7 [INFO] [stdout] | [INFO] [stdout] 74 | #[cfg(any(feature = "with-fan-layer"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-fan-layer"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:77:7 [INFO] [stdout] | [INFO] [stdout] 77 | #[cfg(any(feature = "with-fan-layer"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-fan-layer"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:80:7 [INFO] [stdout] | [INFO] [stdout] 80 | #[cfg(any(feature = "with-laser"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-laser"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded sub `cfg` when there is only one condition [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:83:7 [INFO] [stdout] | [INFO] [stdout] 83 | #[cfg(any(feature = "with-laser"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `feature = "with-laser"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_minimal_cfg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `with-fan` [INFO] [stdout] --> src/bin/printhor/hwi/mod.rs:29:7 [INFO] [stdout] | [INFO] [stdout] 29 | #[cfg(feature = "with-fan")] [INFO] [stdout] | ^^^^^^^^^^---------- [INFO] [stdout] | | [INFO] [stdout] | help: there is a expected value with a similar name: `"with-fan0"` [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `with-fan` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/mod.rs:123:11 [INFO] [stdout] | [INFO] [stdout] 123 | #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/mod.rs:126:11 [INFO] [stdout] | [INFO] [stdout] 126 | #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `with-fan1` [INFO] [stdout] --> src/bin/printhor/control/processor.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | #[cfg(feature = "with-fan1")] [INFO] [stdout] | ^^^^^^^^^^----------- [INFO] [stdout] | | [INFO] [stdout] | help: there is a expected value with a similar name: `"with-fan0"` [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `with-fan1` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `with-fan` [INFO] [stdout] --> src/bin/printhor/control/processor.rs:72:19 [INFO] [stdout] | [INFO] [stdout] 72 | #[cfg(feature = "with-fan")] [INFO] [stdout] | ^^^^^^^^^^---------- [INFO] [stdout] | | [INFO] [stdout] | help: there is a expected value with a similar name: `"with-fan0"` [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `with-fan` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `with-fan1` [INFO] [stdout] --> src/bin/printhor/control/processor.rs:80:19 [INFO] [stdout] | [INFO] [stdout] 80 | #[cfg(feature = "with-fan1")] [INFO] [stdout] | ^^^^^^^^^^----------- [INFO] [stdout] | | [INFO] [stdout] | help: there is a expected value with a similar name: `"with-fan0"` [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `with-fan1` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/processor.rs:121:19 [INFO] [stdout] | [INFO] [stdout] 121 | #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `with-fan1` [INFO] [stdout] --> src/bin/printhor/control/processor.rs:319:46 [INFO] [stdout] | [INFO] [stdout] 319 | #[cfg(any(feature = "with-fan0", feature = "with-fan1"))] [INFO] [stdout] | ^^^^^^^^^^----------- [INFO] [stdout] | | [INFO] [stdout] | help: there is a expected value with a similar name: `"with-fan0"` [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `with-fan1` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `with-fan1` [INFO] [stdout] --> src/bin/printhor/control/processor.rs:326:46 [INFO] [stdout] | [INFO] [stdout] 326 | #[cfg(any(feature = "with-fan0", feature = "with-fan1"))] [INFO] [stdout] | ^^^^^^^^^^----------- [INFO] [stdout] | | [INFO] [stdout] | help: there is a expected value with a similar name: `"with-fan0"` [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `with-fan1` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:139:17 [INFO] [stdout] | [INFO] [stdout] 139 | v_0: v_0, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `v_0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:140:17 [INFO] [stdout] | [INFO] [stdout] 140 | v_1: v_1, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `v_1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/parser.rs:76:39 [INFO] [stdout] | [INFO] [stdout] 76 | ... #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/parser.rs:104:59 [INFO] [stdout] | [INFO] [stdout] 104 | ... #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/parser.rs:303:59 [INFO] [stdout] | [INFO] [stdout] 303 | ... #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/task_control.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | #[cfg(any(feature = "grbl-compat", feature = "with-printjob", feature = "with-sdcard"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/task_control.rs:83:35 [INFO] [stdout] | [INFO] [stdout] 83 | ... #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/bin/printhor/control/task_temperature.rs:90:1 [INFO] [stdout] | [INFO] [stdout] 90 | use pid; [INFO] [stdout] | ^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:139:17 [INFO] [stdout] | [INFO] [stdout] 139 | v_0: v_0, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `v_0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:140:17 [INFO] [stdout] | [INFO] [stdout] 140 | v_1: v_1, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `v_1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:139:17 [INFO] [stdout] | [INFO] [stdout] 139 | v_0: v_0, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `v_0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:140:17 [INFO] [stdout] | [INFO] [stdout] 140 | v_1: v_1, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `v_1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `with-fan` [INFO] [stdout] --> src/bin/printhor/hwi/mod.rs:29:7 [INFO] [stdout] | [INFO] [stdout] 29 | #[cfg(feature = "with-fan")] [INFO] [stdout] | ^^^^^^^^^^---------- [INFO] [stdout] | | [INFO] [stdout] | help: there is a expected value with a similar name: `"with-fan0"` [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `with-fan` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/mod.rs:123:11 [INFO] [stdout] | [INFO] [stdout] 123 | #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/mod.rs:126:11 [INFO] [stdout] | [INFO] [stdout] 126 | #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `with-fan1` [INFO] [stdout] --> src/bin/printhor/control/processor.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | #[cfg(feature = "with-fan1")] [INFO] [stdout] | ^^^^^^^^^^----------- [INFO] [stdout] | | [INFO] [stdout] | help: there is a expected value with a similar name: `"with-fan0"` [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `with-fan1` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `with-fan` [INFO] [stdout] --> src/bin/printhor/control/processor.rs:72:19 [INFO] [stdout] | [INFO] [stdout] 72 | #[cfg(feature = "with-fan")] [INFO] [stdout] | ^^^^^^^^^^---------- [INFO] [stdout] | | [INFO] [stdout] | help: there is a expected value with a similar name: `"with-fan0"` [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `with-fan` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `with-fan1` [INFO] [stdout] --> src/bin/printhor/control/processor.rs:80:19 [INFO] [stdout] | [INFO] [stdout] 80 | #[cfg(feature = "with-fan1")] [INFO] [stdout] | ^^^^^^^^^^----------- [INFO] [stdout] | | [INFO] [stdout] | help: there is a expected value with a similar name: `"with-fan0"` [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `with-fan1` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/processor.rs:121:19 [INFO] [stdout] | [INFO] [stdout] 121 | #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `with-fan1` [INFO] [stdout] --> src/bin/printhor/control/processor.rs:319:46 [INFO] [stdout] | [INFO] [stdout] 319 | #[cfg(any(feature = "with-fan0", feature = "with-fan1"))] [INFO] [stdout] | ^^^^^^^^^^----------- [INFO] [stdout] | | [INFO] [stdout] | help: there is a expected value with a similar name: `"with-fan0"` [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `with-fan1` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `with-fan1` [INFO] [stdout] --> src/bin/printhor/control/processor.rs:326:46 [INFO] [stdout] | [INFO] [stdout] 326 | #[cfg(any(feature = "with-fan0", feature = "with-fan1"))] [INFO] [stdout] | ^^^^^^^^^^----------- [INFO] [stdout] | | [INFO] [stdout] | help: there is a expected value with a similar name: `"with-fan0"` [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `with-fan1` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:139:17 [INFO] [stdout] | [INFO] [stdout] 139 | v_0: v_0, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `v_0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:140:17 [INFO] [stdout] | [INFO] [stdout] 140 | v_1: v_1, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `v_1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/parser.rs:76:39 [INFO] [stdout] | [INFO] [stdout] 76 | ... #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/parser.rs:104:59 [INFO] [stdout] | [INFO] [stdout] 104 | ... #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/parser.rs:303:59 [INFO] [stdout] | [INFO] [stdout] 303 | ... #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/task_control.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | #[cfg(any(feature = "grbl-compat", feature = "with-printjob", feature = "with-sdcard"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `grbl-compat` [INFO] [stdout] --> src/bin/printhor/control/task_control.rs:83:35 [INFO] [stdout] | [INFO] [stdout] 83 | ... #[cfg(feature = "grbl-compat")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `_arch`, `alloc-cortex-m`, `arch-std`, `cortex-m`, `cortex-m-rt`, `cstr_core`, `default`, `defmt`, `defmt-rtt`, `display-interface-parallel-gpio`, `embassy-embedded-hal`, `embassy-executor`, `embassy-stm32`, `embedded-graphics`, `embedded-graphics-core`, `embedded-hal`, `embedded-sdmmc`, `fixed-point-128-impl`, `float-point-f32-impl`, `float-point-f64-impl`, `gnuplot`, `has-extruder`, `ili9341`, `ili9341_parallel`, `ili9341_spi`, `integration-test`, `integration-test-benchy`, `integration-test-dwell`, `integration-test-homing`, `integration-test-laser-engrave`, `integration-test-m100`, `integration-test-move-boundaries`, `integration-test-move-oblique`, `integration-test-move-ortho`, and `integration-test-power-on` and 39 more [INFO] [stdout] = help: consider adding `grbl-compat` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/bin/printhor/control/task_temperature.rs:90:1 [INFO] [stdout] | [INFO] [stdout] 90 | use pid; [INFO] [stdout] | ^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Boundaries` is never constructed [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct Boundaries { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) 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/bin/printhor/math/real_fixedpoint.rs:82:19 [INFO] [stdout] | [INFO] [stdout] 82 | pub fn to_f64(&self) -> f64 { [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/bin/printhor/math/real_fixedpoint.rs:87:19 [INFO] [stdout] | [INFO] [stdout] 87 | pub fn to_i32(&self) -> Option { [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: methods with the following characteristics: (`to_*` and `self` type is `Copy`) usually take `self` by value [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:92:19 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn to_i64(&self) -> Option { [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: manual implementation of `Option::map` [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | / match self.0.sqrt() { [INFO] [stdout] 104 | | None => {None} [INFO] [stdout] 105 | | Some(v) => {Some(Real(v))} [INFO] [stdout] 106 | | } [INFO] [stdout] | |_________^ help: try: `self.0.sqrt().map(Real)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-canonical implementation of `partial_cmp` on an `Ord` type [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:212:1 [INFO] [stdout] | [INFO] [stdout] 212 | / impl PartialOrd for Real { [INFO] [stdout] 213 | | [INFO] [stdout] 214 | | fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 215 | | self.0.partial_cmp(&other.0) [INFO] [stdout] ... | [INFO] [stdout] 233 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_canonical_partial_ord_impl [INFO] [stdout] = note: `#[warn(clippy::non_canonical_partial_ord_impl)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 214 - fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 215 - self.0.partial_cmp(&other.0) [INFO] [stdout] 216 - } [INFO] [stdout] 214 + fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:343:33 [INFO] [stdout] | [INFO] [stdout] 343 | self.current_back = self.current.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.current` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:344:29 [INFO] [stdout] | [INFO] [stdout] 344 | self.current += self.step_size.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.step_size` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:345:18 [INFO] [stdout] | [INFO] [stdout] 345 | Some(self.current_back.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.current_back` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:76:32 [INFO] [stdout] | [INFO] [stdout] 76 | x: self.x.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:77:32 [INFO] [stdout] | [INFO] [stdout] 77 | y: self.y.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:78:32 [INFO] [stdout] | [INFO] [stdout] 78 | z: self.z.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:79:32 [INFO] [stdout] | [INFO] [stdout] 79 | e: self.e.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/bin/printhor/tgeo.rs:86:39 [INFO] [stdout] | [INFO] [stdout] 86 | where F: FnMut((CoordSel, &T)) -> () [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [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/bin/printhor/tgeo.rs:138:55 [INFO] [stdout] | [INFO] [stdout] 138 | if coord_idx.contains(CoordSel::X) { self.x = self.x.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|v| v + val)` [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] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/bin/printhor/tgeo.rs:139:55 [INFO] [stdout] | [INFO] [stdout] 139 | if coord_idx.contains(CoordSel::Y) { self.y = self.y.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|v| v + val)` [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/bin/printhor/tgeo.rs:140:55 [INFO] [stdout] | [INFO] [stdout] 140 | if coord_idx.contains(CoordSel::Z) { self.z = self.z.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|v| v + val)` [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/bin/printhor/tgeo.rs:141:55 [INFO] [stdout] | [INFO] [stdout] 141 | if coord_idx.contains(CoordSel::E) { self.e = self.e.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|v| v + val)` [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/bin/printhor/tgeo.rs:180:53 [INFO] [stdout] | [INFO] [stdout] 180 | ... x: if coord_idx.contains(CoordSel::X) { self.x.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 180 - x: if coord_idx.contains(CoordSel::X) { self.x.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.x}, [INFO] [stdout] 180 + x: if coord_idx.contains(CoordSel::X) { self.x.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.x}, [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/bin/printhor/tgeo.rs:181:53 [INFO] [stdout] | [INFO] [stdout] 181 | ... y: if coord_idx.contains(CoordSel::Y) { self.y.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 181 - y: if coord_idx.contains(CoordSel::Y) { self.y.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.y}, [INFO] [stdout] 181 + y: if coord_idx.contains(CoordSel::Y) { self.y.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.y}, [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/bin/printhor/tgeo.rs:182:53 [INFO] [stdout] | [INFO] [stdout] 182 | ... z: if coord_idx.contains(CoordSel::Z) { self.z.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 182 - z: if coord_idx.contains(CoordSel::Z) { self.z.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.z}, [INFO] [stdout] 182 + z: if coord_idx.contains(CoordSel::Z) { self.z.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.z}, [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/bin/printhor/tgeo.rs:183:53 [INFO] [stdout] | [INFO] [stdout] 183 | ... e: if coord_idx.contains(CoordSel::E) { self.e.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 183 - e: if coord_idx.contains(CoordSel::E) { self.e.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.e}, [INFO] [stdout] 183 + e: if coord_idx.contains(CoordSel::E) { self.e.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.e}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/printhor/tgeo.rs:376:9 [INFO] [stdout] | [INFO] [stdout] 376 | return !matching_point; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 376 - return !matching_point; [INFO] [stdout] 376 + !matching_point [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/printhor/tgeo.rs:392:9 [INFO] [stdout] | [INFO] [stdout] 392 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 392 - return true; [INFO] [stdout] 392 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Boundaries` is never constructed [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct Boundaries { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [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/bin/printhor/tgeo.rs:457:16 [INFO] [stdout] | [INFO] [stdout] 457 | x: self.x.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|v| v.abs())` [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/bin/printhor/tgeo.rs:458:16 [INFO] [stdout] | [INFO] [stdout] 458 | y: self.y.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|v| v.abs())` [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/bin/printhor/tgeo.rs:459:16 [INFO] [stdout] | [INFO] [stdout] 459 | z: self.z.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|v| v.abs())` [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/bin/printhor/tgeo.rs:460:16 [INFO] [stdout] | [INFO] [stdout] 460 | e: self.e.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|v| v.abs())` [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 `clone` on type `T` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/tgeo.rs:527:32 [INFO] [stdout] | [INFO] [stdout] 527 | ((*self) / norm.clone(), norm) [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `norm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [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/bin/printhor/tgeo.rs:634:37 [INFO] [stdout] | [INFO] [stdout] 634 | x: self.x.and_then(|x0| rhs.x.and_then(|x1| Some(x0 + x1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.x.map(|x1| x0 + x1)` [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/bin/printhor/tgeo.rs:635:37 [INFO] [stdout] | [INFO] [stdout] 635 | y: self.y.and_then(|y0| rhs.y.and_then(|y1| Some(y0 + y1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.y.map(|y1| y0 + y1)` [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/bin/printhor/tgeo.rs:636:37 [INFO] [stdout] | [INFO] [stdout] 636 | z: self.z.and_then(|z0| rhs.z.and_then(|z1| Some(z0 + z1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.z.map(|z1| z0 + z1)` [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/bin/printhor/tgeo.rs:637:37 [INFO] [stdout] | [INFO] [stdout] 637 | e: self.e.and_then(|e0| rhs.e.and_then(|e1| Some(e0 + e1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.e.map(|e1| e0 + e1)` [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/bin/printhor/tgeo.rs:662:37 [INFO] [stdout] | [INFO] [stdout] 662 | x: self.x.and_then(|x0| rhs.x.and_then(|x1| Some(x0 - x1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.x.map(|x1| x0 - x1)` [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/bin/printhor/tgeo.rs:663:37 [INFO] [stdout] | [INFO] [stdout] 663 | y: self.y.and_then(|y0| rhs.y.and_then(|y1| Some(y0 - y1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.y.map(|y1| y0 - y1)` [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/bin/printhor/tgeo.rs:664:37 [INFO] [stdout] | [INFO] [stdout] 664 | z: self.z.and_then(|z0| rhs.z.and_then(|z1| Some(z0 - z1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.z.map(|z1| z0 - z1)` [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/bin/printhor/tgeo.rs:665:37 [INFO] [stdout] | [INFO] [stdout] 665 | e: self.e.and_then(|e0| rhs.e.and_then(|e1| Some(e0 - e1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.e.map(|e1| e0 - e1)` [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/bin/printhor/tgeo.rs:689:37 [INFO] [stdout] | [INFO] [stdout] 689 | x: self.x.and_then(|x0| rhs.x.and_then(|x1| Some(x0 * x1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.x.map(|x1| x0 * x1)` [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/bin/printhor/tgeo.rs:690:37 [INFO] [stdout] | [INFO] [stdout] 690 | y: self.y.and_then(|y0| rhs.y.and_then(|y1| Some(y0 * y1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.y.map(|y1| y0 * y1)` [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/bin/printhor/tgeo.rs:691:37 [INFO] [stdout] | [INFO] [stdout] 691 | z: self.z.and_then(|z0| rhs.z.and_then(|z1| Some(z0 * z1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.z.map(|z1| z0 * z1)` [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/bin/printhor/tgeo.rs:692:37 [INFO] [stdout] | [INFO] [stdout] 692 | e: self.e.and_then(|e0| rhs.e.and_then(|e1| Some(e0 * e1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.e.map(|e1| e0 * e1)` [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/bin/printhor/tgeo.rs:705:16 [INFO] [stdout] | [INFO] [stdout] 705 | x: self.x.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:706:16 [INFO] [stdout] | [INFO] [stdout] 706 | y: self.y.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:707:16 [INFO] [stdout] | [INFO] [stdout] 707 | z: self.z.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:708:16 [INFO] [stdout] | [INFO] [stdout] 708 | e: self.e.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:762:20 [INFO] [stdout] | [INFO] [stdout] 762 | x: self.x.and_then(|x0| Some(x0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|x0| x0 / rhs)` [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/bin/printhor/tgeo.rs:763:20 [INFO] [stdout] | [INFO] [stdout] 763 | y: self.y.and_then(|y0| Some(y0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|y0| y0 / rhs)` [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/bin/printhor/tgeo.rs:764:20 [INFO] [stdout] | [INFO] [stdout] 764 | z: self.z.and_then(|z0| Some(z0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|z0| z0 / rhs)` [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/bin/printhor/tgeo.rs:765:20 [INFO] [stdout] | [INFO] [stdout] 765 | e: self.e.and_then(|e0| Some(e0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|e0| e0 / rhs)` [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: manual implementation of an assign operation [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:184:17 [INFO] [stdout] | [INFO] [stdout] 184 | gamma = gamma * HALF; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gamma *= HALF` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` 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/bin/printhor/math/real_fixedpoint.rs:82:19 [INFO] [stdout] | [INFO] [stdout] 82 | pub fn to_f64(&self) -> f64 { [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/bin/printhor/math/real_fixedpoint.rs:87:19 [INFO] [stdout] | [INFO] [stdout] 87 | pub fn to_i32(&self) -> Option { [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: methods with the following characteristics: (`to_*` and `self` type is `Copy`) usually take `self` by value [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:92:19 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn to_i64(&self) -> Option { [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: manual implementation of `Option::map` [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | / match self.0.sqrt() { [INFO] [stdout] 104 | | None => {None} [INFO] [stdout] 105 | | Some(v) => {Some(Real(v))} [INFO] [stdout] 106 | | } [INFO] [stdout] | |_________^ help: try: `self.0.sqrt().map(Real)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-canonical implementation of `partial_cmp` on an `Ord` type [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:212:1 [INFO] [stdout] | [INFO] [stdout] 212 | / impl PartialOrd for Real { [INFO] [stdout] 213 | | [INFO] [stdout] 214 | | fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 215 | | self.0.partial_cmp(&other.0) [INFO] [stdout] ... | [INFO] [stdout] 233 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_canonical_partial_ord_impl [INFO] [stdout] = note: `#[warn(clippy::non_canonical_partial_ord_impl)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 214 - fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 215 - self.0.partial_cmp(&other.0) [INFO] [stdout] 216 - } [INFO] [stdout] 214 + fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `cnt` is used as a loop counter [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:462:9 [INFO] [stdout] | [INFO] [stdout] 462 | for (_v, ti, pos) in self.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (cnt, (_v, ti, pos)) in self.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:472:22 [INFO] [stdout] | [INFO] [stdout] 472 | let dt = c_ti.clone() - last_t; [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `c_ti` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:497:40 [INFO] [stdout] | [INFO] [stdout] 497 | let s = (c_pos - last_p) / dt.clone(); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `dt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:498:23 [INFO] [stdout] | [INFO] [stdout] 498 | let a = ((s.clone() - last_s) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `s` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:498:45 [INFO] [stdout] | [INFO] [stdout] 498 | let a = ((s.clone() - last_s) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `dt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:499:23 [INFO] [stdout] | [INFO] [stdout] 499 | let j = ((a.clone() - last_a) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:499:45 [INFO] [stdout] | [INFO] [stdout] 499 | let j = ((a.clone() - last_a) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `dt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:501:27 [INFO] [stdout] | [INFO] [stdout] 501 | time_ref.push(c_ti.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `c_ti` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:502:26 [INFO] [stdout] | [INFO] [stdout] 502 | pos_ref.push(c_pos.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `c_pos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:505:30 [INFO] [stdout] | [INFO] [stdout] 505 | spd_ref.push(s.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `s` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:508:30 [INFO] [stdout] | [INFO] [stdout] 508 | acc_ref.push(a.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:511:31 [INFO] [stdout] | [INFO] [stdout] 511 | jerk_ref.push(j.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `j` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:343:33 [INFO] [stdout] | [INFO] [stdout] 343 | self.current_back = self.current.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.current` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:344:29 [INFO] [stdout] | [INFO] [stdout] 344 | self.current += self.step_size.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.step_size` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:345:18 [INFO] [stdout] | [INFO] [stdout] 345 | Some(self.current_back.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.current_back` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:76:32 [INFO] [stdout] | [INFO] [stdout] 76 | x: self.x.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:77:32 [INFO] [stdout] | [INFO] [stdout] 77 | y: self.y.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:78:32 [INFO] [stdout] | [INFO] [stdout] 78 | z: self.z.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:79:32 [INFO] [stdout] | [INFO] [stdout] 79 | e: self.e.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/bin/printhor/tgeo.rs:86:39 [INFO] [stdout] | [INFO] [stdout] 86 | where F: FnMut((CoordSel, &T)) -> () [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CONSUMED` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | CONSUMED, [INFO] [stdout] | ^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Consumed` [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 `QUEUED` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | QUEUED, [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Queued` [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 `DEFERRED` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | DEFERRED(EventStatus), [INFO] [stdout] | ^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Deferred` [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 `BUSY` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | BUSY, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Busy` [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 `ERR` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | ERR, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Err` [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 `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/bin/printhor/tgeo.rs:138:55 [INFO] [stdout] | [INFO] [stdout] 138 | if coord_idx.contains(CoordSel::X) { self.x = self.x.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|v| v + val)` [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] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/bin/printhor/tgeo.rs:139:55 [INFO] [stdout] | [INFO] [stdout] 139 | if coord_idx.contains(CoordSel::Y) { self.y = self.y.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|v| v + val)` [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/bin/printhor/tgeo.rs:140:55 [INFO] [stdout] | [INFO] [stdout] 140 | if coord_idx.contains(CoordSel::Z) { self.z = self.z.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|v| v + val)` [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/bin/printhor/tgeo.rs:141:55 [INFO] [stdout] | [INFO] [stdout] 141 | if coord_idx.contains(CoordSel::E) { self.e = self.e.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|v| v + val)` [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/bin/printhor/tgeo.rs:180:53 [INFO] [stdout] | [INFO] [stdout] 180 | ... x: if coord_idx.contains(CoordSel::X) { self.x.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 180 - x: if coord_idx.contains(CoordSel::X) { self.x.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.x}, [INFO] [stdout] 180 + x: if coord_idx.contains(CoordSel::X) { self.x.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.x}, [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/bin/printhor/tgeo.rs:181:53 [INFO] [stdout] | [INFO] [stdout] 181 | ... y: if coord_idx.contains(CoordSel::Y) { self.y.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 181 - y: if coord_idx.contains(CoordSel::Y) { self.y.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.y}, [INFO] [stdout] 181 + y: if coord_idx.contains(CoordSel::Y) { self.y.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.y}, [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/bin/printhor/tgeo.rs:182:53 [INFO] [stdout] | [INFO] [stdout] 182 | ... z: if coord_idx.contains(CoordSel::Z) { self.z.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 182 - z: if coord_idx.contains(CoordSel::Z) { self.z.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.z}, [INFO] [stdout] 182 + z: if coord_idx.contains(CoordSel::Z) { self.z.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.z}, [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/bin/printhor/tgeo.rs:183:53 [INFO] [stdout] | [INFO] [stdout] 183 | ... e: if coord_idx.contains(CoordSel::E) { self.e.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 183 - e: if coord_idx.contains(CoordSel::E) { self.e.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.e}, [INFO] [stdout] 183 + e: if coord_idx.contains(CoordSel::E) { self.e.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.e}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap_or()` on `Some` value [INFO] [stdout] --> src/bin/scurve_plot.rs:84:24 [INFO] [stdout] | [INFO] [stdout] 84 | let speed_module = requested_motion_speed.unwrap_or(dts) * speed_rate; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Some` and `unwrap_or()` [INFO] [stdout] --> src/bin/scurve_plot.rs:58:34 [INFO] [stdout] | [INFO] [stdout] 58 | let requested_motion_speed = Some(Real::from_f32(700.0f32)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_literal_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/printhor/tgeo.rs:376:9 [INFO] [stdout] | [INFO] [stdout] 376 | return !matching_point; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 376 - return !matching_point; [INFO] [stdout] 376 + !matching_point [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/printhor/tgeo.rs:392:9 [INFO] [stdout] | [INFO] [stdout] 392 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 392 - return true; [INFO] [stdout] 392 + true [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/bin/printhor/tgeo.rs:457:16 [INFO] [stdout] | [INFO] [stdout] 457 | x: self.x.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|v| v.abs())` [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/bin/printhor/tgeo.rs:458:16 [INFO] [stdout] | [INFO] [stdout] 458 | y: self.y.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|v| v.abs())` [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/bin/printhor/tgeo.rs:459:16 [INFO] [stdout] | [INFO] [stdout] 459 | z: self.z.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|v| v.abs())` [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/bin/printhor/tgeo.rs:460:16 [INFO] [stdout] | [INFO] [stdout] 460 | e: self.e.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|v| v.abs())` [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 `clone` on type `T` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/tgeo.rs:527:32 [INFO] [stdout] | [INFO] [stdout] 527 | ((*self) / norm.clone(), norm) [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `norm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [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/bin/printhor/tgeo.rs:634:37 [INFO] [stdout] | [INFO] [stdout] 634 | x: self.x.and_then(|x0| rhs.x.and_then(|x1| Some(x0 + x1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.x.map(|x1| x0 + x1)` [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/bin/printhor/tgeo.rs:635:37 [INFO] [stdout] | [INFO] [stdout] 635 | y: self.y.and_then(|y0| rhs.y.and_then(|y1| Some(y0 + y1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.y.map(|y1| y0 + y1)` [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/bin/printhor/tgeo.rs:636:37 [INFO] [stdout] | [INFO] [stdout] 636 | z: self.z.and_then(|z0| rhs.z.and_then(|z1| Some(z0 + z1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.z.map(|z1| z0 + z1)` [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/bin/printhor/tgeo.rs:637:37 [INFO] [stdout] | [INFO] [stdout] 637 | e: self.e.and_then(|e0| rhs.e.and_then(|e1| Some(e0 + e1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.e.map(|e1| e0 + e1)` [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/bin/printhor/tgeo.rs:662:37 [INFO] [stdout] | [INFO] [stdout] 662 | x: self.x.and_then(|x0| rhs.x.and_then(|x1| Some(x0 - x1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.x.map(|x1| x0 - x1)` [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/bin/printhor/tgeo.rs:663:37 [INFO] [stdout] | [INFO] [stdout] 663 | y: self.y.and_then(|y0| rhs.y.and_then(|y1| Some(y0 - y1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.y.map(|y1| y0 - y1)` [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/bin/printhor/tgeo.rs:664:37 [INFO] [stdout] | [INFO] [stdout] 664 | z: self.z.and_then(|z0| rhs.z.and_then(|z1| Some(z0 - z1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.z.map(|z1| z0 - z1)` [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/bin/printhor/tgeo.rs:665:37 [INFO] [stdout] | [INFO] [stdout] 665 | e: self.e.and_then(|e0| rhs.e.and_then(|e1| Some(e0 - e1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.e.map(|e1| e0 - e1)` [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/bin/printhor/tgeo.rs:689:37 [INFO] [stdout] | [INFO] [stdout] 689 | x: self.x.and_then(|x0| rhs.x.and_then(|x1| Some(x0 * x1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.x.map(|x1| x0 * x1)` [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/bin/printhor/tgeo.rs:690:37 [INFO] [stdout] | [INFO] [stdout] 690 | y: self.y.and_then(|y0| rhs.y.and_then(|y1| Some(y0 * y1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.y.map(|y1| y0 * y1)` [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/bin/printhor/tgeo.rs:691:37 [INFO] [stdout] | [INFO] [stdout] 691 | z: self.z.and_then(|z0| rhs.z.and_then(|z1| Some(z0 * z1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.z.map(|z1| z0 * z1)` [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/bin/printhor/tgeo.rs:692:37 [INFO] [stdout] | [INFO] [stdout] 692 | e: self.e.and_then(|e0| rhs.e.and_then(|e1| Some(e0 * e1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.e.map(|e1| e0 * e1)` [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/bin/printhor/tgeo.rs:705:16 [INFO] [stdout] | [INFO] [stdout] 705 | x: self.x.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:706:16 [INFO] [stdout] | [INFO] [stdout] 706 | y: self.y.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:707:16 [INFO] [stdout] | [INFO] [stdout] 707 | z: self.z.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:708:16 [INFO] [stdout] | [INFO] [stdout] 708 | e: self.e.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:762:20 [INFO] [stdout] | [INFO] [stdout] 762 | x: self.x.and_then(|x0| Some(x0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|x0| x0 / rhs)` [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/bin/printhor/tgeo.rs:763:20 [INFO] [stdout] | [INFO] [stdout] 763 | y: self.y.and_then(|y0| Some(y0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|y0| y0 / rhs)` [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/bin/printhor/tgeo.rs:764:20 [INFO] [stdout] | [INFO] [stdout] 764 | z: self.z.and_then(|z0| Some(z0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|z0| z0 / rhs)` [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/bin/printhor/tgeo.rs:765:20 [INFO] [stdout] | [INFO] [stdout] 765 | e: self.e.and_then(|e0| Some(e0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|e0| e0 / rhs)` [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: manual implementation of an assign operation [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:184:17 [INFO] [stdout] | [INFO] [stdout] 184 | gamma = gamma * HALF; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gamma *= HALF` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `cnt` is used as a loop counter [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:462:9 [INFO] [stdout] | [INFO] [stdout] 462 | for (_v, ti, pos) in self.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (cnt, (_v, ti, pos)) in self.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:472:22 [INFO] [stdout] | [INFO] [stdout] 472 | let dt = c_ti.clone() - last_t; [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `c_ti` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:497:40 [INFO] [stdout] | [INFO] [stdout] 497 | let s = (c_pos - last_p) / dt.clone(); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `dt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:498:23 [INFO] [stdout] | [INFO] [stdout] 498 | let a = ((s.clone() - last_s) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `s` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:498:45 [INFO] [stdout] | [INFO] [stdout] 498 | let a = ((s.clone() - last_s) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `dt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:499:23 [INFO] [stdout] | [INFO] [stdout] 499 | let j = ((a.clone() - last_a) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:499:45 [INFO] [stdout] | [INFO] [stdout] 499 | let j = ((a.clone() - last_a) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `dt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:501:27 [INFO] [stdout] | [INFO] [stdout] 501 | time_ref.push(c_ti.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `c_ti` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:502:26 [INFO] [stdout] | [INFO] [stdout] 502 | pos_ref.push(c_pos.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `c_pos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:505:30 [INFO] [stdout] | [INFO] [stdout] 505 | spd_ref.push(s.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `s` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:508:30 [INFO] [stdout] | [INFO] [stdout] 508 | acc_ref.push(a.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:511:31 [INFO] [stdout] | [INFO] [stdout] 511 | jerk_ref.push(j.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `j` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CONSUMED` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | CONSUMED, [INFO] [stdout] | ^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Consumed` [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 `QUEUED` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | QUEUED, [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Queued` [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 `DEFERRED` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | DEFERRED(EventStatus), [INFO] [stdout] | ^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Deferred` [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 `BUSY` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | BUSY, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Busy` [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 `ERR` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | ERR, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Err` [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 `unwrap_or()` on `Some` value [INFO] [stdout] --> src/bin/scurve_plot.rs:84:24 [INFO] [stdout] | [INFO] [stdout] 84 | let speed_module = requested_motion_speed.unwrap_or(dts) * speed_rate; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Some` and `unwrap_or()` [INFO] [stdout] --> src/bin/scurve_plot.rs:58:34 [INFO] [stdout] | [INFO] [stdout] 58 | let requested_motion_speed = Some(Real::from_f32(700.0f32)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_literal_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DummyTimeSource` is never constructed [INFO] [stdout] --> src/bin/printhor/hwa/mod.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 107 | pub struct DummyTimeSource { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `probe_self_test`, `probe_alarm_release`, and `probe_test_mode` are never used [INFO] [stdout] --> src/bin/printhor/hwa/controllers/servo_controller.rs:11:14 [INFO] [stdout] | [INFO] [stdout] 8 | pub trait ProbeTrait { [INFO] [stdout] | ---------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 11 | async fn probe_self_test(&mut self, sleep_us: u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 12 | async fn probe_alarm_release(&mut self, sleep_us: u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 13 | async fn probe_test_mode(&mut self, sleep_us: u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `layer_fan_controller` is never read [INFO] [stdout] --> src/bin/printhor/hwa/drivers/motion_driver.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct MotionDriver { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 36 | pub layer_fan_controller: ControllerRef, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `layer_fan` is never read [INFO] [stdout] --> src/bin/printhor/control/processor.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct GCodeProcessorParams { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 32 | pub layer_fan: hwa::controllers::LayerPwmControllerRef, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `probe` and `laser` are never read [INFO] [stdout] --> src/bin/printhor/control/processor.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 38 | pub struct GCodeProcessor { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 48 | pub probe: hwa::controllers::ServoControllerRef, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | pub laser: hwa::controllers::LaserPwmControllerRef, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GCodeProcessor` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Boundaries` is never constructed [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct Boundaries { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its body itself [INFO] [stdout] --> src/bin/printhor/hwa/controllers/sdcard_controller.rs:266:33 [INFO] [stdout] | [INFO] [stdout] 266 | / ... match e { [INFO] [stdout] 267 | | ... _ => SDCardError::InternalError [INFO] [stdout] 268 | | ... } [INFO] [stdout] | |_______________________^ help: consider using the match body instead: `SDCardError::InternalError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its body itself [INFO] [stdout] --> src/bin/printhor/hwa/controllers/sdcard_controller.rs:338:65 [INFO] [stdout] | [INFO] [stdout] 338 | Ok(self.mgr.read(vol, file, buffer).map_err(|e| match e { [INFO] [stdout] | _________________________________________________________________^ [INFO] [stdout] 339 | | _ => { [INFO] [stdout] 340 | | SDCardError::InternalError [INFO] [stdout] 341 | | } [INFO] [stdout] 342 | | })?) [INFO] [stdout] | |_________________^ help: consider using the match body instead: `SDCardError::InternalError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [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/bin/printhor/hwa/controllers/sdcard_controller.rs:461:13 [INFO] [stdout] | [INFO] [stdout] 461 | / match file.take() { // If already got a file but willing to deep into tree.. consume the file and fail [INFO] [stdout] 462 | | Some(file) => { [INFO] [stdout] 463 | | card.close_file(file).await.map_err(|_d| { [INFO] [stdout] 464 | | hwa::error!("Unexpected error closing file"); [INFO] [stdout] ... | [INFO] [stdout] 469 | | None => {} [INFO] [stdout] 470 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [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] 461 ~ if let Some(file) = file.take() { [INFO] [stdout] 462 + card.close_file(file).await.map_err(|_d| { [INFO] [stdout] 463 + hwa::error!("Unexpected error closing file"); [INFO] [stdout] 464 + SDCardError::MaxOpenDirs [INFO] [stdout] 465 + })?; [INFO] [stdout] 466 + return Err(SDCardError::TrailingEntries); [INFO] [stdout] 467 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `FILE` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/hwa/controllers/sdcard_controller.rs:550:5 [INFO] [stdout] | [INFO] [stdout] 550 | FILE, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `File` [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 `DIRECTORY` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/hwa/controllers/sdcard_controller.rs:551:5 [INFO] [stdout] | [INFO] [stdout] 551 | DIRECTORY, [INFO] [stdout] | ^^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Directory` [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: large size difference between variants [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:19:1 [INFO] [stdout] | [INFO] [stdout] 19 | / pub enum ScheduledMove { [INFO] [stdout] 20 | | Move(SegmentData, SCurveMotionProfile), [INFO] [stdout] | | -------------------------------------- the largest variant contains at least 396 bytes [INFO] [stdout] 21 | | Homing, [INFO] [stdout] | | ------ the second-largest variant carries no data at all [INFO] [stdout] 22 | | Dwell, [INFO] [stdout] 23 | | } [INFO] [stdout] | |_^ the entire enum is at least 396 bytes [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] = note: `#[warn(clippy::large_enum_variant)]` on by default [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] | [INFO] [stdout] 20 - Move(SegmentData, SCurveMotionProfile), [INFO] [stdout] 20 + Move(SegmentData, Box), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:182:30 [INFO] [stdout] | [INFO] [stdout] 182 | if rb.used < (SEGMENT_QUEUE_SIZE as u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `SEGMENT_QUEUE_SIZE` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:237:50 [INFO] [stdout] | [INFO] [stdout] 237 | if must_defer || (rb.used == (SEGMENT_QUEUE_SIZE as u8)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `SEGMENT_QUEUE_SIZE` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option>` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:270:9 [INFO] [stdout] | [INFO] [stdout] 270 | self.motion_st.lock().await.last_planned_pos.clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.motion_st.lock().await.last_planned_pos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:455:64 [INFO] [stdout] | [INFO] [stdout] 455 | let profile = SCurveMotionProfile::compute(module_target_distance.clone(), ZERO, ZERO, &_constraints)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `module_target_distance` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: large size difference between variants [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:583:1 [INFO] [stdout] | [INFO] [stdout] 583 | / pub enum PlanEntry { [INFO] [stdout] 584 | | Empty, [INFO] [stdout] 585 | | PlannedMove(Segment), [INFO] [stdout] | | -------------------- the largest variant contains at least 396 bytes [INFO] [stdout] 586 | | Homing, [INFO] [stdout] 587 | | Dwell, [INFO] [stdout] 588 | | Executing(MovType), [INFO] [stdout] | | ------------------ the second-largest variant contains at least 1 bytes [INFO] [stdout] 589 | | } [INFO] [stdout] | |_^ the entire enum is at least 396 bytes [INFO] [stdout] | [INFO] [stdout] note: boxing a variant would require the type no longer be `Copy` [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:583:10 [INFO] [stdout] | [INFO] [stdout] 583 | pub enum PlanEntry { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:585:5 [INFO] [stdout] | [INFO] [stdout] 585 | PlannedMove(Segment), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:591:1 [INFO] [stdout] | [INFO] [stdout] 591 | / impl Default for PlanEntry { [INFO] [stdout] 592 | | fn default() -> Self { [INFO] [stdout] 593 | | PlanEntry::Empty [INFO] [stdout] 594 | | } [INFO] [stdout] 595 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 583 + #[derive(Default)] [INFO] [stdout] 584 | pub enum PlanEntry { [INFO] [stdout] 585 ~ #[default] [INFO] [stdout] 586 ~ Empty, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the method `read` doesn't need a mutable reference [INFO] [stdout] --> src/bin/printhor/hwa/controllers/heater_controller.rs:61:30 [INFO] [stdout] | [INFO] [stdout] 61 | let value = bus.read(&mut self.adc_pin); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 61 - let value = bus.read(&mut self.adc_pin); [INFO] [stdout] 61 + let value = bus.read(&self.adc_pin); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `u16` [INFO] [stdout] --> src/bin/printhor/hwa/controllers/heater_controller.rs:62:33 [INFO] [stdout] | [INFO] [stdout] 62 | self.convert_to_celcius(value.into()) [INFO] [stdout] | ^^^^^^^^^^^^ help: consider removing `.into()`: `value` [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: useless conversion to the same type: `f32` [INFO] [stdout] --> src/bin/printhor/hwa/controllers/pwm_controller.rs:47:43 [INFO] [stdout] | [INFO] [stdout] 47 | let duty_result: Result = ((mg.get_duty(self.pwm_chan) as f32 * 100.0f32) / (mg.get_max_duty() as f32)).try_into(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing `.try_into()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this item has comments with 4 forward slashes (`////`). These look like doc comments, but they aren't [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:45:1 [INFO] [stdout] | [INFO] [stdout] 45 | / //// [INFO] [stdout] 46 | | [INFO] [stdout] 47 | | #[cfg(any(feature = "with-hotend"))] [INFO] [stdout] 48 | | pub type HotendController = HeaterController src/bin/printhor/hwa/controllers/mod.rs:56:1 [INFO] [stdout] | [INFO] [stdout] 56 | / //// [INFO] [stdout] 57 | | [INFO] [stdout] 58 | | #[cfg(any(feature = "with-hotbed"))] [INFO] [stdout] 59 | | pub type HotbedController = HeaterController src/bin/printhor/hwa/drivers/motion_driver.rs:273:12 [INFO] [stdout] | [INFO] [stdout] 273 | if vdir.x.and_then(|v| Some(v.is_positive())).unwrap_or(false) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `vdir.x.map(|v| v.is_positive())` [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] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/bin/printhor/hwa/drivers/motion_driver.rs:279:12 [INFO] [stdout] | [INFO] [stdout] 279 | if vdir.y.and_then(|v| Some(v.is_positive())).unwrap_or(false) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `vdir.y.map(|v| v.is_positive())` [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/bin/printhor/hwa/drivers/motion_driver.rs:285:12 [INFO] [stdout] | [INFO] [stdout] 285 | if vdir.z.and_then(|v| Some(v.is_positive())).unwrap_or(false) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `vdir.z.map(|v| v.is_positive())` [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/bin/printhor/hwa/drivers/motion_driver.rs:292:12 [INFO] [stdout] | [INFO] [stdout] 292 | if vdir.e.and_then(|v| Some(v.is_positive())).unwrap_or(false) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `vdir.e.map(|v| v.is_positive())` [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: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/bin/printhor/hwa/mod.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | hwi::MAX_STATIC_MEMORY as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `hwi::MAX_STATIC_MEMORY` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/bin/printhor/control/processor.rs:104:9 [INFO] [stdout] | [INFO] [stdout] 104 | let _ = self.uart_port1_tx.lock().await.blocking_flush(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 104 - let _ = self.uart_port1_tx.lock().await.blocking_flush(); [INFO] [stdout] 104 + self.uart_port1_tx.lock().await.blocking_flush(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/printhor/control/processor.rs:142:55 [INFO] [stdout] | [INFO] [stdout] 142 | let result = self.motion_planner.plan(&gc, blocking).await?; [INFO] [stdout] | ^^^ help: change this to: `gc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/printhor/control/processor.rs:173:45 [INFO] [stdout] | [INFO] [stdout] 173 | Ok(self.motion_planner.plan(&gc, blocking).await?) [INFO] [stdout] | ^^^ help: change this to: `gc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/printhor/control/processor.rs:183:59 [INFO] [stdout] | [INFO] [stdout] 183 | let result = self.motion_planner.plan(&gc, blocking).await; [INFO] [stdout] | ^^^ help: change this to: `gc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:184:17 [INFO] [stdout] | [INFO] [stdout] 184 | gamma = gamma * HALF; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gamma *= HALF` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `cnt` is used as a loop counter [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:462:9 [INFO] [stdout] | [INFO] [stdout] 462 | for (_v, ti, pos) in self.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (cnt, (_v, ti, pos)) in self.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:472:22 [INFO] [stdout] | [INFO] [stdout] 472 | let dt = c_ti.clone() - last_t; [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `c_ti` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:497:40 [INFO] [stdout] | [INFO] [stdout] 497 | let s = (c_pos - last_p) / dt.clone(); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `dt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:498:23 [INFO] [stdout] | [INFO] [stdout] 498 | let a = ((s.clone() - last_s) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `s` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:498:45 [INFO] [stdout] | [INFO] [stdout] 498 | let a = ((s.clone() - last_s) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `dt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:499:23 [INFO] [stdout] | [INFO] [stdout] 499 | let j = ((a.clone() - last_a) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:499:45 [INFO] [stdout] | [INFO] [stdout] 499 | let j = ((a.clone() - last_a) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `dt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:501:27 [INFO] [stdout] | [INFO] [stdout] 501 | time_ref.push(c_ti.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `c_ti` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:502:26 [INFO] [stdout] | [INFO] [stdout] 502 | pos_ref.push(c_pos.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `c_pos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:505:30 [INFO] [stdout] | [INFO] [stdout] 505 | spd_ref.push(s.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `s` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:508:30 [INFO] [stdout] | [INFO] [stdout] 508 | acc_ref.push(a.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:511:31 [INFO] [stdout] | [INFO] [stdout] 511 | jerk_ref.push(j.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `j` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CONSUMED` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | CONSUMED, [INFO] [stdout] | ^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Consumed` [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 `QUEUED` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | QUEUED, [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Queued` [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 `DEFERRED` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | DEFERRED(EventStatus), [INFO] [stdout] | ^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Deferred` [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 `BUSY` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | BUSY, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Busy` [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 `ERR` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | ERR, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Err` [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 `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/parser.rs:113:65 [INFO] [stdout] | [INFO] [stdout] 113 | ... ln: current_line_number.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_line_number` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/parser.rs:122:65 [INFO] [stdout] | [INFO] [stdout] 122 | ... ln: current_line_number.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_line_number` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/parser.rs:145:65 [INFO] [stdout] | [INFO] [stdout] 145 | ... ln: current_line_number.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_line_number` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/parser.rs:239:69 [INFO] [stdout] | [INFO] [stdout] 239 | ... ln: current_line_number.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_line_number` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/bin/printhor/control/parser.rs:361:57 [INFO] [stdout] | [INFO] [stdout] 361 | / ... if ch == 'f' { [INFO] [stdout] 362 | | ... if let async_gcode::RealValue::Literal(async_gcode::Literal::String(mstr)) = fv { [INFO] [stdout] 363 | | ... path.replace(mstr); [INFO] [stdout] 364 | | ... } [INFO] [stdout] 365 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 360 ~ GCode::M20(path) [INFO] [stdout] 361 ~ if ch == 'f' => { [INFO] [stdout] 362 | if let async_gcode::RealValue::Literal(async_gcode::Literal::String(mstr)) = fv { [INFO] [stdout] 363 | path.replace(mstr); [INFO] [stdout] 364 | } [INFO] [stdout] 365 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/bin/printhor/control/parser.rs:368:57 [INFO] [stdout] | [INFO] [stdout] 368 | / ... if ch == 'f' { [INFO] [stdout] 369 | | ... if let async_gcode::RealValue::Literal(async_gcode::Literal::String(mstr)) = fv { [INFO] [stdout] 370 | | ... file.replace(mstr); [INFO] [stdout] 371 | | ... } [INFO] [stdout] 372 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 367 ~ GCode::M23(file) [INFO] [stdout] 368 ~ if ch == 'f' => { [INFO] [stdout] 369 | if let async_gcode::RealValue::Literal(async_gcode::Literal::String(mstr)) = fv { [INFO] [stdout] 370 | file.replace(mstr); [INFO] [stdout] 371 | } [INFO] [stdout] 372 ~ } [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/bin/printhor/control/parser.rs:375:57 [INFO] [stdout] | [INFO] [stdout] 375 | / ... match (ch, frx) { [INFO] [stdout] 376 | | ... ('s', Some(val)) => { [INFO] [stdout] 377 | | ... coord.s.replace(helpers::to_fixed(val)); [INFO] [stdout] 378 | | ... }, [INFO] [stdout] 379 | | ... _ => {} [INFO] [stdout] 380 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 375 ~ if let ('s', Some(val)) = (ch, frx) { [INFO] [stdout] 376 + coord.s.replace(helpers::to_fixed(val)); [INFO] [stdout] 377 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implicitly performing saturating subtraction [INFO] [stdout] --> src/bin/printhor/control/task_deferr.rs:49:17 [INFO] [stdout] | [INFO] [stdout] 49 | / if num_linear > 0 { [INFO] [stdout] 50 | | num_linear -= 1; [INFO] [stdout] 51 | | //processor.write("ok; G1 completed (@defer_task)\n").await; [INFO] [stdout] 52 | | } [INFO] [stdout] | |_________________^ help: try: `num_linear = num_linear.saturating_sub(1);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] = note: `#[warn(clippy::implicit_saturating_sub)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implicitly performing saturating subtraction [INFO] [stdout] --> src/bin/printhor/control/task_deferr.rs:58:17 [INFO] [stdout] | [INFO] [stdout] 58 | / if num_rapid > 0 { [INFO] [stdout] 59 | | num_rapid -= 1; [INFO] [stdout] 60 | | //processor.write("ok; G0 completed (@defer_task)\n").await; [INFO] [stdout] 61 | | } [INFO] [stdout] | |_________________^ help: try: `num_rapid = num_rapid.saturating_sub(1);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/printhor/control/task_stepper.rs:381:20 [INFO] [stdout] | [INFO] [stdout] 381 | if !motion_planner.do_homing().await.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `motion_planner.do_homing().await.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DummyTimeSource` is never constructed [INFO] [stdout] --> src/bin/printhor/hwa/mod.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 107 | pub struct DummyTimeSource { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `probe_self_test`, `probe_alarm_release`, and `probe_test_mode` are never used [INFO] [stdout] --> src/bin/printhor/hwa/controllers/servo_controller.rs:11:14 [INFO] [stdout] | [INFO] [stdout] 8 | pub trait ProbeTrait { [INFO] [stdout] | ---------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 11 | async fn probe_self_test(&mut self, sleep_us: u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 12 | async fn probe_alarm_release(&mut self, sleep_us: u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 13 | async fn probe_test_mode(&mut self, sleep_us: u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `layer_fan_controller` is never read [INFO] [stdout] --> src/bin/printhor/hwa/drivers/motion_driver.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct MotionDriver { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 36 | pub layer_fan_controller: ControllerRef, [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/bin/printhor/control/task_stepper.rs:194:107 [INFO] [stdout] | [INFO] [stdout] 194 | ..._axis.x.and_then(|cv| cv.to_i64().and_then(|v| Some(v as u64))).unwrap_or(default_rate)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cv.to_i64().map(|v| v as u64)` [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: field `layer_fan` is never read [INFO] [stdout] --> src/bin/printhor/control/processor.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct GCodeProcessorParams { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 32 | pub layer_fan: hwa::controllers::LayerPwmControllerRef, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `probe` and `laser` are never read [INFO] [stdout] --> src/bin/printhor/control/processor.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 38 | pub struct GCodeProcessor { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 48 | pub probe: hwa::controllers::ServoControllerRef, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | pub laser: hwa::controllers::LaserPwmControllerRef, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GCodeProcessor` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Boundaries` is never constructed [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct Boundaries { [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/bin/printhor/control/task_stepper.rs:195:107 [INFO] [stdout] | [INFO] [stdout] 195 | ..._axis.y.and_then(|cv| cv.to_i64().and_then(|v| Some(v as u64))).unwrap_or(default_rate)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cv.to_i64().map(|v| v as u64)` [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/bin/printhor/control/task_stepper.rs:196:107 [INFO] [stdout] | [INFO] [stdout] 196 | ..._axis.z.and_then(|cv| cv.to_i64().and_then(|v| Some(v as u64))).unwrap_or(default_rate)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cv.to_i64().map(|v| v as u64)` [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/bin/printhor/control/task_stepper.rs:198:107 [INFO] [stdout] | [INFO] [stdout] 198 | ..._axis.e.and_then(|cv| cv.to_i64().and_then(|v| Some(v as u64))).unwrap_or(default_rate)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cv.to_i64().map(|v| v as u64)` [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: use of a fallible conversion when an infallible one could be used [INFO] [stdout] --> src/bin/printhor/control/task_stepper.rs:289:95 [INFO] [stdout] | [INFO] [stdout] 289 | ... let s_mm = Real::from_lit(segment.segment_data.displacement_u.try_into().unwrap_or(0), 3); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: converting `u32` to `i64` cannot fail [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fallible_conversions [INFO] [stdout] = note: `#[warn(clippy::unnecessary_fallible_conversions)]` on by default [INFO] [stdout] help: use [INFO] [stdout] | [INFO] [stdout] 289 - let s_mm = Real::from_lit(segment.segment_data.displacement_u.try_into().unwrap_or(0), 3); [INFO] [stdout] 289 + let s_mm = Real::from_lit(segment.segment_data.displacement_u.into().unwrap_or(0), 3); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of a fallible conversion when an infallible one could be used [INFO] [stdout] --> src/bin/printhor/control/task_stepper.rs:306:91 [INFO] [stdout] | [INFO] [stdout] 306 | ... let s_mm = Real::from_lit(segment.segment_data.displacement_u.try_into().unwrap(), 3); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: converting `u32` to `i64` cannot fail [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fallible_conversions [INFO] [stdout] help: use [INFO] [stdout] | [INFO] [stdout] 306 - let s_mm = Real::from_lit(segment.segment_data.displacement_u.try_into().unwrap(), 3); [INFO] [stdout] 306 + let s_mm = Real::from_lit(segment.segment_data.displacement_u.into(), 3); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/printhor/control/motion_timing/mod.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | / return if let Some(channel) = target_channel { [INFO] [stdout] 74 | | #[cfg(feature = "no-real-time")] [INFO] [stdout] 75 | | let ref_time = self.ref_time; [INFO] [stdout] 76 | | #[cfg(not(feature = "no-real-time"))] [INFO] [stdout] ... | [INFO] [stdout] 88 | | None [INFO] [stdout] 89 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 73 ~ if let Some(channel) = target_channel { [INFO] [stdout] 74 + #[cfg(feature = "no-real-time")] [INFO] [stdout] 75 + let ref_time = self.ref_time; [INFO] [stdout] 76 + #[cfg(not(feature = "no-real-time"))] [INFO] [stdout] 77 + let ref_time = now().as_ticks(); [INFO] [stdout] 78 + let tw = Duration::from_ticks((channel.next_tick as i64 - ref_time as i64).max(0) as u64); [INFO] [stdout] 79 + #[cfg(not(feature = "no-real-time"))] [INFO] [stdout] 80 + while now().as_ticks() < channel.next_tick {} [INFO] [stdout] 81 + channel.next_tick += channel.width; [INFO] [stdout] 82 + #[cfg(feature = "no-real-time")] [INFO] [stdout] 83 + { [INFO] [stdout] 84 + self.ref_time += tw.as_ticks(); [INFO] [stdout] 85 + } [INFO] [stdout] 86 + Some((channel.name, tw)) [INFO] [stdout] 87 + } else { [INFO] [stdout] 88 + None [INFO] [stdout] 89 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `XYZW` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/mod.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct XYZW { [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Xyzw` [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 `XYZ` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/mod.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct XYZ { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Xyz` [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: this match could be replaced by its body itself [INFO] [stdout] --> src/bin/printhor/hwa/controllers/sdcard_controller.rs:266:33 [INFO] [stdout] | [INFO] [stdout] 266 | / ... match e { [INFO] [stdout] 267 | | ... _ => SDCardError::InternalError [INFO] [stdout] 268 | | ... } [INFO] [stdout] | |_______________________^ help: consider using the match body instead: `SDCardError::InternalError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `XYZEFS` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/mod.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct XYZEFS { [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Xyzefs` [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 `NOP` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/mod.rs:122:5 [INFO] [stdout] | [INFO] [stdout] 122 | NOP, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Nop` [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: this match could be replaced by its body itself [INFO] [stdout] --> src/bin/printhor/hwa/controllers/sdcard_controller.rs:338:65 [INFO] [stdout] | [INFO] [stdout] 338 | Ok(self.mgr.read(vol, file, buffer).map_err(|e| match e { [INFO] [stdout] | _________________________________________________________________^ [INFO] [stdout] 339 | | _ => { [INFO] [stdout] 340 | | SDCardError::InternalError [INFO] [stdout] 341 | | } [INFO] [stdout] 342 | | })?) [INFO] [stdout] | |_________________^ help: consider using the match body instead: `SDCardError::InternalError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [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/bin/printhor/hwa/controllers/sdcard_controller.rs:461:13 [INFO] [stdout] | [INFO] [stdout] 461 | / match file.take() { // If already got a file but willing to deep into tree.. consume the file and fail [INFO] [stdout] 462 | | Some(file) => { [INFO] [stdout] 463 | | card.close_file(file).await.map_err(|_d| { [INFO] [stdout] 464 | | hwa::error!("Unexpected error closing file"); [INFO] [stdout] ... | [INFO] [stdout] 469 | | None => {} [INFO] [stdout] 470 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [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] 461 ~ if let Some(file) = file.take() { [INFO] [stdout] 462 + card.close_file(file).await.map_err(|_d| { [INFO] [stdout] 463 + hwa::error!("Unexpected error closing file"); [INFO] [stdout] 464 + SDCardError::MaxOpenDirs [INFO] [stdout] 465 + })?; [INFO] [stdout] 466 + return Err(SDCardError::TrailingEntries); [INFO] [stdout] 467 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:76:32 [INFO] [stdout] | [INFO] [stdout] 76 | x: self.x.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:77:32 [INFO] [stdout] | [INFO] [stdout] 77 | y: self.y.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:78:32 [INFO] [stdout] | [INFO] [stdout] 78 | z: self.z.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:79:32 [INFO] [stdout] | [INFO] [stdout] 79 | e: self.e.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/bin/printhor/tgeo.rs:86:39 [INFO] [stdout] | [INFO] [stdout] 86 | where F: FnMut((CoordSel, &T)) -> () [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [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/bin/printhor/tgeo.rs:138:55 [INFO] [stdout] | [INFO] [stdout] 138 | if coord_idx.contains(CoordSel::X) { self.x = self.x.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|v| v + val)` [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/bin/printhor/tgeo.rs:139:55 [INFO] [stdout] | [INFO] [stdout] 139 | if coord_idx.contains(CoordSel::Y) { self.y = self.y.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|v| v + val)` [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/bin/printhor/tgeo.rs:140:55 [INFO] [stdout] | [INFO] [stdout] 140 | if coord_idx.contains(CoordSel::Z) { self.z = self.z.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|v| v + val)` [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/bin/printhor/tgeo.rs:141:55 [INFO] [stdout] | [INFO] [stdout] 141 | if coord_idx.contains(CoordSel::E) { self.e = self.e.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|v| v + val)` [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/bin/printhor/tgeo.rs:180:53 [INFO] [stdout] | [INFO] [stdout] 180 | ... x: if coord_idx.contains(CoordSel::X) { self.x.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 180 - x: if coord_idx.contains(CoordSel::X) { self.x.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.x}, [INFO] [stdout] 180 + x: if coord_idx.contains(CoordSel::X) { self.x.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.x}, [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/bin/printhor/tgeo.rs:181:53 [INFO] [stdout] | [INFO] [stdout] 181 | ... y: if coord_idx.contains(CoordSel::Y) { self.y.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 181 - y: if coord_idx.contains(CoordSel::Y) { self.y.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.y}, [INFO] [stdout] 181 + y: if coord_idx.contains(CoordSel::Y) { self.y.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.y}, [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/bin/printhor/tgeo.rs:182:53 [INFO] [stdout] | [INFO] [stdout] 182 | ... z: if coord_idx.contains(CoordSel::Z) { self.z.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 182 - z: if coord_idx.contains(CoordSel::Z) { self.z.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.z}, [INFO] [stdout] 182 + z: if coord_idx.contains(CoordSel::Z) { self.z.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.z}, [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/bin/printhor/tgeo.rs:183:53 [INFO] [stdout] | [INFO] [stdout] 183 | ... e: if coord_idx.contains(CoordSel::E) { self.e.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 183 - e: if coord_idx.contains(CoordSel::E) { self.e.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.e}, [INFO] [stdout] 183 + e: if coord_idx.contains(CoordSel::E) { self.e.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.e}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `FILE` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/hwa/controllers/sdcard_controller.rs:550:5 [INFO] [stdout] | [INFO] [stdout] 550 | FILE, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `File` [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 `DIRECTORY` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/hwa/controllers/sdcard_controller.rs:551:5 [INFO] [stdout] | [INFO] [stdout] 551 | DIRECTORY, [INFO] [stdout] | ^^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Directory` [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: unneeded `return` statement [INFO] [stdout] --> src/bin/printhor/tgeo.rs:376:9 [INFO] [stdout] | [INFO] [stdout] 376 | return !matching_point; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 376 - return !matching_point; [INFO] [stdout] 376 + !matching_point [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/printhor/tgeo.rs:392:9 [INFO] [stdout] | [INFO] [stdout] 392 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 392 - return true; [INFO] [stdout] 392 + true [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/bin/printhor/tgeo.rs:457:16 [INFO] [stdout] | [INFO] [stdout] 457 | x: self.x.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|v| v.abs())` [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/bin/printhor/tgeo.rs:458:16 [INFO] [stdout] | [INFO] [stdout] 458 | y: self.y.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|v| v.abs())` [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/bin/printhor/tgeo.rs:459:16 [INFO] [stdout] | [INFO] [stdout] 459 | z: self.z.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|v| v.abs())` [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/bin/printhor/tgeo.rs:460:16 [INFO] [stdout] | [INFO] [stdout] 460 | e: self.e.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|v| v.abs())` [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 `clone` on type `T` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/tgeo.rs:527:32 [INFO] [stdout] | [INFO] [stdout] 527 | ((*self) / norm.clone(), norm) [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `norm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [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/bin/printhor/tgeo.rs:634:37 [INFO] [stdout] | [INFO] [stdout] 634 | x: self.x.and_then(|x0| rhs.x.and_then(|x1| Some(x0 + x1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.x.map(|x1| x0 + x1)` [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/bin/printhor/tgeo.rs:635:37 [INFO] [stdout] | [INFO] [stdout] 635 | y: self.y.and_then(|y0| rhs.y.and_then(|y1| Some(y0 + y1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.y.map(|y1| y0 + y1)` [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/bin/printhor/tgeo.rs:636:37 [INFO] [stdout] | [INFO] [stdout] 636 | z: self.z.and_then(|z0| rhs.z.and_then(|z1| Some(z0 + z1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.z.map(|z1| z0 + z1)` [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/bin/printhor/tgeo.rs:637:37 [INFO] [stdout] | [INFO] [stdout] 637 | e: self.e.and_then(|e0| rhs.e.and_then(|e1| Some(e0 + e1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.e.map(|e1| e0 + e1)` [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/bin/printhor/tgeo.rs:662:37 [INFO] [stdout] | [INFO] [stdout] 662 | x: self.x.and_then(|x0| rhs.x.and_then(|x1| Some(x0 - x1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.x.map(|x1| x0 - x1)` [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/bin/printhor/tgeo.rs:663:37 [INFO] [stdout] | [INFO] [stdout] 663 | y: self.y.and_then(|y0| rhs.y.and_then(|y1| Some(y0 - y1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.y.map(|y1| y0 - y1)` [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/bin/printhor/tgeo.rs:664:37 [INFO] [stdout] | [INFO] [stdout] 664 | z: self.z.and_then(|z0| rhs.z.and_then(|z1| Some(z0 - z1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.z.map(|z1| z0 - z1)` [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/bin/printhor/tgeo.rs:665:37 [INFO] [stdout] | [INFO] [stdout] 665 | e: self.e.and_then(|e0| rhs.e.and_then(|e1| Some(e0 - e1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.e.map(|e1| e0 - e1)` [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/bin/printhor/tgeo.rs:689:37 [INFO] [stdout] | [INFO] [stdout] 689 | x: self.x.and_then(|x0| rhs.x.and_then(|x1| Some(x0 * x1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.x.map(|x1| x0 * x1)` [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/bin/printhor/tgeo.rs:690:37 [INFO] [stdout] | [INFO] [stdout] 690 | y: self.y.and_then(|y0| rhs.y.and_then(|y1| Some(y0 * y1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.y.map(|y1| y0 * y1)` [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/bin/printhor/tgeo.rs:691:37 [INFO] [stdout] | [INFO] [stdout] 691 | z: self.z.and_then(|z0| rhs.z.and_then(|z1| Some(z0 * z1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.z.map(|z1| z0 * z1)` [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/bin/printhor/tgeo.rs:692:37 [INFO] [stdout] | [INFO] [stdout] 692 | e: self.e.and_then(|e0| rhs.e.and_then(|e1| Some(e0 * e1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.e.map(|e1| e0 * e1)` [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/bin/printhor/tgeo.rs:705:16 [INFO] [stdout] | [INFO] [stdout] 705 | x: self.x.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:706:16 [INFO] [stdout] | [INFO] [stdout] 706 | y: self.y.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:707:16 [INFO] [stdout] | [INFO] [stdout] 707 | z: self.z.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:708:16 [INFO] [stdout] | [INFO] [stdout] 708 | e: self.e.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:762:20 [INFO] [stdout] | [INFO] [stdout] 762 | x: self.x.and_then(|x0| Some(x0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|x0| x0 / rhs)` [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/bin/printhor/tgeo.rs:763:20 [INFO] [stdout] | [INFO] [stdout] 763 | y: self.y.and_then(|y0| Some(y0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|y0| y0 / rhs)` [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/bin/printhor/tgeo.rs:764:20 [INFO] [stdout] | [INFO] [stdout] 764 | z: self.z.and_then(|z0| Some(z0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|z0| z0 / rhs)` [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/bin/printhor/tgeo.rs:765:20 [INFO] [stdout] | [INFO] [stdout] 765 | e: self.e.and_then(|e0| Some(e0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|e0| e0 / rhs)` [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: manual implementation of `Option::map` [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | / match self.0.sqrt() { [INFO] [stdout] 104 | | None => {None} [INFO] [stdout] 105 | | Some(v) => {Some(Real(v))} [INFO] [stdout] 106 | | } [INFO] [stdout] | |_________^ help: try: `self.0.sqrt().map(Real)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: large size difference between variants [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:19:1 [INFO] [stdout] | [INFO] [stdout] 19 | / pub enum ScheduledMove { [INFO] [stdout] 20 | | Move(SegmentData, SCurveMotionProfile), [INFO] [stdout] | | -------------------------------------- the largest variant contains at least 396 bytes [INFO] [stdout] 21 | | Homing, [INFO] [stdout] | | ------ the second-largest variant carries no data at all [INFO] [stdout] 22 | | Dwell, [INFO] [stdout] 23 | | } [INFO] [stdout] | |_^ the entire enum is at least 396 bytes [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] = note: `#[warn(clippy::large_enum_variant)]` on by default [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] | [INFO] [stdout] 20 - Move(SegmentData, SCurveMotionProfile), [INFO] [stdout] 20 + Move(SegmentData, Box), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-canonical implementation of `partial_cmp` on an `Ord` type [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:212:1 [INFO] [stdout] | [INFO] [stdout] 212 | / impl PartialOrd for Real { [INFO] [stdout] 213 | | [INFO] [stdout] 214 | | fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 215 | | self.0.partial_cmp(&other.0) [INFO] [stdout] ... | [INFO] [stdout] 233 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_canonical_partial_ord_impl [INFO] [stdout] = note: `#[warn(clippy::non_canonical_partial_ord_impl)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 214 - fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 215 - self.0.partial_cmp(&other.0) [INFO] [stdout] 216 - } [INFO] [stdout] 214 + fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:343:33 [INFO] [stdout] | [INFO] [stdout] 343 | self.current_back = self.current.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.current` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:344:29 [INFO] [stdout] | [INFO] [stdout] 344 | self.current += self.step_size.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.step_size` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:345:18 [INFO] [stdout] | [INFO] [stdout] 345 | Some(self.current_back.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.current_back` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/bin/printhor/main.rs:105:1 [INFO] [stdout] | [INFO] [stdout] 105 | / async fn spawn_tasks(spawner: Spawner, event_bus: EventBusRef, defer_channel: DeferChannelRef, [INFO] [stdout] 106 | | controllers: Controllers, devices: IODevices, [INFO] [stdout] 107 | | _motion_device: MotionDevices, [INFO] [stdout] 108 | | _pwm_devices: PwmDevices, [INFO] [stdout] 109 | | _wd: hwa::WatchdogRef [INFO] [stdout] 110 | | ) -> Result<(), ()> { [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/bin/printhor/main.rs:289:9 [INFO] [stdout] | [INFO] [stdout] 289 | / hwa::launch_high_priotity( control::task_stepper::stepper_task( [INFO] [stdout] 290 | | motion_planer, _wd [INFO] [stdout] 291 | | )).and_then(|_| { [INFO] [stdout] 292 | | hwa::debug!("stepper_start() spawned"); [INFO] [stdout] 293 | | Ok(()) [INFO] [stdout] 294 | | })?; [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] 291 ~ )).map(|_| { [INFO] [stdout] 292 | hwa::debug!("stepper_start() spawned"); [INFO] [stdout] 293 ~ () [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:182:30 [INFO] [stdout] | [INFO] [stdout] 182 | if rb.used < (SEGMENT_QUEUE_SIZE as u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `SEGMENT_QUEUE_SIZE` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:237:50 [INFO] [stdout] | [INFO] [stdout] 237 | if must_defer || (rb.used == (SEGMENT_QUEUE_SIZE as u8)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `SEGMENT_QUEUE_SIZE` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option>` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:270:9 [INFO] [stdout] | [INFO] [stdout] 270 | self.motion_st.lock().await.last_planned_pos.clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.motion_st.lock().await.last_planned_pos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:455:64 [INFO] [stdout] | [INFO] [stdout] 455 | let profile = SCurveMotionProfile::compute(module_target_distance.clone(), ZERO, ZERO, &_constraints)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `module_target_distance` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: large size difference between variants [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:583:1 [INFO] [stdout] | [INFO] [stdout] 583 | / pub enum PlanEntry { [INFO] [stdout] 584 | | Empty, [INFO] [stdout] 585 | | PlannedMove(Segment), [INFO] [stdout] | | -------------------- the largest variant contains at least 396 bytes [INFO] [stdout] 586 | | Homing, [INFO] [stdout] 587 | | Dwell, [INFO] [stdout] 588 | | Executing(MovType), [INFO] [stdout] | | ------------------ the second-largest variant contains at least 1 bytes [INFO] [stdout] 589 | | } [INFO] [stdout] | |_^ the entire enum is at least 396 bytes [INFO] [stdout] | [INFO] [stdout] note: boxing a variant would require the type no longer be `Copy` [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:583:10 [INFO] [stdout] | [INFO] [stdout] 583 | pub enum PlanEntry { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:585:5 [INFO] [stdout] | [INFO] [stdout] 585 | PlannedMove(Segment), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/bin/printhor/hwa/controllers/motion/motion_controller.rs:591:1 [INFO] [stdout] | [INFO] [stdout] 591 | / impl Default for PlanEntry { [INFO] [stdout] 592 | | fn default() -> Self { [INFO] [stdout] 593 | | PlanEntry::Empty [INFO] [stdout] 594 | | } [INFO] [stdout] 595 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 583 + #[derive(Default)] [INFO] [stdout] 584 | pub enum PlanEntry { [INFO] [stdout] 585 ~ #[default] [INFO] [stdout] 586 ~ Empty, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the method `read` doesn't need a mutable reference [INFO] [stdout] --> src/bin/printhor/hwa/controllers/heater_controller.rs:61:30 [INFO] [stdout] | [INFO] [stdout] 61 | let value = bus.read(&mut self.adc_pin); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 61 - let value = bus.read(&mut self.adc_pin); [INFO] [stdout] 61 + let value = bus.read(&self.adc_pin); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `u16` [INFO] [stdout] --> src/bin/printhor/hwa/controllers/heater_controller.rs:62:33 [INFO] [stdout] | [INFO] [stdout] 62 | self.convert_to_celcius(value.into()) [INFO] [stdout] | ^^^^^^^^^^^^ help: consider removing `.into()`: `value` [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: useless conversion to the same type: `f32` [INFO] [stdout] --> src/bin/printhor/hwa/controllers/pwm_controller.rs:47:43 [INFO] [stdout] | [INFO] [stdout] 47 | let duty_result: Result = ((mg.get_duty(self.pwm_chan) as f32 * 100.0f32) / (mg.get_max_duty() as f32)).try_into(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing `.try_into()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this item has comments with 4 forward slashes (`////`). These look like doc comments, but they aren't [INFO] [stdout] --> src/bin/printhor/hwa/controllers/mod.rs:45:1 [INFO] [stdout] | [INFO] [stdout] 45 | / //// [INFO] [stdout] 46 | | [INFO] [stdout] 47 | | #[cfg(any(feature = "with-hotend"))] [INFO] [stdout] 48 | | pub type HotendController = HeaterController src/bin/printhor/hwa/controllers/mod.rs:56:1 [INFO] [stdout] | [INFO] [stdout] 56 | / //// [INFO] [stdout] 57 | | [INFO] [stdout] 58 | | #[cfg(any(feature = "with-hotbed"))] [INFO] [stdout] 59 | | pub type HotbedController = HeaterController src/bin/printhor/hwa/drivers/motion_driver.rs:273:12 [INFO] [stdout] | [INFO] [stdout] 273 | if vdir.x.and_then(|v| Some(v.is_positive())).unwrap_or(false) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `vdir.x.map(|v| v.is_positive())` [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] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/bin/printhor/hwa/drivers/motion_driver.rs:279:12 [INFO] [stdout] | [INFO] [stdout] 279 | if vdir.y.and_then(|v| Some(v.is_positive())).unwrap_or(false) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `vdir.y.map(|v| v.is_positive())` [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/bin/printhor/hwa/drivers/motion_driver.rs:285:12 [INFO] [stdout] | [INFO] [stdout] 285 | if vdir.z.and_then(|v| Some(v.is_positive())).unwrap_or(false) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `vdir.z.map(|v| v.is_positive())` [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/bin/printhor/hwa/drivers/motion_driver.rs:292:12 [INFO] [stdout] | [INFO] [stdout] 292 | if vdir.e.and_then(|v| Some(v.is_positive())).unwrap_or(false) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `vdir.e.map(|v| v.is_positive())` [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: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/bin/printhor/hwa/mod.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | hwi::MAX_STATIC_MEMORY as u32 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `hwi::MAX_STATIC_MEMORY` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/bin/printhor/control/processor.rs:104:9 [INFO] [stdout] | [INFO] [stdout] 104 | let _ = self.uart_port1_tx.lock().await.blocking_flush(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 104 - let _ = self.uart_port1_tx.lock().await.blocking_flush(); [INFO] [stdout] 104 + self.uart_port1_tx.lock().await.blocking_flush(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/printhor/control/processor.rs:142:55 [INFO] [stdout] | [INFO] [stdout] 142 | let result = self.motion_planner.plan(&gc, blocking).await?; [INFO] [stdout] | ^^^ help: change this to: `gc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/printhor/control/processor.rs:173:45 [INFO] [stdout] | [INFO] [stdout] 173 | Ok(self.motion_planner.plan(&gc, blocking).await?) [INFO] [stdout] | ^^^ help: change this to: `gc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/bin/printhor/control/processor.rs:183:59 [INFO] [stdout] | [INFO] [stdout] 183 | let result = self.motion_planner.plan(&gc, blocking).await; [INFO] [stdout] | ^^^ help: change this to: `gc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:184:17 [INFO] [stdout] | [INFO] [stdout] 184 | gamma = gamma * HALF; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gamma *= HALF` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `cnt` is used as a loop counter [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:462:9 [INFO] [stdout] | [INFO] [stdout] 462 | for (_v, ti, pos) in self.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (cnt, (_v, ti, pos)) in self.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:472:22 [INFO] [stdout] | [INFO] [stdout] 472 | let dt = c_ti.clone() - last_t; [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `c_ti` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:497:40 [INFO] [stdout] | [INFO] [stdout] 497 | let s = (c_pos - last_p) / dt.clone(); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `dt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:498:23 [INFO] [stdout] | [INFO] [stdout] 498 | let a = ((s.clone() - last_s) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `s` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:498:45 [INFO] [stdout] | [INFO] [stdout] 498 | let a = ((s.clone() - last_s) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `dt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:499:23 [INFO] [stdout] | [INFO] [stdout] 499 | let j = ((a.clone() - last_a) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:499:45 [INFO] [stdout] | [INFO] [stdout] 499 | let j = ((a.clone() - last_a) / dt.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `dt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:501:27 [INFO] [stdout] | [INFO] [stdout] 501 | time_ref.push(c_ti.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `c_ti` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:502:26 [INFO] [stdout] | [INFO] [stdout] 502 | pos_ref.push(c_pos.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `c_pos` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:505:30 [INFO] [stdout] | [INFO] [stdout] 505 | spd_ref.push(s.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `s` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:508:30 [INFO] [stdout] | [INFO] [stdout] 508 | acc_ref.push(a.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/planner/plan.rs:511:31 [INFO] [stdout] | [INFO] [stdout] 511 | jerk_ref.push(j.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `j` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CONSUMED` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | CONSUMED, [INFO] [stdout] | ^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Consumed` [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 `QUEUED` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | QUEUED, [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Queued` [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 `DEFERRED` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | DEFERRED(EventStatus), [INFO] [stdout] | ^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Deferred` [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 `BUSY` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | BUSY, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Busy` [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 `ERR` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/planner/mod.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | ERR, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Err` [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 `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/parser.rs:113:65 [INFO] [stdout] | [INFO] [stdout] 113 | ... ln: current_line_number.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_line_number` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/parser.rs:122:65 [INFO] [stdout] | [INFO] [stdout] 122 | ... ln: current_line_number.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_line_number` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/parser.rs:145:65 [INFO] [stdout] | [INFO] [stdout] 145 | ... ln: current_line_number.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_line_number` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/control/parser.rs:239:69 [INFO] [stdout] | [INFO] [stdout] 239 | ... ln: current_line_number.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_line_number` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/bin/printhor/control/parser.rs:361:57 [INFO] [stdout] | [INFO] [stdout] 361 | / ... if ch == 'f' { [INFO] [stdout] 362 | | ... if let async_gcode::RealValue::Literal(async_gcode::Literal::String(mstr)) = fv { [INFO] [stdout] 363 | | ... path.replace(mstr); [INFO] [stdout] 364 | | ... } [INFO] [stdout] 365 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 360 ~ GCode::M20(path) [INFO] [stdout] 361 ~ if ch == 'f' => { [INFO] [stdout] 362 | if let async_gcode::RealValue::Literal(async_gcode::Literal::String(mstr)) = fv { [INFO] [stdout] 363 | path.replace(mstr); [INFO] [stdout] 364 | } [INFO] [stdout] 365 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/bin/printhor/control/parser.rs:368:57 [INFO] [stdout] | [INFO] [stdout] 368 | / ... if ch == 'f' { [INFO] [stdout] 369 | | ... if let async_gcode::RealValue::Literal(async_gcode::Literal::String(mstr)) = fv { [INFO] [stdout] 370 | | ... file.replace(mstr); [INFO] [stdout] 371 | | ... } [INFO] [stdout] 372 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 367 ~ GCode::M23(file) [INFO] [stdout] 368 ~ if ch == 'f' => { [INFO] [stdout] 369 | if let async_gcode::RealValue::Literal(async_gcode::Literal::String(mstr)) = fv { [INFO] [stdout] 370 | file.replace(mstr); [INFO] [stdout] 371 | } [INFO] [stdout] 372 ~ } [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/bin/printhor/control/parser.rs:375:57 [INFO] [stdout] | [INFO] [stdout] 375 | / ... match (ch, frx) { [INFO] [stdout] 376 | | ... ('s', Some(val)) => { [INFO] [stdout] 377 | | ... coord.s.replace(helpers::to_fixed(val)); [INFO] [stdout] 378 | | ... }, [INFO] [stdout] 379 | | ... _ => {} [INFO] [stdout] 380 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 375 ~ if let ('s', Some(val)) = (ch, frx) { [INFO] [stdout] 376 + coord.s.replace(helpers::to_fixed(val)); [INFO] [stdout] 377 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implicitly performing saturating subtraction [INFO] [stdout] --> src/bin/printhor/control/task_deferr.rs:49:17 [INFO] [stdout] | [INFO] [stdout] 49 | / if num_linear > 0 { [INFO] [stdout] 50 | | num_linear -= 1; [INFO] [stdout] 51 | | //processor.write("ok; G1 completed (@defer_task)\n").await; [INFO] [stdout] 52 | | } [INFO] [stdout] | |_________________^ help: try: `num_linear = num_linear.saturating_sub(1);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] = note: `#[warn(clippy::implicit_saturating_sub)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implicitly performing saturating subtraction [INFO] [stdout] --> src/bin/printhor/control/task_deferr.rs:58:17 [INFO] [stdout] | [INFO] [stdout] 58 | / if num_rapid > 0 { [INFO] [stdout] 59 | | num_rapid -= 1; [INFO] [stdout] 60 | | //processor.write("ok; G0 completed (@defer_task)\n").await; [INFO] [stdout] 61 | | } [INFO] [stdout] | |_________________^ help: try: `num_rapid = num_rapid.saturating_sub(1);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/printhor/control/task_stepper.rs:381:20 [INFO] [stdout] | [INFO] [stdout] 381 | if !motion_planner.do_homing().await.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `motion_planner.do_homing().await.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/bin/printhor/control/task_stepper.rs:194:107 [INFO] [stdout] | [INFO] [stdout] 194 | ..._axis.x.and_then(|cv| cv.to_i64().and_then(|v| Some(v as u64))).unwrap_or(default_rate)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cv.to_i64().map(|v| v as u64)` [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/bin/printhor/control/task_stepper.rs:195:107 [INFO] [stdout] | [INFO] [stdout] 195 | ..._axis.y.and_then(|cv| cv.to_i64().and_then(|v| Some(v as u64))).unwrap_or(default_rate)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cv.to_i64().map(|v| v as u64)` [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/bin/printhor/control/task_stepper.rs:196:107 [INFO] [stdout] | [INFO] [stdout] 196 | ..._axis.z.and_then(|cv| cv.to_i64().and_then(|v| Some(v as u64))).unwrap_or(default_rate)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cv.to_i64().map(|v| v as u64)` [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/bin/printhor/control/task_stepper.rs:198:107 [INFO] [stdout] | [INFO] [stdout] 198 | ..._axis.e.and_then(|cv| cv.to_i64().and_then(|v| Some(v as u64))).unwrap_or(default_rate)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cv.to_i64().map(|v| v as u64)` [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: use of a fallible conversion when an infallible one could be used [INFO] [stdout] --> src/bin/printhor/control/task_stepper.rs:289:95 [INFO] [stdout] | [INFO] [stdout] 289 | ... let s_mm = Real::from_lit(segment.segment_data.displacement_u.try_into().unwrap_or(0), 3); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: converting `u32` to `i64` cannot fail [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fallible_conversions [INFO] [stdout] = note: `#[warn(clippy::unnecessary_fallible_conversions)]` on by default [INFO] [stdout] help: use [INFO] [stdout] | [INFO] [stdout] 289 - let s_mm = Real::from_lit(segment.segment_data.displacement_u.try_into().unwrap_or(0), 3); [INFO] [stdout] 289 + let s_mm = Real::from_lit(segment.segment_data.displacement_u.into().unwrap_or(0), 3); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of a fallible conversion when an infallible one could be used [INFO] [stdout] --> src/bin/printhor/control/task_stepper.rs:306:91 [INFO] [stdout] | [INFO] [stdout] 306 | ... let s_mm = Real::from_lit(segment.segment_data.displacement_u.try_into().unwrap(), 3); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: converting `u32` to `i64` cannot fail [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fallible_conversions [INFO] [stdout] help: use [INFO] [stdout] | [INFO] [stdout] 306 - let s_mm = Real::from_lit(segment.segment_data.displacement_u.try_into().unwrap(), 3); [INFO] [stdout] 306 + let s_mm = Real::from_lit(segment.segment_data.displacement_u.into(), 3); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/printhor/control/motion_timing/mod.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | / return if let Some(channel) = target_channel { [INFO] [stdout] 74 | | #[cfg(feature = "no-real-time")] [INFO] [stdout] 75 | | let ref_time = self.ref_time; [INFO] [stdout] 76 | | #[cfg(not(feature = "no-real-time"))] [INFO] [stdout] ... | [INFO] [stdout] 88 | | None [INFO] [stdout] 89 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 73 ~ if let Some(channel) = target_channel { [INFO] [stdout] 74 + #[cfg(feature = "no-real-time")] [INFO] [stdout] 75 + let ref_time = self.ref_time; [INFO] [stdout] 76 + #[cfg(not(feature = "no-real-time"))] [INFO] [stdout] 77 + let ref_time = now().as_ticks(); [INFO] [stdout] 78 + let tw = Duration::from_ticks((channel.next_tick as i64 - ref_time as i64).max(0) as u64); [INFO] [stdout] 79 + #[cfg(not(feature = "no-real-time"))] [INFO] [stdout] 80 + while now().as_ticks() < channel.next_tick {} [INFO] [stdout] 81 + channel.next_tick += channel.width; [INFO] [stdout] 82 + #[cfg(feature = "no-real-time")] [INFO] [stdout] 83 + { [INFO] [stdout] 84 + self.ref_time += tw.as_ticks(); [INFO] [stdout] 85 + } [INFO] [stdout] 86 + Some((channel.name, tw)) [INFO] [stdout] 87 + } else { [INFO] [stdout] 88 + None [INFO] [stdout] 89 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `XYZW` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/mod.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct XYZW { [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Xyzw` [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 `XYZ` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/mod.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct XYZ { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Xyz` [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 `XYZEFS` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/mod.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct XYZEFS { [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Xyzefs` [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 `NOP` contains a capitalized acronym [INFO] [stdout] --> src/bin/printhor/control/mod.rs:122:5 [INFO] [stdout] | [INFO] [stdout] 122 | NOP, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Nop` [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: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:76:32 [INFO] [stdout] | [INFO] [stdout] 76 | x: self.x.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:77:32 [INFO] [stdout] | [INFO] [stdout] 77 | y: self.y.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:78:32 [INFO] [stdout] | [INFO] [stdout] 78 | z: self.z.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/bin/printhor/tgeo.rs:79:32 [INFO] [stdout] | [INFO] [stdout] 79 | e: self.e.and_then(|v| f(v)), [INFO] [stdout] | ^^^^^^^^ help: replace the closure with the function itself: `f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/bin/printhor/tgeo.rs:86:39 [INFO] [stdout] | [INFO] [stdout] 86 | where F: FnMut((CoordSel, &T)) -> () [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [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/bin/printhor/tgeo.rs:138:55 [INFO] [stdout] | [INFO] [stdout] 138 | if coord_idx.contains(CoordSel::X) { self.x = self.x.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|v| v + val)` [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/bin/printhor/tgeo.rs:139:55 [INFO] [stdout] | [INFO] [stdout] 139 | if coord_idx.contains(CoordSel::Y) { self.y = self.y.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|v| v + val)` [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/bin/printhor/tgeo.rs:140:55 [INFO] [stdout] | [INFO] [stdout] 140 | if coord_idx.contains(CoordSel::Z) { self.z = self.z.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|v| v + val)` [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/bin/printhor/tgeo.rs:141:55 [INFO] [stdout] | [INFO] [stdout] 141 | if coord_idx.contains(CoordSel::E) { self.e = self.e.and_then(|v| Some(v + val)) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|v| v + val)` [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/bin/printhor/tgeo.rs:180:53 [INFO] [stdout] | [INFO] [stdout] 180 | ... x: if coord_idx.contains(CoordSel::X) { self.x.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 180 - x: if coord_idx.contains(CoordSel::X) { self.x.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.x}, [INFO] [stdout] 180 + x: if coord_idx.contains(CoordSel::X) { self.x.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.x}, [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/bin/printhor/tgeo.rs:181:53 [INFO] [stdout] | [INFO] [stdout] 181 | ... y: if coord_idx.contains(CoordSel::Y) { self.y.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 181 - y: if coord_idx.contains(CoordSel::Y) { self.y.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.y}, [INFO] [stdout] 181 + y: if coord_idx.contains(CoordSel::Y) { self.y.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.y}, [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/bin/printhor/tgeo.rs:182:53 [INFO] [stdout] | [INFO] [stdout] 182 | ... z: if coord_idx.contains(CoordSel::Z) { self.z.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 182 - z: if coord_idx.contains(CoordSel::Z) { self.z.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.z}, [INFO] [stdout] 182 + z: if coord_idx.contains(CoordSel::Z) { self.z.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.z}, [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/bin/printhor/tgeo.rs:183:53 [INFO] [stdout] | [INFO] [stdout] 183 | ... e: if coord_idx.contains(CoordSel::E) { self.e.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {sel... [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] 183 - e: if coord_idx.contains(CoordSel::E) { self.e.and_then(|v| if v > upper_bound {Some(v)} else {Some(upper_bound)})} else {self.e}, [INFO] [stdout] 183 + e: if coord_idx.contains(CoordSel::E) { self.e.map(|v| if v > upper_bound {v} else {upper_bound})} else {self.e}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/printhor/tgeo.rs:376:9 [INFO] [stdout] | [INFO] [stdout] 376 | return !matching_point; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 376 - return !matching_point; [INFO] [stdout] 376 + !matching_point [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bin/printhor/tgeo.rs:392:9 [INFO] [stdout] | [INFO] [stdout] 392 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 392 - return true; [INFO] [stdout] 392 + true [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/bin/printhor/tgeo.rs:457:16 [INFO] [stdout] | [INFO] [stdout] 457 | x: self.x.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|v| v.abs())` [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/bin/printhor/tgeo.rs:458:16 [INFO] [stdout] | [INFO] [stdout] 458 | y: self.y.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|v| v.abs())` [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/bin/printhor/tgeo.rs:459:16 [INFO] [stdout] | [INFO] [stdout] 459 | z: self.z.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|v| v.abs())` [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/bin/printhor/tgeo.rs:460:16 [INFO] [stdout] | [INFO] [stdout] 460 | e: self.e.and_then(|v| Some(v.abs())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|v| v.abs())` [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 `clone` on type `T` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/tgeo.rs:527:32 [INFO] [stdout] | [INFO] [stdout] 527 | ((*self) / norm.clone(), norm) [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `norm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [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/bin/printhor/tgeo.rs:634:37 [INFO] [stdout] | [INFO] [stdout] 634 | x: self.x.and_then(|x0| rhs.x.and_then(|x1| Some(x0 + x1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.x.map(|x1| x0 + x1)` [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/bin/printhor/tgeo.rs:635:37 [INFO] [stdout] | [INFO] [stdout] 635 | y: self.y.and_then(|y0| rhs.y.and_then(|y1| Some(y0 + y1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.y.map(|y1| y0 + y1)` [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/bin/printhor/tgeo.rs:636:37 [INFO] [stdout] | [INFO] [stdout] 636 | z: self.z.and_then(|z0| rhs.z.and_then(|z1| Some(z0 + z1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.z.map(|z1| z0 + z1)` [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/bin/printhor/tgeo.rs:637:37 [INFO] [stdout] | [INFO] [stdout] 637 | e: self.e.and_then(|e0| rhs.e.and_then(|e1| Some(e0 + e1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.e.map(|e1| e0 + e1)` [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/bin/printhor/tgeo.rs:662:37 [INFO] [stdout] | [INFO] [stdout] 662 | x: self.x.and_then(|x0| rhs.x.and_then(|x1| Some(x0 - x1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.x.map(|x1| x0 - x1)` [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/bin/printhor/tgeo.rs:663:37 [INFO] [stdout] | [INFO] [stdout] 663 | y: self.y.and_then(|y0| rhs.y.and_then(|y1| Some(y0 - y1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.y.map(|y1| y0 - y1)` [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/bin/printhor/tgeo.rs:664:37 [INFO] [stdout] | [INFO] [stdout] 664 | z: self.z.and_then(|z0| rhs.z.and_then(|z1| Some(z0 - z1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.z.map(|z1| z0 - z1)` [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/bin/printhor/tgeo.rs:665:37 [INFO] [stdout] | [INFO] [stdout] 665 | e: self.e.and_then(|e0| rhs.e.and_then(|e1| Some(e0 - e1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.e.map(|e1| e0 - e1)` [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/bin/printhor/tgeo.rs:689:37 [INFO] [stdout] | [INFO] [stdout] 689 | x: self.x.and_then(|x0| rhs.x.and_then(|x1| Some(x0 * x1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.x.map(|x1| x0 * x1)` [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/bin/printhor/tgeo.rs:690:37 [INFO] [stdout] | [INFO] [stdout] 690 | y: self.y.and_then(|y0| rhs.y.and_then(|y1| Some(y0 * y1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.y.map(|y1| y0 * y1)` [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/bin/printhor/tgeo.rs:691:37 [INFO] [stdout] | [INFO] [stdout] 691 | z: self.z.and_then(|z0| rhs.z.and_then(|z1| Some(z0 * z1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.z.map(|z1| z0 * z1)` [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/bin/printhor/tgeo.rs:692:37 [INFO] [stdout] | [INFO] [stdout] 692 | e: self.e.and_then(|e0| rhs.e.and_then(|e1| Some(e0 * e1))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rhs.e.map(|e1| e0 * e1)` [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/bin/printhor/tgeo.rs:705:16 [INFO] [stdout] | [INFO] [stdout] 705 | x: self.x.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:706:16 [INFO] [stdout] | [INFO] [stdout] 706 | y: self.y.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:707:16 [INFO] [stdout] | [INFO] [stdout] 707 | z: self.z.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:708:16 [INFO] [stdout] | [INFO] [stdout] 708 | e: self.e.and_then(|v| Some(v * rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|v| v * rhs)` [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/bin/printhor/tgeo.rs:762:20 [INFO] [stdout] | [INFO] [stdout] 762 | x: self.x.and_then(|x0| Some(x0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.x.map(|x0| x0 / rhs)` [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/bin/printhor/tgeo.rs:763:20 [INFO] [stdout] | [INFO] [stdout] 763 | y: self.y.and_then(|y0| Some(y0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.y.map(|y0| y0 / rhs)` [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/bin/printhor/tgeo.rs:764:20 [INFO] [stdout] | [INFO] [stdout] 764 | z: self.z.and_then(|z0| Some(z0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.z.map(|z0| z0 / rhs)` [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/bin/printhor/tgeo.rs:765:20 [INFO] [stdout] | [INFO] [stdout] 765 | e: self.e.and_then(|e0| Some(e0 / rhs)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.e.map(|e0| e0 / rhs)` [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: manual implementation of `Option::map` [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | / match self.0.sqrt() { [INFO] [stdout] 104 | | None => {None} [INFO] [stdout] 105 | | Some(v) => {Some(Real(v))} [INFO] [stdout] 106 | | } [INFO] [stdout] | |_________^ help: try: `self.0.sqrt().map(Real)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-canonical implementation of `partial_cmp` on an `Ord` type [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:212:1 [INFO] [stdout] | [INFO] [stdout] 212 | / impl PartialOrd for Real { [INFO] [stdout] 213 | | [INFO] [stdout] 214 | | fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 215 | | self.0.partial_cmp(&other.0) [INFO] [stdout] ... | [INFO] [stdout] 233 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_canonical_partial_ord_impl [INFO] [stdout] = note: `#[warn(clippy::non_canonical_partial_ord_impl)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 214 - fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 215 - self.0.partial_cmp(&other.0) [INFO] [stdout] 216 - } [INFO] [stdout] 214 + fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:343:33 [INFO] [stdout] | [INFO] [stdout] 343 | self.current_back = self.current.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.current` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:344:29 [INFO] [stdout] | [INFO] [stdout] 344 | self.current += self.step_size.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.step_size` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Real` which implements the `Copy` trait [INFO] [stdout] --> src/bin/printhor/math/real_fixedpoint.rs:345:18 [INFO] [stdout] | [INFO] [stdout] 345 | Some(self.current_back.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.current_back` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/bin/printhor/main.rs:105:1 [INFO] [stdout] | [INFO] [stdout] 105 | / async fn spawn_tasks(spawner: Spawner, event_bus: EventBusRef, defer_channel: DeferChannelRef, [INFO] [stdout] 106 | | controllers: Controllers, devices: IODevices, [INFO] [stdout] 107 | | _motion_device: MotionDevices, [INFO] [stdout] 108 | | _pwm_devices: PwmDevices, [INFO] [stdout] 109 | | _wd: hwa::WatchdogRef [INFO] [stdout] 110 | | ) -> Result<(), ()> { [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/bin/printhor/main.rs:289:9 [INFO] [stdout] | [INFO] [stdout] 289 | / hwa::launch_high_priotity( control::task_stepper::stepper_task( [INFO] [stdout] 290 | | motion_planer, _wd [INFO] [stdout] 291 | | )).and_then(|_| { [INFO] [stdout] 292 | | hwa::debug!("stepper_start() spawned"); [INFO] [stdout] 293 | | Ok(()) [INFO] [stdout] 294 | | })?; [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] 291 ~ )).map(|_| { [INFO] [stdout] 292 | hwa::debug!("stepper_start() spawned"); [INFO] [stdout] 293 ~ () [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 54.88s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: document-features v0.2.8 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2` [INFO] running `Command { std: "docker" "inspect" "b48c397a8c1010750210653b77c27922573a5efbb42c547cc74207aa67a030b9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b48c397a8c1010750210653b77c27922573a5efbb42c547cc74207aa67a030b9", kill_on_drop: false }` [INFO] [stdout] b48c397a8c1010750210653b77c27922573a5efbb42c547cc74207aa67a030b9