[INFO] cloning repository https://github.com/owenpmckenna/BasicLidarSLAM
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/owenpmckenna/BasicLidarSLAM" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fowenpmckenna%2FBasicLidarSLAM", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fowenpmckenna%2FBasicLidarSLAM'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 67546aecfa4d2c8cb94fa75a3fa48e4eb7aea9e1
[INFO] testing owenpmckenna/BasicLidarSLAM against master#2fd6efc32704647e64d3d646d21c4c68eae100e4 for pr-149852-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fowenpmckenna%2FBasicLidarSLAM" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/owenpmckenna/BasicLidarSLAM
[INFO] finished tweaking git repo https://github.com/owenpmckenna/BasicLidarSLAM
[INFO] tweaked toml for git repo https://github.com/owenpmckenna/BasicLidarSLAM written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/owenpmckenna/BasicLidarSLAM on toolchain 2fd6efc32704647e64d3d646d21c4c68eae100e4
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/owenpmckenna/BasicLidarSLAM 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" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Updating git repository `https://github.com/ysimonson/roboclaw-rs.git`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded numtoa v0.2.4
[INFO] [stderr]   Downloaded mpu6050 v0.1.6
[INFO] [stderr]   Downloaded rplidar_drv_rs v0.7.0
[INFO] [stderr]   Downloaded axum-extra v0.10.3
[INFO] [stderr]   Downloaded dwrote v0.11.4
[INFO] [stderr]   Downloaded rppal v0.22.1
[INFO] [stderr]   Downloaded serial2 v0.2.33
[INFO] [stderr]   Downloaded termion v4.0.5
[INFO] [stderr]   Downloaded nalgebra v0.31.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 7d19741c32bd3facda8d7812eb410a127280638a176a8e4c3cc8634840b76048
[INFO] running `Command { std: "docker" "start" "-a" "7d19741c32bd3facda8d7812eb410a127280638a176a8e4c3cc8634840b76048", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7d19741c32bd3facda8d7812eb410a127280638a176a8e4c3cc8634840b76048", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7d19741c32bd3facda8d7812eb410a127280638a176a8e4c3cc8634840b76048", kill_on_drop: false }`
[INFO] [stdout] 7d19741c32bd3facda8d7812eb410a127280638a176a8e4c3cc8634840b76048
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7a377c5fefbe880098c277e7b1acec045a15d5991d8fa9155317a92dd8015d3d
[INFO] running `Command { std: "docker" "start" "-a" "7a377c5fefbe880098c277e7b1acec045a15d5991d8fa9155317a92dd8015d3d", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]    Compiling unicode-ident v1.0.19
[INFO] [stderr]    Compiling generic-array v0.14.9
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling freetype-sys v0.20.1
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling libudev-sys v0.1.4
[INFO] [stderr]    Compiling yeslogic-fontconfig-sys v6.0.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling object v0.36.7
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling libloading v0.8.8
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling gimli v0.31.1
[INFO] [stderr]    Compiling data-encoding v2.9.0
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling build_const v0.2.2
[INFO] [stderr]    Compiling dlib v0.5.2
[INFO] [stderr]    Compiling approx v0.5.1
[INFO] [stderr]    Compiling flate2 v1.1.2
[INFO] [stderr]    Compiling crc v1.8.1
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling jpeg-decoder v0.3.2
[INFO] [stderr]    Compiling font-kit v0.14.3
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling pathfinder_simd v0.5.5
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling weezl v0.1.10
[INFO] [stderr]    Compiling nb v1.1.0
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling bytemuck v1.23.2
[INFO] [stderr]    Compiling rustc-demangle v0.1.26
[INFO] [stderr]    Compiling crc16 v0.4.0
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]    Compiling png v0.17.16
[INFO] [stderr]    Compiling gif v0.12.0
[INFO] [stderr]    Compiling simba v0.7.3
[INFO] [stderr]    Compiling nb v0.1.3
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling pathfinder_geometry v0.5.1
[INFO] [stderr]    Compiling axum-core v0.5.5
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling headers-core v0.3.0
[INFO] [stderr]    Compiling matchit v0.8.4
[INFO] [stderr]    Compiling float-ord v0.3.2
[INFO] [stderr]    Compiling embedded-hal v0.2.7
[INFO] [stderr]    Compiling headers v0.4.1
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling mio v1.1.0
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling image v0.24.9
[INFO] [stderr]    Compiling libudev v0.3.0
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling nix v0.26.4
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling synstructure v0.12.6
[INFO] [stderr]    Compiling addr2line v0.24.2
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling numtoa v0.2.4
[INFO] [stderr]    Compiling ttf-parser v0.20.0
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling termion v4.0.5
[INFO] [stderr]    Compiling serial2 v0.2.33
[INFO] [stderr]    Compiling rppal v0.22.1
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling failure_derive v0.1.8
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling tower-http v0.6.6
[INFO] [stderr]    Compiling env_logger v0.10.2
[INFO] [stderr]    Compiling backtrace v0.3.75
[INFO] [stderr]    Compiling plotters-bitmap v0.3.7
[INFO] [stderr]    Compiling failure v0.1.8
[INFO] [stderr]    Compiling thiserror-impl v2.0.16
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling rplidar_drv_rs v0.7.0
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling nalgebra v0.31.4
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling thiserror v2.0.16
[INFO] [stderr]    Compiling tungstenite v0.28.0
[INFO] [stderr]    Compiling unescaper v0.1.6
[INFO] [stderr]    Compiling serialport v4.8.1
[INFO] [stderr]    Compiling roboclaw v0.1.0 (https://github.com/ysimonson/roboclaw-rs.git?branch=serialport#094159b6)
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling hyper v1.7.0
[INFO] [stderr]    Compiling tokio-tungstenite v0.28.0
[INFO] [stderr]    Compiling tower v0.5.2
[INFO] [stderr]    Compiling hyper-util v0.1.17
[INFO] [stderr]    Compiling axum v0.8.6
[INFO] [stderr]    Compiling mpu6050 v0.1.6
[INFO] [stderr]    Compiling axum-extra v0.10.3
[INFO] [stderr]    Compiling BasicLidarSLAM v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Utf8Bytes`
[INFO] [stdout]  --> src/Webserver.rs:4:34
[INFO] [stdout]   |
[INFO] [stdout] 4 | use axum::extract::ws::{Message, Utf8Bytes, WebSocket};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Error` and `Form`
[INFO] [stdout]  --> src/Webserver.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use axum::{Error, Form, Json, Router};
[INFO] [stdout]   |            ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get`
[INFO] [stdout]  --> src/Webserver.rs:9:26
[INFO] [stdout]   |
[INFO] [stdout] 9 | use axum::routing::{any, get, post};
[INFO] [stdout]   |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Sender` and `unbounded`
[INFO] [stdout]   --> src/Webserver.rs:11:25
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crossbeam_channel::{unbounded, Receiver, Sender};
[INFO] [stdout]    |                         ^^^^^^^^^            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::min`
[INFO] [stdout]  --> src/LidarLocalizer.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cmp::min;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::max`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::cmp::max;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/main.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write`, `stdin`, and `stdout`
[INFO] [stdout]   --> src/main.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::io::{stdin, stdout, Write};
[INFO] [stdout]    |               ^^^^^  ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `UnixListener` and `UnixStream`
[INFO] [stdout]   --> src/main.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::os::unix::net::{UnixListener, UnixStream};
[INFO] [stdout]    |                          ^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::exit`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::process::exit;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Thread` and `sleep`
[INFO] [stdout]   --> src/main.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::thread::{sleep, Thread};
[INFO] [stdout]    |                   ^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IntoDrawingArea`
[INFO] [stdout]   --> src/main.rs:20:38
[INFO] [stdout]    |
[INFO] [stdout] 20 | use plotters::drawing::{DrawingArea, IntoDrawingArea};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `roboclaw::Roboclaw`
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use roboclaw::Roboclaw;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Channel`, `RplidarHostProtocol`, `RposError`, and `ScanOptions`
[INFO] [stdout]   --> src/main.rs:24:19
[INFO] [stdout]    |
[INFO] [stdout] 24 | use rplidar_drv::{Channel, RplidarHostProtocol, RposError, ScanOptions};
[INFO] [stdout]    |                   ^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rppal::gpio::Gpio`
[INFO] [stdout]   --> src/main.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use rppal::gpio::Gpio;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DataBits`, `FlowControl`, `Parity`, and `StopBits`
[INFO] [stdout]   --> src/main.rs:26:18
[INFO] [stdout]    |
[INFO] [stdout] 26 | use serialport::{DataBits, FlowControl, Parity, StopBits};
[INFO] [stdout]    |                  ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `termion::event::Key`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use termion::event::Key;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `termion::input::TermRead`
[INFO] [stdout]   --> src/main.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use termion::input::TermRead;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IntoRawMode` and `RawTerminal`
[INFO] [stdout]   --> src/main.rs:29:20
[INFO] [stdout]    |
[INFO] [stdout] 29 | use termion::raw::{IntoRawMode, RawTerminal};
[INFO] [stdout]    |                    ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Line`
[INFO] [stdout]   --> src/main.rs:32:52
[INFO] [stdout]    |
[INFO] [stdout] 32 | use crate::LidarLocalizer::{InstantLidarLocalizer, Line};
[INFO] [stdout]    |                                                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/Webserver.rs:81:45
[INFO] [stdout]    |
[INFO] [stdout] 81 |     async fn handle_socket(state: AppState, mut ws: WebSocket) {
[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/Webserver.rs:82:14
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let (mut sender, mut reciever) = ws.split();
[INFO] [stdout]    |              ----^^^^^^
[INFO] [stdout]    |              |
[INFO] [stdout]    |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/Webserver.rs:82:26
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let (mut sender, mut reciever) = ws.split();
[INFO] [stdout]    |                          ----^^^^^^^^
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/Drivetrain.rs:22:13
[INFO] [stdout]    |
[INFO] [stdout] 22 |         let mut rc = Roboclaw::new(serial_port);
[INFO] [stdout]    |             ----^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/Drivetrain.rs:30:13
[INFO] [stdout]    |
[INFO] [stdout] 30 |         let mut rc_2 = Roboclaw::new(serial_port_2);
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `it2`
[INFO] [stdout]    --> src/LidarLocalizer.rs:108:27
[INFO] [stdout]     |
[INFO] [stdout] 108 |                 Some((i2, it2)) => { Some((i, i2)) }
[INFO] [stdout]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_it2`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `present` is never used
[INFO] [stdout]    --> src/main.rs:150:4
[INFO] [stdout]     |
[INFO] [stdout] 150 | fn present(root: &DrawingArea<BitMapBackend, Shift>, data: &[(f32, f32); Lidar::DATA_LEN]) {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `polar_to_cartesian_radians` is never used
[INFO] [stdout]  --> src/Lidar.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn polar_to_cartesian_radians(radius: f32, theta_radians: f32) -> (f32, f32) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `data` and `data_index` are never read
[INFO] [stdout]   --> src/Lidar.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct LidarUnit {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 15 |     lidar_dev: Option<RplidarDevice<dyn SerialPort>>,
[INFO] [stdout] 16 |     data: [(f32, f32); DATA_LEN],
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 17 |     data_index: usize,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_data`, `grab_single_point`, `read_single_point`, and `read_points` are never used
[INFO] [stdout]    --> src/Lidar.rs:22:19
[INFO] [stdout]     |
[INFO] [stdout]  21 | impl LidarUnit {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout]  22 |     pub(crate) fn get_data(&self) -> &[(f32, f32); DATA_LEN] {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     fn grab_single_point(&mut self) -> Result<(f32, f32), ()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub(crate) fn read_single_point(&mut self) -> Result<(), ()> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub(crate) fn read_points(&mut self) -> Result<(), ()> {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `angle_comp_deg` is never used
[INFO] [stdout]  --> src/LidarLocalizer.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn angle_comp_deg(a: f32, b: f32) -> f32 {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pos`, `heading`, `vel`, and `ang_vel` are never read
[INFO] [stdout]   --> src/LidarLocalizer.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct LidarLocalizer {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 18 |     pub pos: (f32, f32),
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 19 |     pub heading: f32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 20 |     pub vel: (f32, f32),
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 21 |     pub ang_vel: f32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `avg_point_dist_from_center` is never used
[INFO] [stdout]    --> src/LidarLocalizer.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl InstantLine {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 138 |     fn avg_point_dist_from_center(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `altered_point_list` is never read
[INFO] [stdout]    --> src/LidarLocalizer.rs:207:5
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub struct InstantLidarLocalizer {
[INFO] [stdout]     |            --------------------- field in this struct
[INFO] [stdout] 207 |     altered_point_list: Vec<(f32, f32)>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `Lidar` should have a snake case name
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | mod Lidar;
[INFO] [stdout]   |     ^^^^^ help: convert the identifier to snake case: `lidar`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `Drivetrain` should have a snake case name
[INFO] [stdout]  --> src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | mod Drivetrain;
[INFO] [stdout]   |     ^^^^^^^^^^ help: convert the identifier to snake case: `drivetrain`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `Webserver` should have a snake case name
[INFO] [stdout]  --> src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | mod Webserver;
[INFO] [stdout]   |     ^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `webserver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `LidarLocalizer` should have a snake case name
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | mod LidarLocalizer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `lidar_localizer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/Lidar.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |         dev.grab_scan_point();//Ignore result
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 43 |         let _ = dev.grab_scan_point();//Ignore result
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 01s
[INFO] running `Command { std: "docker" "inspect" "7a377c5fefbe880098c277e7b1acec045a15d5991d8fa9155317a92dd8015d3d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7a377c5fefbe880098c277e7b1acec045a15d5991d8fa9155317a92dd8015d3d", kill_on_drop: false }`
[INFO] [stdout] 7a377c5fefbe880098c277e7b1acec045a15d5991d8fa9155317a92dd8015d3d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 71898c8cf4be3e53847aaa67d2912f207a7415b2bb3e21a98ea04fa898fa689d
[INFO] running `Command { std: "docker" "start" "-a" "71898c8cf4be3e53847aaa67d2912f207a7415b2bb3e21a98ea04fa898fa689d", kill_on_drop: false }`
[INFO] [stderr]    Compiling BasicLidarSLAM v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Utf8Bytes`
[INFO] [stdout]  --> src/Webserver.rs:4:34
[INFO] [stdout]   |
[INFO] [stdout] 4 | use axum::extract::ws::{Message, Utf8Bytes, WebSocket};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Error` and `Form`
[INFO] [stdout]  --> src/Webserver.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use axum::{Error, Form, Json, Router};
[INFO] [stdout]   |            ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get`
[INFO] [stdout]  --> src/Webserver.rs:9:26
[INFO] [stdout]   |
[INFO] [stdout] 9 | use axum::routing::{any, get, post};
[INFO] [stdout]   |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Sender` and `unbounded`
[INFO] [stdout]   --> src/Webserver.rs:11:25
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crossbeam_channel::{unbounded, Receiver, Sender};
[INFO] [stdout]    |                         ^^^^^^^^^            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::min`
[INFO] [stdout]  --> src/LidarLocalizer.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cmp::min;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::max`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::cmp::max;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/main.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write`, `stdin`, and `stdout`
[INFO] [stdout]   --> src/main.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::io::{stdin, stdout, Write};
[INFO] [stdout]    |               ^^^^^  ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `UnixListener` and `UnixStream`
[INFO] [stdout]   --> src/main.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::os::unix::net::{UnixListener, UnixStream};
[INFO] [stdout]    |                          ^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::exit`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::process::exit;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Thread` and `sleep`
[INFO] [stdout]   --> src/main.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::thread::{sleep, Thread};
[INFO] [stdout]    |                   ^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IntoDrawingArea`
[INFO] [stdout]   --> src/main.rs:20:38
[INFO] [stdout]    |
[INFO] [stdout] 20 | use plotters::drawing::{DrawingArea, IntoDrawingArea};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `roboclaw::Roboclaw`
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use roboclaw::Roboclaw;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Channel`, `RplidarHostProtocol`, `RposError`, and `ScanOptions`
[INFO] [stdout]   --> src/main.rs:24:19
[INFO] [stdout]    |
[INFO] [stdout] 24 | use rplidar_drv::{Channel, RplidarHostProtocol, RposError, ScanOptions};
[INFO] [stdout]    |                   ^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rppal::gpio::Gpio`
[INFO] [stdout]   --> src/main.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use rppal::gpio::Gpio;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DataBits`, `FlowControl`, `Parity`, and `StopBits`
[INFO] [stdout]   --> src/main.rs:26:18
[INFO] [stdout]    |
[INFO] [stdout] 26 | use serialport::{DataBits, FlowControl, Parity, StopBits};
[INFO] [stdout]    |                  ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `termion::event::Key`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use termion::event::Key;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `termion::input::TermRead`
[INFO] [stdout]   --> src/main.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use termion::input::TermRead;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IntoRawMode` and `RawTerminal`
[INFO] [stdout]   --> src/main.rs:29:20
[INFO] [stdout]    |
[INFO] [stdout] 29 | use termion::raw::{IntoRawMode, RawTerminal};
[INFO] [stdout]    |                    ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Line`
[INFO] [stdout]   --> src/main.rs:32:52
[INFO] [stdout]    |
[INFO] [stdout] 32 | use crate::LidarLocalizer::{InstantLidarLocalizer, Line};
[INFO] [stdout]    |                                                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/Webserver.rs:81:45
[INFO] [stdout]    |
[INFO] [stdout] 81 |     async fn handle_socket(state: AppState, mut ws: WebSocket) {
[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/Webserver.rs:82:14
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let (mut sender, mut reciever) = ws.split();
[INFO] [stdout]    |              ----^^^^^^
[INFO] [stdout]    |              |
[INFO] [stdout]    |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/Webserver.rs:82:26
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let (mut sender, mut reciever) = ws.split();
[INFO] [stdout]    |                          ----^^^^^^^^
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/Drivetrain.rs:22:13
[INFO] [stdout]    |
[INFO] [stdout] 22 |         let mut rc = Roboclaw::new(serial_port);
[INFO] [stdout]    |             ----^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/Drivetrain.rs:30:13
[INFO] [stdout]    |
[INFO] [stdout] 30 |         let mut rc_2 = Roboclaw::new(serial_port_2);
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `it2`
[INFO] [stdout]    --> src/LidarLocalizer.rs:108:27
[INFO] [stdout]     |
[INFO] [stdout] 108 |                 Some((i2, it2)) => { Some((i, i2)) }
[INFO] [stdout]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_it2`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `present` is never used
[INFO] [stdout]    --> src/main.rs:150:4
[INFO] [stdout]     |
[INFO] [stdout] 150 | fn present(root: &DrawingArea<BitMapBackend, Shift>, data: &[(f32, f32); Lidar::DATA_LEN]) {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `polar_to_cartesian_radians` is never used
[INFO] [stdout]  --> src/Lidar.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn polar_to_cartesian_radians(radius: f32, theta_radians: f32) -> (f32, f32) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `data` and `data_index` are never read
[INFO] [stdout]   --> src/Lidar.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct LidarUnit {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 15 |     lidar_dev: Option<RplidarDevice<dyn SerialPort>>,
[INFO] [stdout] 16 |     data: [(f32, f32); DATA_LEN],
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 17 |     data_index: usize,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_data`, `grab_single_point`, `read_single_point`, and `read_points` are never used
[INFO] [stdout]    --> src/Lidar.rs:22:19
[INFO] [stdout]     |
[INFO] [stdout]  21 | impl LidarUnit {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout]  22 |     pub(crate) fn get_data(&self) -> &[(f32, f32); DATA_LEN] {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     fn grab_single_point(&mut self) -> Result<(f32, f32), ()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub(crate) fn read_single_point(&mut self) -> Result<(), ()> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub(crate) fn read_points(&mut self) -> Result<(), ()> {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `angle_comp_deg` is never used
[INFO] [stdout]  --> src/LidarLocalizer.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn angle_comp_deg(a: f32, b: f32) -> f32 {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pos`, `heading`, `vel`, and `ang_vel` are never read
[INFO] [stdout]   --> src/LidarLocalizer.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct LidarLocalizer {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 18 |     pub pos: (f32, f32),
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 19 |     pub heading: f32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 20 |     pub vel: (f32, f32),
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 21 |     pub ang_vel: f32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `avg_point_dist_from_center` is never used
[INFO] [stdout]    --> src/LidarLocalizer.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl InstantLine {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 138 |     fn avg_point_dist_from_center(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `altered_point_list` is never read
[INFO] [stdout]    --> src/LidarLocalizer.rs:207:5
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub struct InstantLidarLocalizer {
[INFO] [stdout]     |            --------------------- field in this struct
[INFO] [stdout] 207 |     altered_point_list: Vec<(f32, f32)>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `Lidar` should have a snake case name
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | mod Lidar;
[INFO] [stdout]   |     ^^^^^ help: convert the identifier to snake case: `lidar`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `Drivetrain` should have a snake case name
[INFO] [stdout]  --> src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | mod Drivetrain;
[INFO] [stdout]   |     ^^^^^^^^^^ help: convert the identifier to snake case: `drivetrain`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `Webserver` should have a snake case name
[INFO] [stdout]  --> src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | mod Webserver;
[INFO] [stdout]   |     ^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `webserver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `LidarLocalizer` should have a snake case name
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | mod LidarLocalizer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `lidar_localizer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/Lidar.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |         dev.grab_scan_point();//Ignore result
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 43 |         let _ = dev.grab_scan_point();//Ignore result
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.15s
[INFO] running `Command { std: "docker" "inspect" "71898c8cf4be3e53847aaa67d2912f207a7415b2bb3e21a98ea04fa898fa689d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "71898c8cf4be3e53847aaa67d2912f207a7415b2bb3e21a98ea04fa898fa689d", kill_on_drop: false }`
[INFO] [stdout] 71898c8cf4be3e53847aaa67d2912f207a7415b2bb3e21a98ea04fa898fa689d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] f125ba472138da5dd087cf18a324b09193046df48ba94cf58d0aebf030e27425
[INFO] running `Command { std: "docker" "start" "-a" "f125ba472138da5dd087cf18a324b09193046df48ba94cf58d0aebf030e27425", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `Utf8Bytes`
[INFO] [stderr]  --> src/Webserver.rs:4:34
[INFO] [stderr]   |
[INFO] [stderr] 4 | use axum::extract::ws::{Message, Utf8Bytes, WebSocket};
[INFO] [stderr]   |                                  ^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Error` and `Form`
[INFO] [stderr]  --> src/Webserver.rs:6:12
[INFO] [stderr]   |
[INFO] [stderr] 6 | use axum::{Error, Form, Json, Router};
[INFO] [stderr]   |            ^^^^^  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `get`
[INFO] [stderr]  --> src/Webserver.rs:9:26
[INFO] [stderr]   |
[INFO] [stderr] 9 | use axum::routing::{any, get, post};
[INFO] [stderr]   |                          ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Sender` and `unbounded`
[INFO] [stderr]   --> src/Webserver.rs:11:25
[INFO] [stderr]    |
[INFO] [stderr] 11 | use crossbeam_channel::{unbounded, Receiver, Sender};
[INFO] [stderr]    |                         ^^^^^^^^^            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::cmp::min`
[INFO] [stderr]  --> src/LidarLocalizer.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::cmp::min;
[INFO] [stderr]   |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::cmp::max`
[INFO] [stderr]  --> src/main.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use std::cmp::max;
[INFO] [stderr]   |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::error::Error`
[INFO] [stderr]  --> src/main.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::error::Error;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Write`, `stdin`, and `stdout`
[INFO] [stderr]   --> src/main.rs:10:15
[INFO] [stderr]    |
[INFO] [stderr] 10 | use std::io::{stdin, stdout, Write};
[INFO] [stderr]    |               ^^^^^  ^^^^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `UnixListener` and `UnixStream`
[INFO] [stderr]   --> src/main.rs:11:26
[INFO] [stderr]    |
[INFO] [stderr] 11 | use std::os::unix::net::{UnixListener, UnixStream};
[INFO] [stderr]    |                          ^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::process::exit`
[INFO] [stderr]   --> src/main.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use std::process::exit;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Thread` and `sleep`
[INFO] [stderr]   --> src/main.rs:14:19
[INFO] [stderr]    |
[INFO] [stderr] 14 | use std::thread::{sleep, Thread};
[INFO] [stderr]    |                   ^^^^^  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::Duration`
[INFO] [stderr]   --> src/main.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | use std::time::Duration;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `IntoDrawingArea`
[INFO] [stderr]   --> src/main.rs:20:38
[INFO] [stderr]    |
[INFO] [stderr] 20 | use plotters::drawing::{DrawingArea, IntoDrawingArea};
[INFO] [stderr]    |                                      ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `roboclaw::Roboclaw`
[INFO] [stderr]   --> src/main.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 23 | use roboclaw::Roboclaw;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Channel`, `RplidarHostProtocol`, `RposError`, and `ScanOptions`
[INFO] [stderr]   --> src/main.rs:24:19
[INFO] [stderr]    |
[INFO] [stderr] 24 | use rplidar_drv::{Channel, RplidarHostProtocol, RposError, ScanOptions};
[INFO] [stderr]    |                   ^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `rppal::gpio::Gpio`
[INFO] [stderr]   --> src/main.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | use rppal::gpio::Gpio;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `DataBits`, `FlowControl`, `Parity`, and `StopBits`
[INFO] [stderr]   --> src/main.rs:26:18
[INFO] [stderr]    |
[INFO] [stderr] 26 | use serialport::{DataBits, FlowControl, Parity, StopBits};
[INFO] [stderr]    |                  ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `termion::event::Key`
[INFO] [stderr]   --> src/main.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr] 27 | use termion::event::Key;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `termion::input::TermRead`
[INFO] [stderr]   --> src/main.rs:28:5
[INFO] [stderr]    |
[INFO] [stderr] 28 | use termion::input::TermRead;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `IntoRawMode` and `RawTerminal`
[INFO] [stderr]   --> src/main.rs:29:20
[INFO] [stderr]    |
[INFO] [stderr] 29 | use termion::raw::{IntoRawMode, RawTerminal};
[INFO] [stderr]    |                    ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Line`
[INFO] [stderr]   --> src/main.rs:32:52
[INFO] [stderr]    |
[INFO] [stderr] 32 | use crate::LidarLocalizer::{InstantLidarLocalizer, Line};
[INFO] [stderr]    |                                                    ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/Webserver.rs:81:45
[INFO] [stderr]    |
[INFO] [stderr] 81 |     async fn handle_socket(state: AppState, mut ws: WebSocket) {
[INFO] [stderr]    |                                             ----^^
[INFO] [stderr]    |                                             |
[INFO] [stderr]    |                                             help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/Webserver.rs:82:14
[INFO] [stderr]    |
[INFO] [stderr] 82 |         let (mut sender, mut reciever) = ws.split();
[INFO] [stderr]    |              ----^^^^^^
[INFO] [stderr]    |              |
[INFO] [stderr]    |              help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/Webserver.rs:82:26
[INFO] [stderr]    |
[INFO] [stderr] 82 |         let (mut sender, mut reciever) = ws.split();
[INFO] [stderr]    |                          ----^^^^^^^^
[INFO] [stderr]    |                          |
[INFO] [stderr]    |                          help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/Drivetrain.rs:22:13
[INFO] [stderr]    |
[INFO] [stderr] 22 |         let mut rc = Roboclaw::new(serial_port);
[INFO] [stderr]    |             ----^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/Drivetrain.rs:30:13
[INFO] [stderr]    |
[INFO] [stderr] 30 |         let mut rc_2 = Roboclaw::new(serial_port_2);
[INFO] [stderr]    |             ----^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `it2`
[INFO] [stderr]    --> src/LidarLocalizer.rs:108:27
[INFO] [stderr]     |
[INFO] [stderr] 108 |                 Some((i2, it2)) => { Some((i, i2)) }
[INFO] [stderr]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_it2`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `present` is never used
[INFO] [stderr]    --> src/main.rs:150:4
[INFO] [stderr]     |
[INFO] [stderr] 150 | fn present(root: &DrawingArea<BitMapBackend, Shift>, data: &[(f32, f32); Lidar::DATA_LEN]) {
[INFO] [stderr]     |    ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `polar_to_cartesian_radians` is never used
[INFO] [stderr]  --> src/Lidar.rs:9:4
[INFO] [stderr]   |
[INFO] [stderr] 9 | fn polar_to_cartesian_radians(radius: f32, theta_radians: f32) -> (f32, f32) {
[INFO] [stderr]   |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `data` and `data_index` are never read
[INFO] [stderr]   --> src/Lidar.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub struct LidarUnit {
[INFO] [stderr]    |            --------- fields in this struct
[INFO] [stderr] 15 |     lidar_dev: Option<RplidarDevice<dyn SerialPort>>,
[INFO] [stderr] 16 |     data: [(f32, f32); DATA_LEN],
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 17 |     data_index: usize,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_data`, `grab_single_point`, `read_single_point`, and `read_points` are never used
[INFO] [stderr]    --> src/Lidar.rs:22:19
[INFO] [stderr]     |
[INFO] [stderr]  21 | impl LidarUnit {
[INFO] [stderr]     | -------------- methods in this implementation
[INFO] [stderr]  22 |     pub(crate) fn get_data(&self) -> &[(f32, f32); DATA_LEN] {
[INFO] [stderr]     |                   ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  71 |     fn grab_single_point(&mut self) -> Result<(f32, f32), ()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  99 |     pub(crate) fn read_single_point(&mut self) -> Result<(), ()> {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 140 |     pub(crate) fn read_points(&mut self) -> Result<(), ()> {
[INFO] [stderr]     |                   ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `angle_comp_deg` is never used
[INFO] [stderr]  --> src/LidarLocalizer.rs:9:4
[INFO] [stderr]   |
[INFO] [stderr] 9 | fn angle_comp_deg(a: f32, b: f32) -> f32 {
[INFO] [stderr]   |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `pos`, `heading`, `vel`, and `ang_vel` are never read
[INFO] [stderr]   --> src/LidarLocalizer.rs:18:9
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub struct LidarLocalizer {
[INFO] [stderr]    |            -------------- fields in this struct
[INFO] [stderr] 18 |     pub pos: (f32, f32),
[INFO] [stderr]    |         ^^^
[INFO] [stderr] 19 |     pub heading: f32,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr] 20 |     pub vel: (f32, f32),
[INFO] [stderr]    |         ^^^
[INFO] [stderr] 21 |     pub ang_vel: f32,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `avg_point_dist_from_center` is never used
[INFO] [stderr]    --> src/LidarLocalizer.rs:138:8
[INFO] [stderr]     |
[INFO] [stderr] 117 | impl InstantLine {
[INFO] [stderr]     | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 138 |     fn avg_point_dist_from_center(&self) -> f32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `altered_point_list` is never read
[INFO] [stderr]    --> src/LidarLocalizer.rs:207:5
[INFO] [stderr]     |
[INFO] [stderr] 206 | pub struct InstantLidarLocalizer {
[INFO] [stderr]     |            --------------------- field in this struct
[INFO] [stderr] 207 |     altered_point_list: Vec<(f32, f32)>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: module `Lidar` should have a snake case name
[INFO] [stderr]  --> src/main.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | mod Lidar;
[INFO] [stderr]   |     ^^^^^ help: convert the identifier to snake case: `lidar`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: module `Drivetrain` should have a snake case name
[INFO] [stderr]  --> src/main.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | mod Drivetrain;
[INFO] [stderr]   |     ^^^^^^^^^^ help: convert the identifier to snake case: `drivetrain`
[INFO] [stderr] 
[INFO] [stderr] warning: module `Webserver` should have a snake case name
[INFO] [stderr]  --> src/main.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | mod Webserver;
[INFO] [stderr]   |     ^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `webserver`
[INFO] [stderr] 
[INFO] [stderr] warning: module `LidarLocalizer` should have a snake case name
[INFO] [stderr]  --> src/main.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | mod LidarLocalizer;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `lidar_localizer`
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/Lidar.rs:43:9
[INFO] [stderr]    |
[INFO] [stderr] 43 |         dev.grab_scan_point();//Ignore result
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 43 |         let _ = dev.grab_scan_point();//Ignore result
[INFO] [stderr]    |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `BasicLidarSLAM` (bin "BasicLidarSLAM" test) generated 40 warnings (run `cargo fix --bin "BasicLidarSLAM" -p BasicLidarSLAM --tests` to apply 27 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/BasicLidarSLAM-5a4d44960a2d7094)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "f125ba472138da5dd087cf18a324b09193046df48ba94cf58d0aebf030e27425", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f125ba472138da5dd087cf18a324b09193046df48ba94cf58d0aebf030e27425", kill_on_drop: false }`
[INFO] [stdout] f125ba472138da5dd087cf18a324b09193046df48ba94cf58d0aebf030e27425
