[INFO] cloning repository https://github.com/abhatia1205/neural-ink-interview-2 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/abhatia1205/neural-ink-interview-2" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabhatia1205%2Fneural-ink-interview-2", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabhatia1205%2Fneural-ink-interview-2'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 45418261dfa881f1a711a3b1148bac2edcbc47d2 [INFO] linting abhatia1205/neural-ink-interview-2 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fabhatia1205%2Fneural-ink-interview-2" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/abhatia1205/neural-ink-interview-2 [INFO] finished tweaking git repo https://github.com/abhatia1205/neural-ink-interview-2 [INFO] tweaked toml for git repo https://github.com/abhatia1205/neural-ink-interview-2 written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/abhatia1205/neural-ink-interview-2 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/abhatia1205/neural-ink-interview-2 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 roots v0.0.8 [INFO] [stderr] Downloaded nalgebra-macros v0.2.2 [INFO] [stderr] Downloaded bytemuck v1.20.0 [INFO] [stderr] Downloaded simba v0.9.0 [INFO] [stderr] Downloaded wide v0.7.30 [INFO] [stderr] Downloaded nalgebra v0.33.2 [INFO] [stderr] Downloaded libc v0.2.166 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] 3bcc0ec375c0bf4e43f2df8afd6bd274b83f7bb17c04c5b8d81ebb7c8a13f10c [INFO] running `Command { std: "docker" "start" "-a" "3bcc0ec375c0bf4e43f2df8afd6bd274b83f7bb17c04c5b8d81ebb7c8a13f10c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3bcc0ec375c0bf4e43f2df8afd6bd274b83f7bb17c04c5b8d81ebb7c8a13f10c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3bcc0ec375c0bf4e43f2df8afd6bd274b83f7bb17c04c5b8d81ebb7c8a13f10c", kill_on_drop: false }` [INFO] [stdout] 3bcc0ec375c0bf4e43f2df8afd6bd274b83f7bb17c04c5b8d81ebb7c8a13f10c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] bd58c1175eb18c4b7e41c8d88a07817b1006c8130ac8d2a7c72aaae392806ab2 [INFO] running `Command { std: "docker" "start" "-a" "bd58c1175eb18c4b7e41c8d88a07817b1006c8130ac8d2a7c72aaae392806ab2", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.166 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking bytemuck v1.20.0 [INFO] [stderr] Compiling matrixmultiply v0.3.9 [INFO] [stderr] Compiling syn v2.0.89 [INFO] [stderr] Checking rawpointer v0.2.1 [INFO] [stderr] Checking roots v0.0.8 [INFO] [stderr] Checking safe_arch v0.7.2 [INFO] [stderr] Checking wide v0.7.30 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Checking socket2 v0.5.8 [INFO] [stderr] Checking signal-hook-registry v1.4.2 [INFO] [stderr] Checking mio v1.0.2 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking approx v0.5.1 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Checking simba v0.9.0 [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Compiling nalgebra-macros v0.2.2 [INFO] [stderr] Compiling tokio-macros v2.4.0 [INFO] [stderr] Checking tokio v1.41.1 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Checking ppv-lite86 v0.2.20 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking nalgebra v0.33.2 [INFO] [stderr] Checking neuralink_final v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/controller.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | / /// notified. [INFO] [stdout] 118 | | [INFO] [stdout] | |____^ [INFO] [stdout] 119 | pub fn new(distance_tx: mpsc::Sender<((), oneshot::Sender>)>, [INFO] [stdout] | ---------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/robot.rs:244:23 [INFO] [stdout] | [INFO] [stdout] 244 | if(z != 0){ [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 244 - if(z != 0){ [INFO] [stdout] 244 + if z != 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `char::MAX` and `f32::MIN` [INFO] [stdout] --> src/predictor/quadratic_regression.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{char::MAX, f32::MIN}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider choosing a more descriptive name [INFO] [stdout] --> src/predictor/quadratic_regression.rs:72:17 [INFO] [stdout] | [INFO] [stdout] 72 | let Ok((__, distance_queue, time_queue)) = Self::passes_predict_assumptions(distances, times) else { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stdout] = note: `#[warn(clippy::just_underscores_and_digits)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider choosing a more descriptive name [INFO] [stdout] --> src/predictor/taylor_approx.rs:69:50 [INFO] [stdout] | [INFO] [stdout] 69 | let Ok((latency_mean, _, distance_queue, __)) = Self::passes_predict_assumptions(distances, times) else { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/controller.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | / /// notified. [INFO] [stdout] 118 | | [INFO] [stdout] | |____^ [INFO] [stdout] 119 | pub fn new(distance_tx: mpsc::Sender<((), oneshot::Sender>)>, [INFO] [stdout] | ---------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/robot.rs:244:23 [INFO] [stdout] | [INFO] [stdout] 244 | if(z != 0){ [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 244 - if(z != 0){ [INFO] [stdout] 244 + if z != 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `char::MAX` and `f32::MIN` [INFO] [stdout] --> src/predictor/quadratic_regression.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{char::MAX, f32::MIN}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider choosing a more descriptive name [INFO] [stdout] --> src/predictor/quadratic_regression.rs:72:17 [INFO] [stdout] | [INFO] [stdout] 72 | let Ok((__, distance_queue, time_queue)) = Self::passes_predict_assumptions(distances, times) else { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stdout] = note: `#[warn(clippy::just_underscores_and_digits)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider choosing a more descriptive name [INFO] [stdout] --> src/predictor/taylor_approx.rs:69:50 [INFO] [stdout] | [INFO] [stdout] 69 | let Ok((latency_mean, _, distance_queue, __)) = Self::passes_predict_assumptions(distances, times) else { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/robot.rs:220:17 [INFO] [stdout] | [INFO] [stdout] 220 | let mut will_error = guard.move_errors && rng.gen_bool(PROBABILITY_OF_ERROR); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/robot.rs:220:17 [INFO] [stdout] | [INFO] [stdout] 220 | let mut will_error = guard.move_errors && rng.gen_bool(PROBABILITY_OF_ERROR); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:212:9 [INFO] [stdout] | [INFO] [stdout] 212 | return Some(brain_position_function(root) as u64 + commanded_depth); [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] 212 - return Some(brain_position_function(root) as u64 + commanded_depth); [INFO] [stdout] 212 + Some(brain_position_function(root) as u64 + commanded_depth) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/controller.rs:205:59 [INFO] [stdout] | [INFO] [stdout] 205 | let intersection_fn = |x|{brain_position_function(x as f64) + commanded_depth as f64 - needle_pos(x as f64)}; [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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 (`f64` -> `f64`) [INFO] [stdout] --> src/controller.rs:205:107 [INFO] [stdout] | [INFO] [stdout] 205 | let intersection_fn = |x|{brain_position_function(x as f64) + commanded_depth as f64 - needle_pos(x as f64)}; [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:230:9 [INFO] [stdout] | [INFO] [stdout] 230 | return diff > MAX_PREDICTION_ERROR_NM as f64; [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] 230 - return diff > MAX_PREDICTION_ERROR_NM as f64; [INFO] [stdout] 230 + diff > MAX_PREDICTION_ERROR_NM as f64 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:245:9 [INFO] [stdout] | [INFO] [stdout] 245 | return info.current_state; [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] 245 - return info.current_state; [INFO] [stdout] 245 + info.current_state [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:260:9 [INFO] [stdout] | [INFO] [stdout] 260 | return info.consecutive_errors; [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] 260 - return info.consecutive_errors; [INFO] [stdout] 260 + info.consecutive_errors [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:265:9 [INFO] [stdout] | [INFO] [stdout] 265 | return info.pre_move_location; [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] 265 - return info.pre_move_location; [INFO] [stdout] 265 + info.pre_move_location [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:316:9 [INFO] [stdout] | [INFO] [stdout] 316 | return info.outcomes.clone(); [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] 316 - return info.outcomes.clone(); [INFO] [stdout] 316 + info.outcomes.clone() [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/controller.rs:388:9 [INFO] [stdout] | [INFO] [stdout] 388 | / match distance_result { [INFO] [stdout] 389 | | Ok(distance) => { [INFO] [stdout] 390 | | //We can only panic when OOBC or IB in the state machine [INFO] [stdout] 391 | | let can_panic = control_state.out_of_brain_calibrated() || control_state.in_brain(); [INFO] [stdout] ... | [INFO] [stdout] 416 | | Err(_) => {} [INFO] [stdout] 417 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 388 ~ if let Ok(distance) = distance_result { [INFO] [stdout] 389 + //We can only panic when OOBC or IB in the state machine [INFO] [stdout] 390 + let can_panic = control_state.out_of_brain_calibrated() || control_state.in_brain(); [INFO] [stdout] 391 + // Check for abnormal distance [INFO] [stdout] 392 + let too_close_to_brain = distance < MIN_DISTANCE_BRAIN_TO_ARM_NM/2; [INFO] [stdout] 393 + if too_close_to_brain && can_panic { [INFO] [stdout] 394 + println!("Too close to brain: {}", distance); [INFO] [stdout] 395 + transition_state(control_state.clone(), ControllerState::Panic, false); [INFO] [stdout] 396 + } [INFO] [stdout] 397 + else if can_panic && control_state.is_abnormal_distance(distance) { [INFO] [stdout] 398 + control_state.add_error(); [INFO] [stdout] 399 + if control_state.get_consecutive_errors() > MAX_CONSECUTIVE_PREDICTION_ERRORS && can_panic [INFO] [stdout] 400 + { [INFO] [stdout] 401 + println!("Too many consecutive errors"); [INFO] [stdout] 402 + assert!(!control_state.in_panic()); [INFO] [stdout] 403 + transition_state(control_state.clone(), ControllerState::Panic, false); [INFO] [stdout] 404 + } [INFO] [stdout] 405 + } else { [INFO] [stdout] 406 + //If we are not in panic, clear the error since they are non consecutive [INFO] [stdout] 407 + control_state.clear_error(); [INFO] [stdout] 408 + } [INFO] [stdout] 409 + //If we notice we can trigger a move, we trigger it [INFO] [stdout] 410 + if distance < MAX_DIST_FROM_PREMOVE_TO_MOVE { [INFO] [stdout] 411 + println!("Found premove location"); [INFO] [stdout] 412 + control_state.set_move_notification(); [INFO] [stdout] 413 + } [INFO] [stdout] 414 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/controller.rs:496:101 [INFO] [stdout] | [INFO] [stdout] 496 | pub async fn start(control_state: Arc>, commanded_depth: &Vec) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 496 - pub async fn start(control_state: Arc>, commanded_depth: &Vec) { [INFO] [stdout] 496 + pub async fn start(control_state: Arc>, commanded_depth: &[u64]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:605:5 [INFO] [stdout] | [INFO] [stdout] 605 | return InBrainOutcome::Panic; [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] 605 - return InBrainOutcome::Panic; [INFO] [stdout] 605 + InBrainOutcome::Panic [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/controller.rs:565:13 [INFO] [stdout] | [INFO] [stdout] 565 | assert!(commanded_depth >= COMMANDED_DEPTH_MIN_NM && commanded_depth <= COMMANDED_DEPTH_MAX_NM); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(COMMANDED_DEPTH_MIN_NM..=COMMANDED_DEPTH_MAX_NM).contains(&commanded_depth)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:648:8 [INFO] [stdout] | [INFO] [stdout] 648 | return Ok(()); [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] 648 - return Ok(()); [INFO] [stdout] 648 + Ok(()) [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/controller.rs:654:13 [INFO] [stdout] | [INFO] [stdout] 654 | / match self.move_tx.send((move_type.clone(), tx)).await{ [INFO] [stdout] 655 | | Ok(_) => return rx.await.unwrap(), [INFO] [stdout] 656 | | Err(_) => {} [INFO] [stdout] 657 | | } [INFO] [stdout] | |_____________^ help: try: `if let Ok(_) = self.move_tx.send((move_type.clone(), tx)).await { return rx.await.unwrap() }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/controller.rs:663:13 [INFO] [stdout] | [INFO] [stdout] 663 | / match self.state_tx.send(((), tx)).await{ [INFO] [stdout] 664 | | Ok(_) => return rx.await.unwrap(), [INFO] [stdout] 665 | | Err(_) => {} [INFO] [stdout] 666 | | } [INFO] [stdout] | |_____________^ help: try: `if let Ok(_) = self.state_tx.send(((), tx)).await { return rx.await.unwrap() }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/controller.rs:677:13 [INFO] [stdout] | [INFO] [stdout] 677 | / match self.distance_tx.send(((), tx)).await{ [INFO] [stdout] 678 | | Ok(_) => return rx.await.unwrap(), [INFO] [stdout] 679 | | Err(_) => {} [INFO] [stdout] 680 | | } [INFO] [stdout] | |_____________^ help: try: `if let Ok(_) = self.distance_tx.send(((), tx)).await { return rx.await.unwrap() }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/robot.rs:188:13 [INFO] [stdout] | [INFO] [stdout] 188 | return Ok(state.clone()); [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] 188 - return Ok(state.clone()); [INFO] [stdout] 188 + Ok(state.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/robot.rs:191:13 [INFO] [stdout] | [INFO] [stdout] 191 | return Ok(self.state.clone()); [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] 191 - return Ok(self.state.clone()); [INFO] [stdout] 191 + Ok(self.state.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `RobotState` which implements the `Copy` trait [INFO] [stdout] --> src/robot.rs:166:29 [INFO] [stdout] | [INFO] [stdout] 166 | let mut state = self.state.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.state` [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 `RobotState` which implements the `Copy` trait [INFO] [stdout] --> src/robot.rs:188:23 [INFO] [stdout] | [INFO] [stdout] 188 | return Ok(state.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `state` [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 `RobotState` which implements the `Copy` trait [INFO] [stdout] --> src/robot.rs:191:23 [INFO] [stdout] | [INFO] [stdout] 191 | return Ok(self.state.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.state` [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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/robot.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 273 | / match move_cmd { [INFO] [stdout] 274 | | Move::NeedleZ(z) => { [INFO] [stdout] 275 | | println!("InserterZ: {} -> {} with duration {}", start_z, z, total_move_duration.as_millis()); [INFO] [stdout] ... | [INFO] [stdout] 278 | | } [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] 273 ~ if let Move::NeedleZ(z) = move_cmd { [INFO] [stdout] 274 + println!("InserterZ: {} -> {} with duration {}", start_z, z, total_move_duration.as_millis()); [INFO] [stdout] 275 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/robot.rs:292:48 [INFO] [stdout] | [INFO] [stdout] 292 | guard.brain_distances.push(if target_z < brain_position {0} else {target_z - brain_position}); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `target_z.saturating_sub(brain_position)` [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: you should consider adding a `Default` implementation for `OraclePredictor` [INFO] [stdout] --> src/predictor/oracle_approx.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | / pub fn new() -> OraclePredictor{ [INFO] [stdout] 14 | | OraclePredictor{ [INFO] [stdout] 15 | | init_time: Instant::now(), [INFO] [stdout] 16 | | } [INFO] [stdout] 17 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 12 + impl Default for OraclePredictor { [INFO] [stdout] 13 + fn default() -> Self { [INFO] [stdout] 14 + Self::new() [INFO] [stdout] 15 + } [INFO] [stdout] 16 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/oracle_approx.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | return Ok((distance_queue, Vec::from(time_queue))); [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] 41 - return Ok((distance_queue, Vec::from(time_queue))); [INFO] [stdout] 41 + Ok((distance_queue, Vec::from(time_queue))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/oracle_approx.rs:19:51 [INFO] [stdout] | [INFO] [stdout] 19 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(Vec, Vec], time_queue: &Vec) -> Result<(Vec, Vec), ()> { [INFO] [stdout] 20 | const data_len: usize = MIN_SIZE+1; [INFO] [stdout] ... [INFO] [stdout] 25 | } [INFO] [stdout] 26 ~ let mut distance_queue = Vec::from(distance_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/oracle_approx.rs:19:92 [INFO] [stdout] | [INFO] [stdout] 19 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(Vec, Vec>, time_queue: &[Instant]) -> Result<(Vec, Vec), ()> { [INFO] [stdout] 20 | const data_len: usize = MIN_SIZE+1; [INFO] [stdout] ... [INFO] [stdout] 27 | let Some(distance_queue) = distance_queue.last_chunk_mut::() else {return Err(()); }; [INFO] [stdout] 28 ~ let mut time_queue = Vec::from(time_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::vec::Vec>` [INFO] [stdout] --> src/predictor/oracle_approx.rs:26:34 [INFO] [stdout] | [INFO] [stdout] 26 | let mut distance_queue = Vec::from(distance_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `distance_queue.clone()` [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: `std::vec::Vec` [INFO] [stdout] --> src/predictor/oracle_approx.rs:28:30 [INFO] [stdout] | [INFO] [stdout] 28 | let mut time_queue = Vec::from(time_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `time_queue.clone()` [INFO] [stdout] | [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 boolean expression can be simplified [INFO] [stdout] --> src/predictor/oracle_approx.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | if !Self::passes_predict_assumptions(distances, times).is_ok(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Self::passes_predict_assumptions(distances, times).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: unneeded `return` statement [INFO] [stdout] --> src/predictor/oracle_approx.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | / return Some( |x: f64| { [INFO] [stdout] 51 | | let x = x + self.init_time.elapsed().as_millis() as f64; [INFO] [stdout] 52 | | 7_000_000.0 - 5332309.0 [INFO] [stdout] 53 | | + 500_000.0 * (6.0 * x as f64/1000.0).sin() [INFO] [stdout] 54 | | + 1_000_000.0 * (x as f64/1000.0).sin() [INFO] [stdout] 55 | | }); [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] 50 ~ Some( |x: f64| { [INFO] [stdout] 51 + let x = x + self.init_time.elapsed().as_millis() as f64; [INFO] [stdout] 52 + 7_000_000.0 - 5332309.0 [INFO] [stdout] 53 + + 500_000.0 * (6.0 * x as f64/1000.0).sin() [INFO] [stdout] 54 + + 1_000_000.0 * (x as f64/1000.0).sin() [INFO] [stdout] 55 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/oracle_approx.rs:53:38 [INFO] [stdout] | [INFO] [stdout] 53 | + 500_000.0 * (6.0 * x as f64/1000.0).sin() [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/oracle_approx.rs:54:34 [INFO] [stdout] | [INFO] [stdout] 54 | + 1_000_000.0 * (x as f64/1000.0).sin() [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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: importing a legacy numeric constant [INFO] [stdout] --> src/predictor/quadratic_regression.rs:1:22 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{char::MAX, f32::MIN}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import and use the associated constant `f32::MIN` from the primitive type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:37:13 [INFO] [stdout] | [INFO] [stdout] 37 | return Some(vec![weights[0], weights[1], weights[2]]); [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] 37 - return Some(vec![weights[0], weights[1], weights[2]]); [INFO] [stdout] 37 + Some(vec![weights[0], weights[1], weights[2]]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:40:13 [INFO] [stdout] | [INFO] [stdout] 40 | return None; [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] 40 - return None; [INFO] [stdout] 40 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:22:32 [INFO] [stdout] | [INFO] [stdout] 22 | fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 22 - fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] 22 + fn regress(distance_queue: &[u64], time_queue: &Vec) -> Option>{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:22:55 [INFO] [stdout] | [INFO] [stdout] 22 | fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 22 - fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] 22 + fn regress(distance_queue: &Vec, time_queue: &[Instant]) -> Option>{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `time_queue` [INFO] [stdout] --> src/predictor/quadratic_regression.rs:26:18 [INFO] [stdout] | [INFO] [stdout] 26 | for i in 0..distance_queue.len(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 26 - for i in 0..distance_queue.len(){ [INFO] [stdout] 26 + for in time_queue.iter().take(distance_queue.len()){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | return Ok((latency_mean, distance_queue.to_vec(), time_queue.to_vec())); [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] 66 - return Ok((latency_mean, distance_queue.to_vec(), time_queue.to_vec())); [INFO] [stdout] 66 + Ok((latency_mean, distance_queue.to_vec(), time_queue.to_vec())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:45:51 [INFO] [stdout] | [INFO] [stdout] 45 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 - fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] 45 + fn passes_predict_assumptions(distance_queue: &[Result], time_queue: &Vec) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:45:92 [INFO] [stdout] | [INFO] [stdout] 45 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, ... [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 - fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] 45 + fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &[Instant]) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | / return Some( move |x: f64|{ [INFO] [stdout] 83 | | //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 84 | | coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 85 | | }); [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] 82 ~ Some( move |x: f64|{ [INFO] [stdout] 83 + //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 84 + coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 85 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `let...else` may be rewritten with the `?` operator [INFO] [stdout] --> src/predictor/quadratic_regression.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | / let Some(coefs) = Self::regress(&distance_queue, &time_queue) else { [INFO] [stdout] 76 | | return None; [INFO] [stdout] 77 | | }; [INFO] [stdout] | |__________^ help: replace it with: `let coefs = Self::regress(&distance_queue, &time_queue)?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/taylor_approx.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | return coefs; [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] 29 - return coefs; [INFO] [stdout] 29 + coefs [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/taylor_approx.rs:11:32 [INFO] [stdout] | [INFO] [stdout] 11 | fn _get_taylor_coefs(data: &Vec, n: u64, latency: f64) -> Vec{ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 11 - fn _get_taylor_coefs(data: &Vec, n: u64, latency: f64) -> Vec{ [INFO] [stdout] 11 + fn _get_taylor_coefs(data: &[u64], n: u64, latency: f64) -> Vec{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:15:20 [INFO] [stdout] | [INFO] [stdout] 15 | coefs.push(current[current.len() - 1] as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current[current.len() - 1]` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:24:26 [INFO] [stdout] | [INFO] [stdout] 24 | .map(|w| (w[1] - w[0]) as f64/ latency as f64) // (w[1] - w[0]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `((w[1] - w[0]))` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:24:48 [INFO] [stdout] | [INFO] [stdout] 24 | .map(|w| (w[1] - w[0]) as f64/ latency as f64) // (w[1] - w[0]) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `latency` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:26:24 [INFO] [stdout] | [INFO] [stdout] 26 | coefs.push(next[next.len() - 1] as f64 / factorial as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `next[next.len() - 1]` [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: unneeded `return` statement [INFO] [stdout] --> src/predictor/taylor_approx.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | return Ok((latency_mean, latency_std, distance_queue, Vec::from(time_queue))); [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] 63 - return Ok((latency_mean, latency_std, distance_queue, Vec::from(time_queue))); [INFO] [stdout] 63 + Ok((latency_mean, latency_std, distance_queue, Vec::from(time_queue))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/taylor_approx.rs:32:51 [INFO] [stdout] | [INFO] [stdout] 32 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, f64, Vec], time_queue: &Vec) -> Result<(f64, f64, Vec, Vec), ()> { [INFO] [stdout] 33 | const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] ... [INFO] [stdout] 38 | } [INFO] [stdout] 39 ~ let mut distance_queue = Vec::from(distance_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/taylor_approx.rs:32:92 [INFO] [stdout] | [INFO] [stdout] 32 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, f64, Vec>, time_queue: &[Instant]) -> Result<(f64, f64, Vec, Vec), ()> { [INFO] [stdout] 33 | const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] ... [INFO] [stdout] 40 | let Some(distance_queue) = distance_queue.last_chunk_mut::() else {return Err(()); }; [INFO] [stdout] 41 ~ let mut time_queue = Vec::from(time_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::vec::Vec>` [INFO] [stdout] --> src/predictor/taylor_approx.rs:39:34 [INFO] [stdout] | [INFO] [stdout] 39 | let mut distance_queue = Vec::from(distance_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `distance_queue.clone()` [INFO] [stdout] | [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: useless conversion to the same type: `std::vec::Vec` [INFO] [stdout] --> src/predictor/taylor_approx.rs:41:30 [INFO] [stdout] | [INFO] [stdout] 41 | let mut time_queue = Vec::from(time_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `time_queue.clone()` [INFO] [stdout] | [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: unneeded `return` statement [INFO] [stdout] --> src/predictor/taylor_approx.rs:77:9 [INFO] [stdout] | [INFO] [stdout] 77 | / return Some( move |x: f64|{ [INFO] [stdout] 78 | | //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 79 | | coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 80 | | }); [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] 77 ~ Some( move |x: f64|{ [INFO] [stdout] 78 + //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 79 + coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 80 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/mod.rs:9:34 [INFO] [stdout] | [INFO] [stdout] 9 | fn predict(&self, distances: &Vec>, times: &Vec, print_coefs: bool) -> Option f64>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Result]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/mod.rs:9:70 [INFO] [stdout] | [INFO] [stdout] 9 | fn predict(&self, distances: &Vec>, times: &Vec, print_coefs: bool) -> Option f64>; [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `&[Instant]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | 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] 11 - return true; [INFO] [stdout] 11 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> src/interface.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | async fn get_surface_distance(&self) -> Result; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] = note: `#[warn(async_fn_in_trait)]` on by default [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 22 - async fn get_surface_distance(&self) -> Result; [INFO] [stdout] 22 + fn get_surface_distance(&self) -> impl std::future::Future> + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> src/interface.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | async fn get_robot_state(&self) -> Result; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 72 - async fn get_robot_state(&self) -> Result; [INFO] [stdout] 72 + fn get_robot_state(&self) -> impl std::future::Future> + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> src/interface.rs:74:5 [INFO] [stdout] | [INFO] [stdout] 74 | async fn command_move(&self, command: &Move) -> Result<(), RobotError>; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 74 - async fn command_move(&self, command: &Move) -> Result<(), RobotError>; [INFO] [stdout] 74 + fn command_move(&self, command: &Move) -> impl std::future::Future> + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> src/interface.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | async fn command_grasp(&self) -> Result<(), RobotError>; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 75 - async fn command_grasp(&self) -> Result<(), RobotError>; [INFO] [stdout] 75 + fn command_grasp(&self) -> impl std::future::Future> + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `data_len` should have an upper case name [INFO] [stdout] --> src/predictor/oracle_approx.rs:20:15 [INFO] [stdout] | [INFO] [stdout] 20 | const data_len: usize = MIN_SIZE+1; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] help: convert the identifier to upper case [INFO] [stdout] | [INFO] [stdout] 20 - const data_len: usize = MIN_SIZE+1; [INFO] [stdout] 20 + const DATA_LEN: usize = MIN_SIZE+1; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `data_len` should have an upper case name [INFO] [stdout] --> src/predictor/taylor_approx.rs:33:15 [INFO] [stdout] | [INFO] [stdout] 33 | const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: convert the identifier to upper case [INFO] [stdout] | [INFO] [stdout] 33 - const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] 33 + const DATA_LEN: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> tests/integration_tests_oracle.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | return (controller_clone, robot_clone); [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] 59 - return (controller_clone, robot_clone); [INFO] [stdout] 59 + (controller_clone, robot_clone) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> tests/integration_tests_oracle.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 87 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:212:9 [INFO] [stdout] | [INFO] [stdout] 212 | return Some(brain_position_function(root) as u64 + commanded_depth); [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] 212 - return Some(brain_position_function(root) as u64 + commanded_depth); [INFO] [stdout] 212 + Some(brain_position_function(root) as u64 + commanded_depth) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/controller.rs:205:59 [INFO] [stdout] | [INFO] [stdout] 205 | let intersection_fn = |x|{brain_position_function(x as f64) + commanded_depth as f64 - needle_pos(x as f64)}; [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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 (`f64` -> `f64`) [INFO] [stdout] --> src/controller.rs:205:107 [INFO] [stdout] | [INFO] [stdout] 205 | let intersection_fn = |x|{brain_position_function(x as f64) + commanded_depth as f64 - needle_pos(x as f64)}; [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:230:9 [INFO] [stdout] | [INFO] [stdout] 230 | return diff > MAX_PREDICTION_ERROR_NM as f64; [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] 230 - return diff > MAX_PREDICTION_ERROR_NM as f64; [INFO] [stdout] 230 + diff > MAX_PREDICTION_ERROR_NM as f64 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:245:9 [INFO] [stdout] | [INFO] [stdout] 245 | return info.current_state; [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] 245 - return info.current_state; [INFO] [stdout] 245 + info.current_state [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:260:9 [INFO] [stdout] | [INFO] [stdout] 260 | return info.consecutive_errors; [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] 260 - return info.consecutive_errors; [INFO] [stdout] 260 + info.consecutive_errors [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:265:9 [INFO] [stdout] | [INFO] [stdout] 265 | return info.pre_move_location; [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] 265 - return info.pre_move_location; [INFO] [stdout] 265 + info.pre_move_location [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:316:9 [INFO] [stdout] | [INFO] [stdout] 316 | return info.outcomes.clone(); [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] 316 - return info.outcomes.clone(); [INFO] [stdout] 316 + info.outcomes.clone() [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/controller.rs:388:9 [INFO] [stdout] | [INFO] [stdout] 388 | / match distance_result { [INFO] [stdout] 389 | | Ok(distance) => { [INFO] [stdout] 390 | | //We can only panic when OOBC or IB in the state machine [INFO] [stdout] 391 | | let can_panic = control_state.out_of_brain_calibrated() || control_state.in_brain(); [INFO] [stdout] ... | [INFO] [stdout] 416 | | Err(_) => {} [INFO] [stdout] 417 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 388 ~ if let Ok(distance) = distance_result { [INFO] [stdout] 389 + //We can only panic when OOBC or IB in the state machine [INFO] [stdout] 390 + let can_panic = control_state.out_of_brain_calibrated() || control_state.in_brain(); [INFO] [stdout] 391 + // Check for abnormal distance [INFO] [stdout] 392 + let too_close_to_brain = distance < MIN_DISTANCE_BRAIN_TO_ARM_NM/2; [INFO] [stdout] 393 + if too_close_to_brain && can_panic { [INFO] [stdout] 394 + println!("Too close to brain: {}", distance); [INFO] [stdout] 395 + transition_state(control_state.clone(), ControllerState::Panic, false); [INFO] [stdout] 396 + } [INFO] [stdout] 397 + else if can_panic && control_state.is_abnormal_distance(distance) { [INFO] [stdout] 398 + control_state.add_error(); [INFO] [stdout] 399 + if control_state.get_consecutive_errors() > MAX_CONSECUTIVE_PREDICTION_ERRORS && can_panic [INFO] [stdout] 400 + { [INFO] [stdout] 401 + println!("Too many consecutive errors"); [INFO] [stdout] 402 + assert!(!control_state.in_panic()); [INFO] [stdout] 403 + transition_state(control_state.clone(), ControllerState::Panic, false); [INFO] [stdout] 404 + } [INFO] [stdout] 405 + } else { [INFO] [stdout] 406 + //If we are not in panic, clear the error since they are non consecutive [INFO] [stdout] 407 + control_state.clear_error(); [INFO] [stdout] 408 + } [INFO] [stdout] 409 + //If we notice we can trigger a move, we trigger it [INFO] [stdout] 410 + if distance < MAX_DIST_FROM_PREMOVE_TO_MOVE { [INFO] [stdout] 411 + println!("Found premove location"); [INFO] [stdout] 412 + control_state.set_move_notification(); [INFO] [stdout] 413 + } [INFO] [stdout] 414 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/controller.rs:496:101 [INFO] [stdout] | [INFO] [stdout] 496 | pub async fn start(control_state: Arc>, commanded_depth: &Vec) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 496 - pub async fn start(control_state: Arc>, commanded_depth: &Vec) { [INFO] [stdout] 496 + pub async fn start(control_state: Arc>, commanded_depth: &[u64]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:605:5 [INFO] [stdout] | [INFO] [stdout] 605 | return InBrainOutcome::Panic; [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] 605 - return InBrainOutcome::Panic; [INFO] [stdout] 605 + InBrainOutcome::Panic [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/controller.rs:565:13 [INFO] [stdout] | [INFO] [stdout] 565 | assert!(commanded_depth >= COMMANDED_DEPTH_MIN_NM && commanded_depth <= COMMANDED_DEPTH_MAX_NM); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(COMMANDED_DEPTH_MIN_NM..=COMMANDED_DEPTH_MAX_NM).contains(&commanded_depth)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:648:8 [INFO] [stdout] | [INFO] [stdout] 648 | return Ok(()); [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] 648 - return Ok(()); [INFO] [stdout] 648 + Ok(()) [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/controller.rs:654:13 [INFO] [stdout] | [INFO] [stdout] 654 | / match self.move_tx.send((move_type.clone(), tx)).await{ [INFO] [stdout] 655 | | Ok(_) => return rx.await.unwrap(), [INFO] [stdout] 656 | | Err(_) => {} [INFO] [stdout] 657 | | } [INFO] [stdout] | |_____________^ help: try: `if let Ok(_) = self.move_tx.send((move_type.clone(), tx)).await { return rx.await.unwrap() }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/controller.rs:663:13 [INFO] [stdout] | [INFO] [stdout] 663 | / match self.state_tx.send(((), tx)).await{ [INFO] [stdout] 664 | | Ok(_) => return rx.await.unwrap(), [INFO] [stdout] 665 | | Err(_) => {} [INFO] [stdout] 666 | | } [INFO] [stdout] | |_____________^ help: try: `if let Ok(_) = self.state_tx.send(((), tx)).await { return rx.await.unwrap() }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/controller.rs:677:13 [INFO] [stdout] | [INFO] [stdout] 677 | / match self.distance_tx.send(((), tx)).await{ [INFO] [stdout] 678 | | Ok(_) => return rx.await.unwrap(), [INFO] [stdout] 679 | | Err(_) => {} [INFO] [stdout] 680 | | } [INFO] [stdout] | |_____________^ help: try: `if let Ok(_) = self.distance_tx.send(((), tx)).await { return rx.await.unwrap() }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> tests/integration_tests_taylor.rs:56:5 [INFO] [stdout] | [INFO] [stdout] 56 | return (controller_clone, robot_clone); [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] 56 - return (controller_clone, robot_clone); [INFO] [stdout] 56 + (controller_clone, robot_clone) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/robot.rs:188:13 [INFO] [stdout] | [INFO] [stdout] 188 | return Ok(state.clone()); [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] 188 - return Ok(state.clone()); [INFO] [stdout] 188 + Ok(state.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/robot.rs:191:13 [INFO] [stdout] | [INFO] [stdout] 191 | return Ok(self.state.clone()); [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] 191 - return Ok(self.state.clone()); [INFO] [stdout] 191 + Ok(self.state.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/controller.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | / /// notified. [INFO] [stdout] 118 | | [INFO] [stdout] | |____^ [INFO] [stdout] 119 | pub fn new(distance_tx: mpsc::Sender<((), oneshot::Sender>)>, [INFO] [stdout] | ---------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/robot.rs:244:23 [INFO] [stdout] | [INFO] [stdout] 244 | if(z != 0){ [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 244 - if(z != 0){ [INFO] [stdout] 244 + if z != 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `char::MAX` and `f32::MIN` [INFO] [stdout] --> src/predictor/quadratic_regression.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{char::MAX, f32::MIN}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider choosing a more descriptive name [INFO] [stdout] --> src/predictor/quadratic_regression.rs:72:17 [INFO] [stdout] | [INFO] [stdout] 72 | let Ok((__, distance_queue, time_queue)) = Self::passes_predict_assumptions(distances, times) else { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stdout] = note: `#[warn(clippy::just_underscores_and_digits)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider choosing a more descriptive name [INFO] [stdout] --> src/predictor/taylor_approx.rs:69:50 [INFO] [stdout] | [INFO] [stdout] 69 | let Ok((latency_mean, _, distance_queue, __)) = Self::passes_predict_assumptions(distances, times) else { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `predictor::taylor_approx::TaylorQuadraticApproximator` [INFO] [stdout] --> src/main.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use predictor::taylor_approx::TaylorQuadraticApproximator; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `predictor::oracle_approx::OraclePredictor` [INFO] [stdout] --> src/main.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use predictor::oracle_approx::OraclePredictor; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> tests/integration_tests_quadratic.rs:56:5 [INFO] [stdout] | [INFO] [stdout] 56 | return (controller_clone, robot_clone); [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] 56 - return (controller_clone, robot_clone); [INFO] [stdout] 56 + (controller_clone, robot_clone) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `RobotState` which implements the `Copy` trait [INFO] [stdout] --> src/robot.rs:166:29 [INFO] [stdout] | [INFO] [stdout] 166 | let mut state = self.state.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.state` [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 `RobotState` which implements the `Copy` trait [INFO] [stdout] --> src/robot.rs:188:23 [INFO] [stdout] | [INFO] [stdout] 188 | return Ok(state.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `state` [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 `RobotState` which implements the `Copy` trait [INFO] [stdout] --> src/robot.rs:191:23 [INFO] [stdout] | [INFO] [stdout] 191 | return Ok(self.state.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.state` [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: empty line after doc comment [INFO] [stdout] --> src/controller.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | / /// notified. [INFO] [stdout] 118 | | [INFO] [stdout] | |____^ [INFO] [stdout] 119 | pub fn new(distance_tx: mpsc::Sender<((), oneshot::Sender>)>, [INFO] [stdout] | ---------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [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/robot.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 273 | / match move_cmd { [INFO] [stdout] 274 | | Move::NeedleZ(z) => { [INFO] [stdout] 275 | | println!("InserterZ: {} -> {} with duration {}", start_z, z, total_move_duration.as_millis()); [INFO] [stdout] ... | [INFO] [stdout] 278 | | } [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] 273 ~ if let Move::NeedleZ(z) = move_cmd { [INFO] [stdout] 274 + println!("InserterZ: {} -> {} with duration {}", start_z, z, total_move_duration.as_millis()); [INFO] [stdout] 275 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/robot.rs:292:48 [INFO] [stdout] | [INFO] [stdout] 292 | guard.brain_distances.push(if target_z < brain_position {0} else {target_z - brain_position}); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `target_z.saturating_sub(brain_position)` [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: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/robot.rs:244:23 [INFO] [stdout] | [INFO] [stdout] 244 | if(z != 0){ [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 244 - if(z != 0){ [INFO] [stdout] 244 + if z != 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `char::MAX` and `f32::MIN` [INFO] [stdout] --> src/predictor/quadratic_regression.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{char::MAX, f32::MIN}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider choosing a more descriptive name [INFO] [stdout] --> src/predictor/quadratic_regression.rs:72:17 [INFO] [stdout] | [INFO] [stdout] 72 | let Ok((__, distance_queue, time_queue)) = Self::passes_predict_assumptions(distances, times) else { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stdout] = note: `#[warn(clippy::just_underscores_and_digits)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider choosing a more descriptive name [INFO] [stdout] --> src/predictor/taylor_approx.rs:69:50 [INFO] [stdout] | [INFO] [stdout] 69 | let Ok((latency_mean, _, distance_queue, __)) = Self::passes_predict_assumptions(distances, times) else { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `predictor::taylor_approx::TaylorQuadraticApproximator` [INFO] [stdout] --> src/main.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use predictor::taylor_approx::TaylorQuadraticApproximator; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `OraclePredictor` [INFO] [stdout] --> src/predictor/oracle_approx.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | / pub fn new() -> OraclePredictor{ [INFO] [stdout] 14 | | OraclePredictor{ [INFO] [stdout] 15 | | init_time: Instant::now(), [INFO] [stdout] 16 | | } [INFO] [stdout] 17 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 12 + impl Default for OraclePredictor { [INFO] [stdout] 13 + fn default() -> Self { [INFO] [stdout] 14 + Self::new() [INFO] [stdout] 15 + } [INFO] [stdout] 16 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `predictor::oracle_approx::OraclePredictor` [INFO] [stdout] --> src/main.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use predictor::oracle_approx::OraclePredictor; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/oracle_approx.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | return Ok((distance_queue, Vec::from(time_queue))); [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] 41 - return Ok((distance_queue, Vec::from(time_queue))); [INFO] [stdout] 41 + Ok((distance_queue, Vec::from(time_queue))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/oracle_approx.rs:19:51 [INFO] [stdout] | [INFO] [stdout] 19 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(Vec, Vec], time_queue: &Vec) -> Result<(Vec, Vec), ()> { [INFO] [stdout] 20 | const data_len: usize = MIN_SIZE+1; [INFO] [stdout] ... [INFO] [stdout] 25 | } [INFO] [stdout] 26 ~ let mut distance_queue = Vec::from(distance_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/oracle_approx.rs:19:92 [INFO] [stdout] | [INFO] [stdout] 19 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(Vec, Vec>, time_queue: &[Instant]) -> Result<(Vec, Vec), ()> { [INFO] [stdout] 20 | const data_len: usize = MIN_SIZE+1; [INFO] [stdout] ... [INFO] [stdout] 27 | let Some(distance_queue) = distance_queue.last_chunk_mut::() else {return Err(()); }; [INFO] [stdout] 28 ~ let mut time_queue = Vec::from(time_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::vec::Vec>` [INFO] [stdout] --> src/predictor/oracle_approx.rs:26:34 [INFO] [stdout] | [INFO] [stdout] 26 | let mut distance_queue = Vec::from(distance_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `distance_queue.clone()` [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: `std::vec::Vec` [INFO] [stdout] --> src/predictor/oracle_approx.rs:28:30 [INFO] [stdout] | [INFO] [stdout] 28 | let mut time_queue = Vec::from(time_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `time_queue.clone()` [INFO] [stdout] | [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 boolean expression can be simplified [INFO] [stdout] --> src/predictor/oracle_approx.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | if !Self::passes_predict_assumptions(distances, times).is_ok(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Self::passes_predict_assumptions(distances, times).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: unneeded `return` statement [INFO] [stdout] --> src/predictor/oracle_approx.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | / return Some( |x: f64| { [INFO] [stdout] 51 | | let x = x + self.init_time.elapsed().as_millis() as f64; [INFO] [stdout] 52 | | 7_000_000.0 - 5332309.0 [INFO] [stdout] 53 | | + 500_000.0 * (6.0 * x as f64/1000.0).sin() [INFO] [stdout] 54 | | + 1_000_000.0 * (x as f64/1000.0).sin() [INFO] [stdout] 55 | | }); [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] 50 ~ Some( |x: f64| { [INFO] [stdout] 51 + let x = x + self.init_time.elapsed().as_millis() as f64; [INFO] [stdout] 52 + 7_000_000.0 - 5332309.0 [INFO] [stdout] 53 + + 500_000.0 * (6.0 * x as f64/1000.0).sin() [INFO] [stdout] 54 + + 1_000_000.0 * (x as f64/1000.0).sin() [INFO] [stdout] 55 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/oracle_approx.rs:53:38 [INFO] [stdout] | [INFO] [stdout] 53 | + 500_000.0 * (6.0 * x as f64/1000.0).sin() [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/oracle_approx.rs:54:34 [INFO] [stdout] | [INFO] [stdout] 54 | + 1_000_000.0 * (x as f64/1000.0).sin() [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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: importing a legacy numeric constant [INFO] [stdout] --> src/predictor/quadratic_regression.rs:1:22 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{char::MAX, f32::MIN}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import and use the associated constant `f32::MIN` from the primitive type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:37:13 [INFO] [stdout] | [INFO] [stdout] 37 | return Some(vec![weights[0], weights[1], weights[2]]); [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] 37 - return Some(vec![weights[0], weights[1], weights[2]]); [INFO] [stdout] 37 + Some(vec![weights[0], weights[1], weights[2]]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:40:13 [INFO] [stdout] | [INFO] [stdout] 40 | return None; [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] 40 - return None; [INFO] [stdout] 40 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:22:32 [INFO] [stdout] | [INFO] [stdout] 22 | fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 22 - fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] 22 + fn regress(distance_queue: &[u64], time_queue: &Vec) -> Option>{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:22:55 [INFO] [stdout] | [INFO] [stdout] 22 | fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 22 - fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] 22 + fn regress(distance_queue: &Vec, time_queue: &[Instant]) -> Option>{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `time_queue` [INFO] [stdout] --> src/predictor/quadratic_regression.rs:26:18 [INFO] [stdout] | [INFO] [stdout] 26 | for i in 0..distance_queue.len(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 26 - for i in 0..distance_queue.len(){ [INFO] [stdout] 26 + for in time_queue.iter().take(distance_queue.len()){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | return Ok((latency_mean, distance_queue.to_vec(), time_queue.to_vec())); [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] 66 - return Ok((latency_mean, distance_queue.to_vec(), time_queue.to_vec())); [INFO] [stdout] 66 + Ok((latency_mean, distance_queue.to_vec(), time_queue.to_vec())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:45:51 [INFO] [stdout] | [INFO] [stdout] 45 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 - fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] 45 + fn passes_predict_assumptions(distance_queue: &[Result], time_queue: &Vec) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:45:92 [INFO] [stdout] | [INFO] [stdout] 45 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, ... [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 - fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] 45 + fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &[Instant]) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | / return Some( move |x: f64|{ [INFO] [stdout] 83 | | //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 84 | | coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 85 | | }); [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] 82 ~ Some( move |x: f64|{ [INFO] [stdout] 83 + //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 84 + coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 85 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `let...else` may be rewritten with the `?` operator [INFO] [stdout] --> src/predictor/quadratic_regression.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | / let Some(coefs) = Self::regress(&distance_queue, &time_queue) else { [INFO] [stdout] 76 | | return None; [INFO] [stdout] 77 | | }; [INFO] [stdout] | |__________^ help: replace it with: `let coefs = Self::regress(&distance_queue, &time_queue)?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/taylor_approx.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | return coefs; [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] 29 - return coefs; [INFO] [stdout] 29 + coefs [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/taylor_approx.rs:11:32 [INFO] [stdout] | [INFO] [stdout] 11 | fn _get_taylor_coefs(data: &Vec, n: u64, latency: f64) -> Vec{ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 11 - fn _get_taylor_coefs(data: &Vec, n: u64, latency: f64) -> Vec{ [INFO] [stdout] 11 + fn _get_taylor_coefs(data: &[u64], n: u64, latency: f64) -> Vec{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:15:20 [INFO] [stdout] | [INFO] [stdout] 15 | coefs.push(current[current.len() - 1] as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current[current.len() - 1]` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:24:26 [INFO] [stdout] | [INFO] [stdout] 24 | .map(|w| (w[1] - w[0]) as f64/ latency as f64) // (w[1] - w[0]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `((w[1] - w[0]))` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:24:48 [INFO] [stdout] | [INFO] [stdout] 24 | .map(|w| (w[1] - w[0]) as f64/ latency as f64) // (w[1] - w[0]) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `latency` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:26:24 [INFO] [stdout] | [INFO] [stdout] 26 | coefs.push(next[next.len() - 1] as f64 / factorial as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `next[next.len() - 1]` [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: unneeded `return` statement [INFO] [stdout] --> src/predictor/taylor_approx.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | return Ok((latency_mean, latency_std, distance_queue, Vec::from(time_queue))); [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] 63 - return Ok((latency_mean, latency_std, distance_queue, Vec::from(time_queue))); [INFO] [stdout] 63 + Ok((latency_mean, latency_std, distance_queue, Vec::from(time_queue))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/taylor_approx.rs:32:51 [INFO] [stdout] | [INFO] [stdout] 32 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, f64, Vec], time_queue: &Vec) -> Result<(f64, f64, Vec, Vec), ()> { [INFO] [stdout] 33 | const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] ... [INFO] [stdout] 38 | } [INFO] [stdout] 39 ~ let mut distance_queue = Vec::from(distance_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/taylor_approx.rs:32:92 [INFO] [stdout] | [INFO] [stdout] 32 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, f64, Vec>, time_queue: &[Instant]) -> Result<(f64, f64, Vec, Vec), ()> { [INFO] [stdout] 33 | const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] ... [INFO] [stdout] 40 | let Some(distance_queue) = distance_queue.last_chunk_mut::() else {return Err(()); }; [INFO] [stdout] 41 ~ let mut time_queue = Vec::from(time_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::vec::Vec>` [INFO] [stdout] --> src/predictor/taylor_approx.rs:39:34 [INFO] [stdout] | [INFO] [stdout] 39 | let mut distance_queue = Vec::from(distance_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `distance_queue.clone()` [INFO] [stdout] | [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: useless conversion to the same type: `std::vec::Vec` [INFO] [stdout] --> src/predictor/taylor_approx.rs:41:30 [INFO] [stdout] | [INFO] [stdout] 41 | let mut time_queue = Vec::from(time_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `time_queue.clone()` [INFO] [stdout] | [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: unneeded `return` statement [INFO] [stdout] --> src/predictor/taylor_approx.rs:77:9 [INFO] [stdout] | [INFO] [stdout] 77 | / return Some( move |x: f64|{ [INFO] [stdout] 78 | | //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 79 | | coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 80 | | }); [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] 77 ~ Some( move |x: f64|{ [INFO] [stdout] 78 + //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 79 + coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 80 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/mod.rs:9:34 [INFO] [stdout] | [INFO] [stdout] 9 | fn predict(&self, distances: &Vec>, times: &Vec, print_coefs: bool) -> Option f64>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Result]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/mod.rs:9:70 [INFO] [stdout] | [INFO] [stdout] 9 | fn predict(&self, distances: &Vec>, times: &Vec, print_coefs: bool) -> Option f64>; [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `&[Instant]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | 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] 11 - return true; [INFO] [stdout] 11 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> src/interface.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | async fn get_surface_distance(&self) -> Result; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] = note: `#[warn(async_fn_in_trait)]` on by default [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 22 - async fn get_surface_distance(&self) -> Result; [INFO] [stdout] 22 + fn get_surface_distance(&self) -> impl std::future::Future> + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> src/interface.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | async fn get_robot_state(&self) -> Result; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 72 - async fn get_robot_state(&self) -> Result; [INFO] [stdout] 72 + fn get_robot_state(&self) -> impl std::future::Future> + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> src/interface.rs:74:5 [INFO] [stdout] | [INFO] [stdout] 74 | async fn command_move(&self, command: &Move) -> Result<(), RobotError>; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 74 - async fn command_move(&self, command: &Move) -> Result<(), RobotError>; [INFO] [stdout] 74 + fn command_move(&self, command: &Move) -> impl std::future::Future> + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> src/interface.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | async fn command_grasp(&self) -> Result<(), RobotError>; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 75 - async fn command_grasp(&self) -> Result<(), RobotError>; [INFO] [stdout] 75 + fn command_grasp(&self) -> impl std::future::Future> + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `data_len` should have an upper case name [INFO] [stdout] --> src/predictor/oracle_approx.rs:20:15 [INFO] [stdout] | [INFO] [stdout] 20 | const data_len: usize = MIN_SIZE+1; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] help: convert the identifier to upper case [INFO] [stdout] | [INFO] [stdout] 20 - const data_len: usize = MIN_SIZE+1; [INFO] [stdout] 20 + const DATA_LEN: usize = MIN_SIZE+1; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `data_len` should have an upper case name [INFO] [stdout] --> src/predictor/taylor_approx.rs:33:15 [INFO] [stdout] | [INFO] [stdout] 33 | const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: convert the identifier to upper case [INFO] [stdout] | [INFO] [stdout] 33 - const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] 33 + const DATA_LEN: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/robot.rs:220:17 [INFO] [stdout] | [INFO] [stdout] 220 | let mut will_error = guard.move_errors && rng.gen_bool(PROBABILITY_OF_ERROR); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/robot.rs:220:17 [INFO] [stdout] | [INFO] [stdout] 220 | let mut will_error = guard.move_errors && rng.gen_bool(PROBABILITY_OF_ERROR); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `msg` is never read [INFO] [stdout] --> src/interface.rs:7:26 [INFO] [stdout] | [INFO] [stdout] 7 | CommunicationError { msg: String }, [INFO] [stdout] | ------------------ ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `OCTError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `AcquisitionError`, `TimeoutError`, and `PredictionError` are never constructed [INFO] [stdout] --> src/interface.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 3 | pub enum OCTError { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] 4 | // Failed to acquire data from the OCT laser [INFO] [stdout] 5 | AcquisitionError { msg: String }, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 9 | TimeoutError { msg: String }, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 10 | [INFO] [stdout] 11 | PredictionError { msg: String }, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `OCTError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `msg` is never read [INFO] [stdout] --> src/interface.rs:56:17 [INFO] [stdout] | [INFO] [stdout] 56 | MoveError { msg: String }, [INFO] [stdout] | --------- ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `RobotError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ConnectionError` and `PositionError` are never constructed [INFO] [stdout] --> src/interface.rs:58:5 [INFO] [stdout] | [INFO] [stdout] 54 | pub enum RobotError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 58 | ConnectionError { msg: String }, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | PositionError { msg: String }, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RobotError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `command_grasp` is never used [INFO] [stdout] --> src/interface.rs:75:14 [INFO] [stdout] | [INFO] [stdout] 71 | pub trait Robot { [INFO] [stdout] | ----- method in this trait [INFO] [stdout] ... [INFO] [stdout] 75 | async fn command_grasp(&self) -> Result<(), RobotError>; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `state_errors` is never read [INFO] [stdout] --> src/robot.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct RobotArm { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 14 | pub distance_errors: bool, [INFO] [stdout] 15 | pub state_errors: bool, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `train` is never used [INFO] [stdout] --> src/predictor/mod.rs:10:8 [INFO] [stdout] | [INFO] [stdout] 8 | pub trait BrainPredictor { [INFO] [stdout] | -------------- method in this trait [INFO] [stdout] 9 | fn predict(&self, distances: &Vec>, times: &Vec, print_coefs: bool) -> Option f64>; [INFO] [stdout] 10 | fn train(&self) -> bool{ [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MIN_SIZE` is never used [INFO] [stdout] --> src/predictor/oracle_approx.rs:5:7 [INFO] [stdout] | [INFO] [stdout] 5 | const MIN_SIZE: usize =3; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_LATENCY_MS` is never used [INFO] [stdout] --> src/predictor/oracle_approx.rs:6:7 [INFO] [stdout] | [INFO] [stdout] 6 | const MAX_LATENCY_MS: u64 = 18; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OraclePredictor` is never constructed [INFO] [stdout] --> src/predictor/oracle_approx.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct OraclePredictor{ [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `new` and `passes_predict_assumptions` are never used [INFO] [stdout] --> src/predictor/oracle_approx.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl OraclePredictor{ [INFO] [stdout] | -------------------- associated functions in this implementation [INFO] [stdout] 13 | pub fn new() -> OraclePredictor{ [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 19 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(Vec, Vec src/predictor/taylor_approx.rs:4:7 [INFO] [stdout] | [INFO] [stdout] 4 | const MAX_LATENCY_MS: u64 = 18; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_LATENCY_STD_MS` is never used [INFO] [stdout] --> src/predictor/taylor_approx.rs:5:7 [INFO] [stdout] | [INFO] [stdout] 5 | const MAX_LATENCY_STD_MS: u64 = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TAYLOR_POLY_ORDER` is never used [INFO] [stdout] --> src/predictor/taylor_approx.rs:6:7 [INFO] [stdout] | [INFO] [stdout] 6 | const TAYLOR_POLY_ORDER: u64 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TaylorQuadraticApproximator` is never constructed [INFO] [stdout] --> src/predictor/taylor_approx.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct TaylorQuadraticApproximator; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `passes_predict_assumptions` is never used [INFO] [stdout] --> src/predictor/taylor_approx.rs:32:8 [INFO] [stdout] | [INFO] [stdout] 10 | impl TaylorQuadraticApproximator{ [INFO] [stdout] | -------------------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 32 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, f64, Vec src/interface.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | / pub enum OCTError { [INFO] [stdout] 4 | | // Failed to acquire data from the OCT laser [INFO] [stdout] 5 | | AcquisitionError { msg: String }, [INFO] [stdout] ... | [INFO] [stdout] 11 | | PredictionError { msg: String }, [INFO] [stdout] 12 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `Error` [INFO] [stdout] --> src/interface.rs:54:1 [INFO] [stdout] | [INFO] [stdout] 54 | / pub enum RobotError { [INFO] [stdout] 55 | | // Failed to move the robot [INFO] [stdout] 56 | | MoveError { msg: String }, [INFO] [stdout] ... | [INFO] [stdout] 61 | | PositionError { msg: String }, [INFO] [stdout] 62 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:212:9 [INFO] [stdout] | [INFO] [stdout] 212 | return Some(brain_position_function(root) as u64 + commanded_depth); [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] 212 - return Some(brain_position_function(root) as u64 + commanded_depth); [INFO] [stdout] 212 + Some(brain_position_function(root) as u64 + commanded_depth) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/controller.rs:205:59 [INFO] [stdout] | [INFO] [stdout] 205 | let intersection_fn = |x|{brain_position_function(x as f64) + commanded_depth as f64 - needle_pos(x as f64)}; [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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 (`f64` -> `f64`) [INFO] [stdout] --> src/controller.rs:205:107 [INFO] [stdout] | [INFO] [stdout] 205 | let intersection_fn = |x|{brain_position_function(x as f64) + commanded_depth as f64 - needle_pos(x as f64)}; [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:230:9 [INFO] [stdout] | [INFO] [stdout] 230 | return diff > MAX_PREDICTION_ERROR_NM as f64; [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] 230 - return diff > MAX_PREDICTION_ERROR_NM as f64; [INFO] [stdout] 230 + diff > MAX_PREDICTION_ERROR_NM as f64 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:245:9 [INFO] [stdout] | [INFO] [stdout] 245 | return info.current_state; [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] 245 - return info.current_state; [INFO] [stdout] 245 + info.current_state [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:260:9 [INFO] [stdout] | [INFO] [stdout] 260 | return info.consecutive_errors; [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] 260 - return info.consecutive_errors; [INFO] [stdout] 260 + info.consecutive_errors [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:265:9 [INFO] [stdout] | [INFO] [stdout] 265 | return info.pre_move_location; [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] 265 - return info.pre_move_location; [INFO] [stdout] 265 + info.pre_move_location [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:316:9 [INFO] [stdout] | [INFO] [stdout] 316 | return info.outcomes.clone(); [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] 316 - return info.outcomes.clone(); [INFO] [stdout] 316 + info.outcomes.clone() [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/controller.rs:388:9 [INFO] [stdout] | [INFO] [stdout] 388 | / match distance_result { [INFO] [stdout] 389 | | Ok(distance) => { [INFO] [stdout] 390 | | //We can only panic when OOBC or IB in the state machine [INFO] [stdout] 391 | | let can_panic = control_state.out_of_brain_calibrated() || control_state.in_brain(); [INFO] [stdout] ... | [INFO] [stdout] 416 | | Err(_) => {} [INFO] [stdout] 417 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 388 ~ if let Ok(distance) = distance_result { [INFO] [stdout] 389 + //We can only panic when OOBC or IB in the state machine [INFO] [stdout] 390 + let can_panic = control_state.out_of_brain_calibrated() || control_state.in_brain(); [INFO] [stdout] 391 + // Check for abnormal distance [INFO] [stdout] 392 + let too_close_to_brain = distance < MIN_DISTANCE_BRAIN_TO_ARM_NM/2; [INFO] [stdout] 393 + if too_close_to_brain && can_panic { [INFO] [stdout] 394 + println!("Too close to brain: {}", distance); [INFO] [stdout] 395 + transition_state(control_state.clone(), ControllerState::Panic, false); [INFO] [stdout] 396 + } [INFO] [stdout] 397 + else if can_panic && control_state.is_abnormal_distance(distance) { [INFO] [stdout] 398 + control_state.add_error(); [INFO] [stdout] 399 + if control_state.get_consecutive_errors() > MAX_CONSECUTIVE_PREDICTION_ERRORS && can_panic [INFO] [stdout] 400 + { [INFO] [stdout] 401 + println!("Too many consecutive errors"); [INFO] [stdout] 402 + assert!(!control_state.in_panic()); [INFO] [stdout] 403 + transition_state(control_state.clone(), ControllerState::Panic, false); [INFO] [stdout] 404 + } [INFO] [stdout] 405 + } else { [INFO] [stdout] 406 + //If we are not in panic, clear the error since they are non consecutive [INFO] [stdout] 407 + control_state.clear_error(); [INFO] [stdout] 408 + } [INFO] [stdout] 409 + //If we notice we can trigger a move, we trigger it [INFO] [stdout] 410 + if distance < MAX_DIST_FROM_PREMOVE_TO_MOVE { [INFO] [stdout] 411 + println!("Found premove location"); [INFO] [stdout] 412 + control_state.set_move_notification(); [INFO] [stdout] 413 + } [INFO] [stdout] 414 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/controller.rs:496:101 [INFO] [stdout] | [INFO] [stdout] 496 | pub async fn start(control_state: Arc>, commanded_depth: &Vec) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 496 - pub async fn start(control_state: Arc>, commanded_depth: &Vec) { [INFO] [stdout] 496 + pub async fn start(control_state: Arc>, commanded_depth: &[u64]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:605:5 [INFO] [stdout] | [INFO] [stdout] 605 | return InBrainOutcome::Panic; [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] 605 - return InBrainOutcome::Panic; [INFO] [stdout] 605 + InBrainOutcome::Panic [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/controller.rs:565:13 [INFO] [stdout] | [INFO] [stdout] 565 | assert!(commanded_depth >= COMMANDED_DEPTH_MIN_NM && commanded_depth <= COMMANDED_DEPTH_MAX_NM); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(COMMANDED_DEPTH_MIN_NM..=COMMANDED_DEPTH_MAX_NM).contains(&commanded_depth)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:648:8 [INFO] [stdout] | [INFO] [stdout] 648 | return Ok(()); [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] 648 - return Ok(()); [INFO] [stdout] 648 + Ok(()) [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/controller.rs:654:13 [INFO] [stdout] | [INFO] [stdout] 654 | / match self.move_tx.send((move_type.clone(), tx)).await{ [INFO] [stdout] 655 | | Ok(_) => return rx.await.unwrap(), [INFO] [stdout] 656 | | Err(_) => {} [INFO] [stdout] 657 | | } [INFO] [stdout] | |_____________^ help: try: `if let Ok(_) = self.move_tx.send((move_type.clone(), tx)).await { return rx.await.unwrap() }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/controller.rs:663:13 [INFO] [stdout] | [INFO] [stdout] 663 | / match self.state_tx.send(((), tx)).await{ [INFO] [stdout] 664 | | Ok(_) => return rx.await.unwrap(), [INFO] [stdout] 665 | | Err(_) => {} [INFO] [stdout] 666 | | } [INFO] [stdout] | |_____________^ help: try: `if let Ok(_) = self.state_tx.send(((), tx)).await { return rx.await.unwrap() }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/controller.rs:677:13 [INFO] [stdout] | [INFO] [stdout] 677 | / match self.distance_tx.send(((), tx)).await{ [INFO] [stdout] 678 | | Ok(_) => return rx.await.unwrap(), [INFO] [stdout] 679 | | Err(_) => {} [INFO] [stdout] 680 | | } [INFO] [stdout] | |_____________^ help: try: `if let Ok(_) = self.distance_tx.send(((), tx)).await { return rx.await.unwrap() }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/robot.rs:188:13 [INFO] [stdout] | [INFO] [stdout] 188 | return Ok(state.clone()); [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] 188 - return Ok(state.clone()); [INFO] [stdout] 188 + Ok(state.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/robot.rs:191:13 [INFO] [stdout] | [INFO] [stdout] 191 | return Ok(self.state.clone()); [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] 191 - return Ok(self.state.clone()); [INFO] [stdout] 191 + Ok(self.state.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `RobotState` which implements the `Copy` trait [INFO] [stdout] --> src/robot.rs:166:29 [INFO] [stdout] | [INFO] [stdout] 166 | let mut state = self.state.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.state` [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 `RobotState` which implements the `Copy` trait [INFO] [stdout] --> src/robot.rs:188:23 [INFO] [stdout] | [INFO] [stdout] 188 | return Ok(state.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `state` [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 `RobotState` which implements the `Copy` trait [INFO] [stdout] --> src/robot.rs:191:23 [INFO] [stdout] | [INFO] [stdout] 191 | return Ok(self.state.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.state` [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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/robot.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 273 | / match move_cmd { [INFO] [stdout] 274 | | Move::NeedleZ(z) => { [INFO] [stdout] 275 | | println!("InserterZ: {} -> {} with duration {}", start_z, z, total_move_duration.as_millis()); [INFO] [stdout] ... | [INFO] [stdout] 278 | | } [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] 273 ~ if let Move::NeedleZ(z) = move_cmd { [INFO] [stdout] 274 + println!("InserterZ: {} -> {} with duration {}", start_z, z, total_move_duration.as_millis()); [INFO] [stdout] 275 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/robot.rs:292:48 [INFO] [stdout] | [INFO] [stdout] 292 | guard.brain_distances.push(if target_z < brain_position {0} else {target_z - brain_position}); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `target_z.saturating_sub(brain_position)` [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: unneeded `return` statement [INFO] [stdout] --> src/predictor/oracle_approx.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | return Ok((distance_queue, Vec::from(time_queue))); [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] 41 - return Ok((distance_queue, Vec::from(time_queue))); [INFO] [stdout] 41 + Ok((distance_queue, Vec::from(time_queue))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/oracle_approx.rs:19:51 [INFO] [stdout] | [INFO] [stdout] 19 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(Vec, Vec], time_queue: &Vec) -> Result<(Vec, Vec), ()> { [INFO] [stdout] 20 | const data_len: usize = MIN_SIZE+1; [INFO] [stdout] ... [INFO] [stdout] 25 | } [INFO] [stdout] 26 ~ let mut distance_queue = Vec::from(distance_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/oracle_approx.rs:19:92 [INFO] [stdout] | [INFO] [stdout] 19 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(Vec, Vec>, time_queue: &[Instant]) -> Result<(Vec, Vec), ()> { [INFO] [stdout] 20 | const data_len: usize = MIN_SIZE+1; [INFO] [stdout] ... [INFO] [stdout] 27 | let Some(distance_queue) = distance_queue.last_chunk_mut::() else {return Err(()); }; [INFO] [stdout] 28 ~ let mut time_queue = Vec::from(time_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::vec::Vec>` [INFO] [stdout] --> src/predictor/oracle_approx.rs:26:34 [INFO] [stdout] | [INFO] [stdout] 26 | let mut distance_queue = Vec::from(distance_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `distance_queue.clone()` [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: `std::vec::Vec` [INFO] [stdout] --> src/predictor/oracle_approx.rs:28:30 [INFO] [stdout] | [INFO] [stdout] 28 | let mut time_queue = Vec::from(time_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `time_queue.clone()` [INFO] [stdout] | [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: field `msg` is never read [INFO] [stdout] --> src/interface.rs:7:26 [INFO] [stdout] | [INFO] [stdout] 7 | CommunicationError { msg: String }, [INFO] [stdout] | ------------------ ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `OCTError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `AcquisitionError`, `TimeoutError`, and `PredictionError` are never constructed [INFO] [stdout] --> src/interface.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 3 | pub enum OCTError { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] 4 | // Failed to acquire data from the OCT laser [INFO] [stdout] 5 | AcquisitionError { msg: String }, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 9 | TimeoutError { msg: String }, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 10 | [INFO] [stdout] 11 | PredictionError { msg: String }, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `OCTError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `msg` is never read [INFO] [stdout] --> src/interface.rs:56:17 [INFO] [stdout] | [INFO] [stdout] 56 | MoveError { msg: String }, [INFO] [stdout] | --------- ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `RobotError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ConnectionError` and `PositionError` are never constructed [INFO] [stdout] --> src/interface.rs:58:5 [INFO] [stdout] | [INFO] [stdout] 54 | pub enum RobotError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 58 | ConnectionError { msg: String }, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | PositionError { msg: String }, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RobotError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `command_grasp` is never used [INFO] [stdout] --> src/interface.rs:75:14 [INFO] [stdout] | [INFO] [stdout] 71 | pub trait Robot { [INFO] [stdout] | ----- method in this trait [INFO] [stdout] ... [INFO] [stdout] 75 | async fn command_grasp(&self) -> Result<(), RobotError>; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `state_errors` is never read [INFO] [stdout] --> src/robot.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct RobotArm { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 14 | pub distance_errors: bool, [INFO] [stdout] 15 | pub state_errors: bool, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/predictor/oracle_approx.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | if !Self::passes_predict_assumptions(distances, times).is_ok(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Self::passes_predict_assumptions(distances, times).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: method `train` is never used [INFO] [stdout] --> src/predictor/mod.rs:10:8 [INFO] [stdout] | [INFO] [stdout] 8 | pub trait BrainPredictor { [INFO] [stdout] | -------------- method in this trait [INFO] [stdout] 9 | fn predict(&self, distances: &Vec>, times: &Vec, print_coefs: bool) -> Option f64>; [INFO] [stdout] 10 | fn train(&self) -> bool{ [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MIN_SIZE` is never used [INFO] [stdout] --> src/predictor/oracle_approx.rs:5:7 [INFO] [stdout] | [INFO] [stdout] 5 | const MIN_SIZE: usize =3; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/oracle_approx.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | / return Some( |x: f64| { [INFO] [stdout] 51 | | let x = x + self.init_time.elapsed().as_millis() as f64; [INFO] [stdout] 52 | | 7_000_000.0 - 5332309.0 [INFO] [stdout] 53 | | + 500_000.0 * (6.0 * x as f64/1000.0).sin() [INFO] [stdout] 54 | | + 1_000_000.0 * (x as f64/1000.0).sin() [INFO] [stdout] 55 | | }); [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] 50 ~ Some( |x: f64| { [INFO] [stdout] 51 + let x = x + self.init_time.elapsed().as_millis() as f64; [INFO] [stdout] 52 + 7_000_000.0 - 5332309.0 [INFO] [stdout] 53 + + 500_000.0 * (6.0 * x as f64/1000.0).sin() [INFO] [stdout] 54 + + 1_000_000.0 * (x as f64/1000.0).sin() [INFO] [stdout] 55 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_LATENCY_MS` is never used [INFO] [stdout] --> src/predictor/oracle_approx.rs:6:7 [INFO] [stdout] | [INFO] [stdout] 6 | const MAX_LATENCY_MS: u64 = 18; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OraclePredictor` is never constructed [INFO] [stdout] --> src/predictor/oracle_approx.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct OraclePredictor{ [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `new` and `passes_predict_assumptions` are never used [INFO] [stdout] --> src/predictor/oracle_approx.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl OraclePredictor{ [INFO] [stdout] | -------------------- associated functions in this implementation [INFO] [stdout] 13 | pub fn new() -> OraclePredictor{ [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 19 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(Vec, Vec src/predictor/taylor_approx.rs:4:7 [INFO] [stdout] | [INFO] [stdout] 4 | const MAX_LATENCY_MS: u64 = 18; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_LATENCY_STD_MS` is never used [INFO] [stdout] --> src/predictor/taylor_approx.rs:5:7 [INFO] [stdout] | [INFO] [stdout] 5 | const MAX_LATENCY_STD_MS: u64 = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TAYLOR_POLY_ORDER` is never used [INFO] [stdout] --> src/predictor/taylor_approx.rs:6:7 [INFO] [stdout] | [INFO] [stdout] 6 | const TAYLOR_POLY_ORDER: u64 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TaylorQuadraticApproximator` is never constructed [INFO] [stdout] --> src/predictor/taylor_approx.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct TaylorQuadraticApproximator; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/oracle_approx.rs:53:38 [INFO] [stdout] | [INFO] [stdout] 53 | + 500_000.0 * (6.0 * x as f64/1000.0).sin() [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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: associated function `passes_predict_assumptions` is never used [INFO] [stdout] --> src/predictor/taylor_approx.rs:32:8 [INFO] [stdout] | [INFO] [stdout] 10 | impl TaylorQuadraticApproximator{ [INFO] [stdout] | -------------------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 32 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, f64, Vec `f64`) [INFO] [stdout] --> src/predictor/oracle_approx.rs:54:34 [INFO] [stdout] | [INFO] [stdout] 54 | + 1_000_000.0 * (x as f64/1000.0).sin() [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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: importing a legacy numeric constant [INFO] [stdout] --> src/predictor/quadratic_regression.rs:1:22 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{char::MAX, f32::MIN}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import and use the associated constant `f32::MIN` from the primitive type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `Error` [INFO] [stdout] --> src/interface.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | / pub enum OCTError { [INFO] [stdout] 4 | | // Failed to acquire data from the OCT laser [INFO] [stdout] 5 | | AcquisitionError { msg: String }, [INFO] [stdout] ... | [INFO] [stdout] 11 | | PredictionError { msg: String }, [INFO] [stdout] 12 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:37:13 [INFO] [stdout] | [INFO] [stdout] 37 | return Some(vec![weights[0], weights[1], weights[2]]); [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] 37 - return Some(vec![weights[0], weights[1], weights[2]]); [INFO] [stdout] 37 + Some(vec![weights[0], weights[1], weights[2]]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:40:13 [INFO] [stdout] | [INFO] [stdout] 40 | return None; [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] 40 - return None; [INFO] [stdout] 40 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:22:32 [INFO] [stdout] | [INFO] [stdout] 22 | fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 22 - fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] 22 + fn regress(distance_queue: &[u64], time_queue: &Vec) -> Option>{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:22:55 [INFO] [stdout] | [INFO] [stdout] 22 | fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 22 - fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] 22 + fn regress(distance_queue: &Vec, time_queue: &[Instant]) -> Option>{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `time_queue` [INFO] [stdout] --> src/predictor/quadratic_regression.rs:26:18 [INFO] [stdout] | [INFO] [stdout] 26 | for i in 0..distance_queue.len(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 26 - for i in 0..distance_queue.len(){ [INFO] [stdout] 26 + for in time_queue.iter().take(distance_queue.len()){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | return Ok((latency_mean, distance_queue.to_vec(), time_queue.to_vec())); [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] 66 - return Ok((latency_mean, distance_queue.to_vec(), time_queue.to_vec())); [INFO] [stdout] 66 + Ok((latency_mean, distance_queue.to_vec(), time_queue.to_vec())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:45:51 [INFO] [stdout] | [INFO] [stdout] 45 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 - fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] 45 + fn passes_predict_assumptions(distance_queue: &[Result], time_queue: &Vec) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:45:92 [INFO] [stdout] | [INFO] [stdout] 45 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, ... [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 - fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] 45 + fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &[Instant]) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | / return Some( move |x: f64|{ [INFO] [stdout] 83 | | //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 84 | | coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 85 | | }); [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] 82 ~ Some( move |x: f64|{ [INFO] [stdout] 83 + //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 84 + coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 85 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `let...else` may be rewritten with the `?` operator [INFO] [stdout] --> src/predictor/quadratic_regression.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | / let Some(coefs) = Self::regress(&distance_queue, &time_queue) else { [INFO] [stdout] 76 | | return None; [INFO] [stdout] 77 | | }; [INFO] [stdout] | |__________^ help: replace it with: `let coefs = Self::regress(&distance_queue, &time_queue)?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/taylor_approx.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | return coefs; [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] 29 - return coefs; [INFO] [stdout] 29 + coefs [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `Error` [INFO] [stdout] --> src/interface.rs:54:1 [INFO] [stdout] | [INFO] [stdout] 54 | / pub enum RobotError { [INFO] [stdout] 55 | | // Failed to move the robot [INFO] [stdout] 56 | | MoveError { msg: String }, [INFO] [stdout] ... | [INFO] [stdout] 61 | | PositionError { msg: String }, [INFO] [stdout] 62 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/taylor_approx.rs:11:32 [INFO] [stdout] | [INFO] [stdout] 11 | fn _get_taylor_coefs(data: &Vec, n: u64, latency: f64) -> Vec{ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 11 - fn _get_taylor_coefs(data: &Vec, n: u64, latency: f64) -> Vec{ [INFO] [stdout] 11 + fn _get_taylor_coefs(data: &[u64], n: u64, latency: f64) -> Vec{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:15:20 [INFO] [stdout] | [INFO] [stdout] 15 | coefs.push(current[current.len() - 1] as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current[current.len() - 1]` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:24:26 [INFO] [stdout] | [INFO] [stdout] 24 | .map(|w| (w[1] - w[0]) as f64/ latency as f64) // (w[1] - w[0]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `((w[1] - w[0]))` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:24:48 [INFO] [stdout] | [INFO] [stdout] 24 | .map(|w| (w[1] - w[0]) as f64/ latency as f64) // (w[1] - w[0]) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `latency` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:26:24 [INFO] [stdout] | [INFO] [stdout] 26 | coefs.push(next[next.len() - 1] as f64 / factorial as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `next[next.len() - 1]` [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: unneeded `return` statement [INFO] [stdout] --> src/predictor/taylor_approx.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | return Ok((latency_mean, latency_std, distance_queue, Vec::from(time_queue))); [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] 63 - return Ok((latency_mean, latency_std, distance_queue, Vec::from(time_queue))); [INFO] [stdout] 63 + Ok((latency_mean, latency_std, distance_queue, Vec::from(time_queue))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/taylor_approx.rs:32:51 [INFO] [stdout] | [INFO] [stdout] 32 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, f64, Vec], time_queue: &Vec) -> Result<(f64, f64, Vec, Vec), ()> { [INFO] [stdout] 33 | const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] ... [INFO] [stdout] 38 | } [INFO] [stdout] 39 ~ let mut distance_queue = Vec::from(distance_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/taylor_approx.rs:32:92 [INFO] [stdout] | [INFO] [stdout] 32 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, f64, Vec>, time_queue: &[Instant]) -> Result<(f64, f64, Vec, Vec), ()> { [INFO] [stdout] 33 | const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] ... [INFO] [stdout] 40 | let Some(distance_queue) = distance_queue.last_chunk_mut::() else {return Err(()); }; [INFO] [stdout] 41 ~ let mut time_queue = Vec::from(time_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::vec::Vec>` [INFO] [stdout] --> src/predictor/taylor_approx.rs:39:34 [INFO] [stdout] | [INFO] [stdout] 39 | let mut distance_queue = Vec::from(distance_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `distance_queue.clone()` [INFO] [stdout] | [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: useless conversion to the same type: `std::vec::Vec` [INFO] [stdout] --> src/predictor/taylor_approx.rs:41:30 [INFO] [stdout] | [INFO] [stdout] 41 | let mut time_queue = Vec::from(time_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `time_queue.clone()` [INFO] [stdout] | [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: unneeded `return` statement [INFO] [stdout] --> src/predictor/taylor_approx.rs:77:9 [INFO] [stdout] | [INFO] [stdout] 77 | / return Some( move |x: f64|{ [INFO] [stdout] 78 | | //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 79 | | coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 80 | | }); [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] 77 ~ Some( move |x: f64|{ [INFO] [stdout] 78 + //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 79 + coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 80 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/mod.rs:9:34 [INFO] [stdout] | [INFO] [stdout] 9 | fn predict(&self, distances: &Vec>, times: &Vec, print_coefs: bool) -> Option f64>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Result]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/mod.rs:9:70 [INFO] [stdout] | [INFO] [stdout] 9 | fn predict(&self, distances: &Vec>, times: &Vec, print_coefs: bool) -> Option f64>; [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `&[Instant]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | 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] 11 - return true; [INFO] [stdout] 11 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> src/main.rs:83:9 [INFO] [stdout] | [INFO] [stdout] 83 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:212:9 [INFO] [stdout] | [INFO] [stdout] 212 | return Some(brain_position_function(root) as u64 + commanded_depth); [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] 212 - return Some(brain_position_function(root) as u64 + commanded_depth); [INFO] [stdout] 212 + Some(brain_position_function(root) as u64 + commanded_depth) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `data_len` should have an upper case name [INFO] [stdout] --> src/predictor/oracle_approx.rs:20:15 [INFO] [stdout] | [INFO] [stdout] 20 | const data_len: usize = MIN_SIZE+1; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] help: convert the identifier to upper case [INFO] [stdout] | [INFO] [stdout] 20 - const data_len: usize = MIN_SIZE+1; [INFO] [stdout] 20 + const DATA_LEN: usize = MIN_SIZE+1; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `data_len` should have an upper case name [INFO] [stdout] --> src/predictor/taylor_approx.rs:33:15 [INFO] [stdout] | [INFO] [stdout] 33 | const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: convert the identifier to upper case [INFO] [stdout] | [INFO] [stdout] 33 - const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] 33 + const DATA_LEN: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/controller.rs:205:59 [INFO] [stdout] | [INFO] [stdout] 205 | let intersection_fn = |x|{brain_position_function(x as f64) + commanded_depth as f64 - needle_pos(x as f64)}; [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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 (`f64` -> `f64`) [INFO] [stdout] --> src/controller.rs:205:107 [INFO] [stdout] | [INFO] [stdout] 205 | let intersection_fn = |x|{brain_position_function(x as f64) + commanded_depth as f64 - needle_pos(x as f64)}; [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:230:9 [INFO] [stdout] | [INFO] [stdout] 230 | return diff > MAX_PREDICTION_ERROR_NM as f64; [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] 230 - return diff > MAX_PREDICTION_ERROR_NM as f64; [INFO] [stdout] 230 + diff > MAX_PREDICTION_ERROR_NM as f64 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:245:9 [INFO] [stdout] | [INFO] [stdout] 245 | return info.current_state; [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] 245 - return info.current_state; [INFO] [stdout] 245 + info.current_state [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:260:9 [INFO] [stdout] | [INFO] [stdout] 260 | return info.consecutive_errors; [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] 260 - return info.consecutive_errors; [INFO] [stdout] 260 + info.consecutive_errors [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:265:9 [INFO] [stdout] | [INFO] [stdout] 265 | return info.pre_move_location; [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] 265 - return info.pre_move_location; [INFO] [stdout] 265 + info.pre_move_location [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:316:9 [INFO] [stdout] | [INFO] [stdout] 316 | return info.outcomes.clone(); [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] 316 - return info.outcomes.clone(); [INFO] [stdout] 316 + info.outcomes.clone() [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/controller.rs:388:9 [INFO] [stdout] | [INFO] [stdout] 388 | / match distance_result { [INFO] [stdout] 389 | | Ok(distance) => { [INFO] [stdout] 390 | | //We can only panic when OOBC or IB in the state machine [INFO] [stdout] 391 | | let can_panic = control_state.out_of_brain_calibrated() || control_state.in_brain(); [INFO] [stdout] ... | [INFO] [stdout] 416 | | Err(_) => {} [INFO] [stdout] 417 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 388 ~ if let Ok(distance) = distance_result { [INFO] [stdout] 389 + //We can only panic when OOBC or IB in the state machine [INFO] [stdout] 390 + let can_panic = control_state.out_of_brain_calibrated() || control_state.in_brain(); [INFO] [stdout] 391 + // Check for abnormal distance [INFO] [stdout] 392 + let too_close_to_brain = distance < MIN_DISTANCE_BRAIN_TO_ARM_NM/2; [INFO] [stdout] 393 + if too_close_to_brain && can_panic { [INFO] [stdout] 394 + println!("Too close to brain: {}", distance); [INFO] [stdout] 395 + transition_state(control_state.clone(), ControllerState::Panic, false); [INFO] [stdout] 396 + } [INFO] [stdout] 397 + else if can_panic && control_state.is_abnormal_distance(distance) { [INFO] [stdout] 398 + control_state.add_error(); [INFO] [stdout] 399 + if control_state.get_consecutive_errors() > MAX_CONSECUTIVE_PREDICTION_ERRORS && can_panic [INFO] [stdout] 400 + { [INFO] [stdout] 401 + println!("Too many consecutive errors"); [INFO] [stdout] 402 + assert!(!control_state.in_panic()); [INFO] [stdout] 403 + transition_state(control_state.clone(), ControllerState::Panic, false); [INFO] [stdout] 404 + } [INFO] [stdout] 405 + } else { [INFO] [stdout] 406 + //If we are not in panic, clear the error since they are non consecutive [INFO] [stdout] 407 + control_state.clear_error(); [INFO] [stdout] 408 + } [INFO] [stdout] 409 + //If we notice we can trigger a move, we trigger it [INFO] [stdout] 410 + if distance < MAX_DIST_FROM_PREMOVE_TO_MOVE { [INFO] [stdout] 411 + println!("Found premove location"); [INFO] [stdout] 412 + control_state.set_move_notification(); [INFO] [stdout] 413 + } [INFO] [stdout] 414 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/controller.rs:496:101 [INFO] [stdout] | [INFO] [stdout] 496 | pub async fn start(control_state: Arc>, commanded_depth: &Vec) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 496 - pub async fn start(control_state: Arc>, commanded_depth: &Vec) { [INFO] [stdout] 496 + pub async fn start(control_state: Arc>, commanded_depth: &[u64]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:605:5 [INFO] [stdout] | [INFO] [stdout] 605 | return InBrainOutcome::Panic; [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] 605 - return InBrainOutcome::Panic; [INFO] [stdout] 605 + InBrainOutcome::Panic [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/controller.rs:565:13 [INFO] [stdout] | [INFO] [stdout] 565 | assert!(commanded_depth >= COMMANDED_DEPTH_MIN_NM && commanded_depth <= COMMANDED_DEPTH_MAX_NM); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(COMMANDED_DEPTH_MIN_NM..=COMMANDED_DEPTH_MAX_NM).contains(&commanded_depth)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/controller.rs:648:8 [INFO] [stdout] | [INFO] [stdout] 648 | return Ok(()); [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] 648 - return Ok(()); [INFO] [stdout] 648 + Ok(()) [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/controller.rs:654:13 [INFO] [stdout] | [INFO] [stdout] 654 | / match self.move_tx.send((move_type.clone(), tx)).await{ [INFO] [stdout] 655 | | Ok(_) => return rx.await.unwrap(), [INFO] [stdout] 656 | | Err(_) => {} [INFO] [stdout] 657 | | } [INFO] [stdout] | |_____________^ help: try: `if let Ok(_) = self.move_tx.send((move_type.clone(), tx)).await { return rx.await.unwrap() }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/controller.rs:663:13 [INFO] [stdout] | [INFO] [stdout] 663 | / match self.state_tx.send(((), tx)).await{ [INFO] [stdout] 664 | | Ok(_) => return rx.await.unwrap(), [INFO] [stdout] 665 | | Err(_) => {} [INFO] [stdout] 666 | | } [INFO] [stdout] | |_____________^ help: try: `if let Ok(_) = self.state_tx.send(((), tx)).await { return rx.await.unwrap() }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/controller.rs:677:13 [INFO] [stdout] | [INFO] [stdout] 677 | / match self.distance_tx.send(((), tx)).await{ [INFO] [stdout] 678 | | Ok(_) => return rx.await.unwrap(), [INFO] [stdout] 679 | | Err(_) => {} [INFO] [stdout] 680 | | } [INFO] [stdout] | |_____________^ help: try: `if let Ok(_) = self.distance_tx.send(((), tx)).await { return rx.await.unwrap() }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/robot.rs:188:13 [INFO] [stdout] | [INFO] [stdout] 188 | return Ok(state.clone()); [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] 188 - return Ok(state.clone()); [INFO] [stdout] 188 + Ok(state.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/robot.rs:191:13 [INFO] [stdout] | [INFO] [stdout] 191 | return Ok(self.state.clone()); [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] 191 - return Ok(self.state.clone()); [INFO] [stdout] 191 + Ok(self.state.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `RobotState` which implements the `Copy` trait [INFO] [stdout] --> src/robot.rs:166:29 [INFO] [stdout] | [INFO] [stdout] 166 | let mut state = self.state.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.state` [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 `RobotState` which implements the `Copy` trait [INFO] [stdout] --> src/robot.rs:188:23 [INFO] [stdout] | [INFO] [stdout] 188 | return Ok(state.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `state` [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 `RobotState` which implements the `Copy` trait [INFO] [stdout] --> src/robot.rs:191:23 [INFO] [stdout] | [INFO] [stdout] 191 | return Ok(self.state.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.state` [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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/robot.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 273 | / match move_cmd { [INFO] [stdout] 274 | | Move::NeedleZ(z) => { [INFO] [stdout] 275 | | println!("InserterZ: {} -> {} with duration {}", start_z, z, total_move_duration.as_millis()); [INFO] [stdout] ... | [INFO] [stdout] 278 | | } [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] 273 ~ if let Move::NeedleZ(z) = move_cmd { [INFO] [stdout] 274 + println!("InserterZ: {} -> {} with duration {}", start_z, z, total_move_duration.as_millis()); [INFO] [stdout] 275 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/robot.rs:292:48 [INFO] [stdout] | [INFO] [stdout] 292 | guard.brain_distances.push(if target_z < brain_position {0} else {target_z - brain_position}); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `target_z.saturating_sub(brain_position)` [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: unneeded `return` statement [INFO] [stdout] --> src/predictor/oracle_approx.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | return Ok((distance_queue, Vec::from(time_queue))); [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] 41 - return Ok((distance_queue, Vec::from(time_queue))); [INFO] [stdout] 41 + Ok((distance_queue, Vec::from(time_queue))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/oracle_approx.rs:19:51 [INFO] [stdout] | [INFO] [stdout] 19 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(Vec, Vec], time_queue: &Vec) -> Result<(Vec, Vec), ()> { [INFO] [stdout] 20 | const data_len: usize = MIN_SIZE+1; [INFO] [stdout] ... [INFO] [stdout] 25 | } [INFO] [stdout] 26 ~ let mut distance_queue = Vec::from(distance_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/oracle_approx.rs:19:92 [INFO] [stdout] | [INFO] [stdout] 19 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(Vec, Vec>, time_queue: &[Instant]) -> Result<(Vec, Vec), ()> { [INFO] [stdout] 20 | const data_len: usize = MIN_SIZE+1; [INFO] [stdout] ... [INFO] [stdout] 27 | let Some(distance_queue) = distance_queue.last_chunk_mut::() else {return Err(()); }; [INFO] [stdout] 28 ~ let mut time_queue = Vec::from(time_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::vec::Vec>` [INFO] [stdout] --> src/predictor/oracle_approx.rs:26:34 [INFO] [stdout] | [INFO] [stdout] 26 | let mut distance_queue = Vec::from(distance_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `distance_queue.clone()` [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: `std::vec::Vec` [INFO] [stdout] --> src/predictor/oracle_approx.rs:28:30 [INFO] [stdout] | [INFO] [stdout] 28 | let mut time_queue = Vec::from(time_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `time_queue.clone()` [INFO] [stdout] | [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 boolean expression can be simplified [INFO] [stdout] --> src/predictor/oracle_approx.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | if !Self::passes_predict_assumptions(distances, times).is_ok(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Self::passes_predict_assumptions(distances, times).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: unneeded `return` statement [INFO] [stdout] --> src/predictor/oracle_approx.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | / return Some( |x: f64| { [INFO] [stdout] 51 | | let x = x + self.init_time.elapsed().as_millis() as f64; [INFO] [stdout] 52 | | 7_000_000.0 - 5332309.0 [INFO] [stdout] 53 | | + 500_000.0 * (6.0 * x as f64/1000.0).sin() [INFO] [stdout] 54 | | + 1_000_000.0 * (x as f64/1000.0).sin() [INFO] [stdout] 55 | | }); [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] 50 ~ Some( |x: f64| { [INFO] [stdout] 51 + let x = x + self.init_time.elapsed().as_millis() as f64; [INFO] [stdout] 52 + 7_000_000.0 - 5332309.0 [INFO] [stdout] 53 + + 500_000.0 * (6.0 * x as f64/1000.0).sin() [INFO] [stdout] 54 + + 1_000_000.0 * (x as f64/1000.0).sin() [INFO] [stdout] 55 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/oracle_approx.rs:53:38 [INFO] [stdout] | [INFO] [stdout] 53 | + 500_000.0 * (6.0 * x as f64/1000.0).sin() [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/oracle_approx.rs:54:34 [INFO] [stdout] | [INFO] [stdout] 54 | + 1_000_000.0 * (x as f64/1000.0).sin() [INFO] [stdout] | ^^^^^^^^ help: try: `x` [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: importing a legacy numeric constant [INFO] [stdout] --> src/predictor/quadratic_regression.rs:1:22 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{char::MAX, f32::MIN}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import and use the associated constant `f32::MIN` from the primitive type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:37:13 [INFO] [stdout] | [INFO] [stdout] 37 | return Some(vec![weights[0], weights[1], weights[2]]); [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] 37 - return Some(vec![weights[0], weights[1], weights[2]]); [INFO] [stdout] 37 + Some(vec![weights[0], weights[1], weights[2]]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:40:13 [INFO] [stdout] | [INFO] [stdout] 40 | return None; [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] 40 - return None; [INFO] [stdout] 40 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:22:32 [INFO] [stdout] | [INFO] [stdout] 22 | fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 22 - fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] 22 + fn regress(distance_queue: &[u64], time_queue: &Vec) -> Option>{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:22:55 [INFO] [stdout] | [INFO] [stdout] 22 | fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 22 - fn regress(distance_queue: &Vec, time_queue: &Vec) -> Option>{ [INFO] [stdout] 22 + fn regress(distance_queue: &Vec, time_queue: &[Instant]) -> Option>{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `time_queue` [INFO] [stdout] --> src/predictor/quadratic_regression.rs:26:18 [INFO] [stdout] | [INFO] [stdout] 26 | for i in 0..distance_queue.len(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 26 - for i in 0..distance_queue.len(){ [INFO] [stdout] 26 + for in time_queue.iter().take(distance_queue.len()){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | return Ok((latency_mean, distance_queue.to_vec(), time_queue.to_vec())); [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] 66 - return Ok((latency_mean, distance_queue.to_vec(), time_queue.to_vec())); [INFO] [stdout] 66 + Ok((latency_mean, distance_queue.to_vec(), time_queue.to_vec())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:45:51 [INFO] [stdout] | [INFO] [stdout] 45 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 - fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] 45 + fn passes_predict_assumptions(distance_queue: &[Result], time_queue: &Vec) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/quadratic_regression.rs:45:92 [INFO] [stdout] | [INFO] [stdout] 45 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, ... [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 - fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] 45 + fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &[Instant]) -> Result<(f64, Vec, Vec), ()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/quadratic_regression.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | / return Some( move |x: f64|{ [INFO] [stdout] 83 | | //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 84 | | coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 85 | | }); [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] 82 ~ Some( move |x: f64|{ [INFO] [stdout] 83 + //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 84 + coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 85 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `let...else` may be rewritten with the `?` operator [INFO] [stdout] --> src/predictor/quadratic_regression.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | / let Some(coefs) = Self::regress(&distance_queue, &time_queue) else { [INFO] [stdout] 76 | | return None; [INFO] [stdout] 77 | | }; [INFO] [stdout] | |__________^ help: replace it with: `let coefs = Self::regress(&distance_queue, &time_queue)?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/taylor_approx.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | return coefs; [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] 29 - return coefs; [INFO] [stdout] 29 + coefs [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/taylor_approx.rs:11:32 [INFO] [stdout] | [INFO] [stdout] 11 | fn _get_taylor_coefs(data: &Vec, n: u64, latency: f64) -> Vec{ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 11 - fn _get_taylor_coefs(data: &Vec, n: u64, latency: f64) -> Vec{ [INFO] [stdout] 11 + fn _get_taylor_coefs(data: &[u64], n: u64, latency: f64) -> Vec{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:15:20 [INFO] [stdout] | [INFO] [stdout] 15 | coefs.push(current[current.len() - 1] as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current[current.len() - 1]` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:24:26 [INFO] [stdout] | [INFO] [stdout] 24 | .map(|w| (w[1] - w[0]) as f64/ latency as f64) // (w[1] - w[0]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `((w[1] - w[0]))` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:24:48 [INFO] [stdout] | [INFO] [stdout] 24 | .map(|w| (w[1] - w[0]) as f64/ latency as f64) // (w[1] - w[0]) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `latency` [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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/predictor/taylor_approx.rs:26:24 [INFO] [stdout] | [INFO] [stdout] 26 | coefs.push(next[next.len() - 1] as f64 / factorial as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `next[next.len() - 1]` [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: unneeded `return` statement [INFO] [stdout] --> src/predictor/taylor_approx.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | return Ok((latency_mean, latency_std, distance_queue, Vec::from(time_queue))); [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] 63 - return Ok((latency_mean, latency_std, distance_queue, Vec::from(time_queue))); [INFO] [stdout] 63 + Ok((latency_mean, latency_std, distance_queue, Vec::from(time_queue))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/taylor_approx.rs:32:51 [INFO] [stdout] | [INFO] [stdout] 32 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, f64, Vec], time_queue: &Vec) -> Result<(f64, f64, Vec, Vec), ()> { [INFO] [stdout] 33 | const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] ... [INFO] [stdout] 38 | } [INFO] [stdout] 39 ~ let mut distance_queue = Vec::from(distance_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/taylor_approx.rs:32:92 [INFO] [stdout] | [INFO] [stdout] 32 | fn passes_predict_assumptions(distance_queue: &Vec>, time_queue: &Vec) -> Result<(f64, f64, Vec>, time_queue: &[Instant]) -> Result<(f64, f64, Vec, Vec), ()> { [INFO] [stdout] 33 | const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] ... [INFO] [stdout] 40 | let Some(distance_queue) = distance_queue.last_chunk_mut::() else {return Err(()); }; [INFO] [stdout] 41 ~ let mut time_queue = Vec::from(time_queue.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::vec::Vec>` [INFO] [stdout] --> src/predictor/taylor_approx.rs:39:34 [INFO] [stdout] | [INFO] [stdout] 39 | let mut distance_queue = Vec::from(distance_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `distance_queue.clone()` [INFO] [stdout] | [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: useless conversion to the same type: `std::vec::Vec` [INFO] [stdout] --> src/predictor/taylor_approx.rs:41:30 [INFO] [stdout] | [INFO] [stdout] 41 | let mut time_queue = Vec::from(time_queue.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Vec::from()`: `time_queue.clone()` [INFO] [stdout] | [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: unneeded `return` statement [INFO] [stdout] --> src/predictor/taylor_approx.rs:77:9 [INFO] [stdout] | [INFO] [stdout] 77 | / return Some( move |x: f64|{ [INFO] [stdout] 78 | | //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 79 | | coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 80 | | }); [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] 77 ~ Some( move |x: f64|{ [INFO] [stdout] 78 + //x += OCT_LATENCY_MS as f64; [INFO] [stdout] 79 + coefs[0] + coefs[1]*x + coefs[2]*x*x [INFO] [stdout] 80 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/mod.rs:9:34 [INFO] [stdout] | [INFO] [stdout] 9 | fn predict(&self, distances: &Vec>, times: &Vec, print_coefs: bool) -> Option f64>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Result]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/predictor/mod.rs:9:70 [INFO] [stdout] | [INFO] [stdout] 9 | fn predict(&self, distances: &Vec>, times: &Vec, print_coefs: bool) -> Option f64>; [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `&[Instant]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/predictor/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | 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] 11 - return true; [INFO] [stdout] 11 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> src/main.rs:83:9 [INFO] [stdout] | [INFO] [stdout] 83 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `data_len` should have an upper case name [INFO] [stdout] --> src/predictor/oracle_approx.rs:20:15 [INFO] [stdout] | [INFO] [stdout] 20 | const data_len: usize = MIN_SIZE+1; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] help: convert the identifier to upper case [INFO] [stdout] | [INFO] [stdout] 20 - const data_len: usize = MIN_SIZE+1; [INFO] [stdout] 20 + const DATA_LEN: usize = MIN_SIZE+1; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `data_len` should have an upper case name [INFO] [stdout] --> src/predictor/taylor_approx.rs:33:15 [INFO] [stdout] | [INFO] [stdout] 33 | const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: convert the identifier to upper case [INFO] [stdout] | [INFO] [stdout] 33 - const data_len: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] 33 + const DATA_LEN: usize = TAYLOR_POLY_ORDER as usize+1; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 29.40s [INFO] running `Command { std: "docker" "inspect" "bd58c1175eb18c4b7e41c8d88a07817b1006c8130ac8d2a7c72aaae392806ab2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bd58c1175eb18c4b7e41c8d88a07817b1006c8130ac8d2a7c72aaae392806ab2", kill_on_drop: false }` [INFO] [stdout] bd58c1175eb18c4b7e41c8d88a07817b1006c8130ac8d2a7c72aaae392806ab2