[INFO] cloning repository https://github.com/paubt/senter
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/paubt/senter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpaubt%2Fsenter", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpaubt%2Fsenter'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 994fc6a309eaeb52401d7ad5496ea6d32ecf27e9
[INFO] checking paubt/senter against a5689b034ad287112f709693384a37f1377eb9cc for pr-129249-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpaubt%2Fsenter" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/paubt/senter
[INFO] finished tweaking git repo https://github.com/paubt/senter
[INFO] tweaked toml for git repo https://github.com/paubt/senter written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/paubt/senter on toolchain a5689b034ad287112f709693384a37f1377eb9cc
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/paubt/senter 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" "+a5689b034ad287112f709693384a37f1377eb9cc" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d0d051fac66069b8b358e8ee08cbc06b9e4c7b92544ac5b0fe6f838eafad112a
[INFO] running `Command { std: "docker" "start" "d0d051fac66069b8b358e8ee08cbc06b9e4c7b92544ac5b0fe6f838eafad112a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d0d051fac66069b8b358e8ee08cbc06b9e4c7b92544ac5b0fe6f838eafad112a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d0d051fac66069b8b358e8ee08cbc06b9e4c7b92544ac5b0fe6f838eafad112a" "/opt/rustwide/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d0d051fac66069b8b358e8ee08cbc06b9e4c7b92544ac5b0fe6f838eafad112a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d0d051fac66069b8b358e8ee08cbc06b9e4c7b92544ac5b0fe6f838eafad112a" "/opt/rustwide/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.93
[INFO] [stderr]    Compiling libc v0.2.169
[INFO] [stderr]    Compiling unicode-ident v1.0.16
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rustversion v1.0.19
[INFO] [stderr]     Checking smallvec v1.14.0
[INFO] [stderr]     Checking log v0.4.25
[INFO] [stderr]    Compiling matrixmultiply v0.3.9
[INFO] [stderr]     Checking bitflags v2.8.0
[INFO] [stderr]     Checking foldhash v0.1.4
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]     Checking hashbrown v0.15.2
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking rustix v0.38.44
[INFO] [stderr]     Checking wide v0.7.32
[INFO] [stderr]    Compiling quote v1.0.38
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]     Checking mio v1.0.3
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling syn v2.0.98
[INFO] [stderr]     Checking signal-hook v0.3.17
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking castaway v0.2.3
[INFO] [stderr]     Checking signal-hook-mio v0.2.4
[INFO] [stderr]    Compiling indoc v2.0.5
[INFO] [stderr]     Checking itoa v1.0.14
[INFO] [stderr]     Checking ryu v1.0.19
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]     Checking compact_str v0.8.1
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]     Checking simba v0.9.0
[INFO] [stderr]     Checking rppal v0.17.1
[INFO] [stderr]     Checking rppal v0.22.1
[INFO] [stderr]     Checking unicode-truncate v1.1.0
[INFO] [stderr]     Checking hc-sr04 v0.1.2
[INFO] [stderr]    Compiling darling_core v0.20.10
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling nalgebra-macros v0.2.2
[INFO] [stderr]     Checking nalgebra v0.33.2
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]    Compiling darling_macro v0.20.10
[INFO] [stderr]    Compiling darling v0.20.10
[INFO] [stderr]    Compiling instability v0.3.7
[INFO] [stderr]     Checking ratatui v0.29.0
[INFO] [stderr]     Checking senter v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Unit`
[INFO] [stdout]   --> src/robo.rs:33:27
[INFO] [stdout]    |
[INFO] [stdout] 33 |     use hc_sr04::{HcSr04, Unit};
[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 import: `std::char::MAX`
[INFO] [stdout]  --> src/app.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::char::MAX;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Unit`
[INFO] [stdout]   --> src/robo.rs:33:27
[INFO] [stdout]    |
[INFO] [stdout] 33 |     use hc_sr04::{HcSr04, Unit};
[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 import: `std::char::MAX`
[INFO] [stdout]  --> src/app.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::char::MAX;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stdout]   --> src/app.rs:90:29
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 .fold((f64::MAX, f64::MAX, f64::MIN, f64::MIN), |mut acc, v| {
[INFO] [stdout]    |                             ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stdout]   --> src/app.rs:90:39
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 .fold((f64::MAX, f64::MAX, f64::MIN, f64::MIN), |mut acc, v| {
[INFO] [stdout]    |                                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN`: replaced by the `MIN` associated constant on `f64`
[INFO] [stdout]   --> src/app.rs:90:49
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 .fold((f64::MAX, f64::MAX, f64::MIN, f64::MIN), |mut acc, v| {
[INFO] [stdout]    |                                                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN`: replaced by the `MIN` associated constant on `f64`
[INFO] [stdout]   --> src/app.rs:90:59
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 .fold((f64::MAX, f64::MAX, f64::MIN, f64::MIN), |mut acc, v| {
[INFO] [stdout]    |                                                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stdout]   --> src/app.rs:90:29
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 .fold((f64::MAX, f64::MAX, f64::MIN, f64::MIN), |mut acc, v| {
[INFO] [stdout]    |                             ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stdout]   --> src/app.rs:90:39
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 .fold((f64::MAX, f64::MAX, f64::MIN, f64::MIN), |mut acc, v| {
[INFO] [stdout]    |                                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN`: replaced by the `MIN` associated constant on `f64`
[INFO] [stdout]   --> src/app.rs:90:49
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 .fold((f64::MAX, f64::MAX, f64::MIN, f64::MIN), |mut acc, v| {
[INFO] [stdout]    |                                                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN`: replaced by the `MIN` associated constant on `f64`
[INFO] [stdout]   --> src/app.rs:90:59
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 .fold((f64::MAX, f64::MAX, f64::MIN, f64::MIN), |mut acc, v| {
[INFO] [stdout]    |                                                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]   --> src/robo.rs:77:30
[INFO] [stdout]    |
[INFO] [stdout] 77 |         fn set_map(&mut self,map: Vec<nalgebra::Vector2<f64>>) {
[INFO] [stdout]    |                              ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `real_robot_position`
[INFO] [stdout]   --> src/robo.rs:81:42
[INFO] [stdout]    |
[INFO] [stdout] 81 |         fn set_robot_position(&mut self, real_robot_position: nalgebra::Vector3<f64>) {
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_real_robot_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `robot_start_belief`
[INFO] [stdout]   --> src/robo.rs:85:40
[INFO] [stdout]    |
[INFO] [stdout] 85 |         fn set_robot_belief(&mut self, robot_start_belief: super::RobotStartBelief) {
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_robot_start_belief`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `left`
[INFO] [stdout]    --> src/robo.rs:101:38
[INFO] [stdout]     |
[INFO] [stdout] 101 |         fn set_wheel_velo(&mut self, left: f64, right: f64) {
[INFO] [stdout]     |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_left`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right`
[INFO] [stdout]    --> src/robo.rs:101:49
[INFO] [stdout]     |
[INFO] [stdout] 101 |         fn set_wheel_velo(&mut self, left: f64, right: f64) {
[INFO] [stdout]     |                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_right`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `robot_start_belief`
[INFO] [stdout]    --> src/robo.rs:204:40
[INFO] [stdout]     |
[INFO] [stdout] 204 |         fn set_robot_belief(&mut self, robot_start_belief: super::RobotStartBelief) {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_robot_start_belief`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |     let mut my_pi = match DeviceInfo::new() 
[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: enum `RobotStartBelief` is never used
[INFO] [stdout]  --> src/robo.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum RobotStartBelief {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_map`, `set_robot_position`, `set_robot_belief`, `wheel_velo_max`, `wheel_velo_min`, and `set_wheel_velo` are never used
[INFO] [stdout]   --> src/robo.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait RobotAccess {
[INFO] [stdout]    |           ----------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 19 |     fn get_map(&self) -> Vec<Vector2<f64>>;
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     fn set_robot_position(&mut self, real_robot_position: Vector3<f64>);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 23 |     fn set_robot_belief(&mut self, robot_start_belief: RobotStartBelief);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     fn wheel_velo_max(&self) -> f64;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 27 |     fn wheel_velo_min(&self) -> f64;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 28 |     fn set_wheel_velo(&mut self, left: f64, right: f64);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Wall` is never constructed
[INFO] [stdout]    --> src/robo.rs:118:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     pub enum PositionType {
[INFO] [stdout]     |              ------------ variant in this enum
[INFO] [stdout] 118 |         Wall,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PositionType` 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: fields `belief`, `max_velo`, and `min_velo` are never read
[INFO] [stdout]    --> src/robo.rs:128:9
[INFO] [stdout]     |
[INFO] [stdout] 123 |     pub struct MyPiSim {
[INFO] [stdout]     |                ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 128 |         belief: Vec<Vec<f64>>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 129 |         max_velo: f64,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 130 |         min_velo: f64,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MyPiSim` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_wall_point` and `remove_wall_point` are never used
[INFO] [stdout]    --> src/app.rs:78:12
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl<'a> World<'a> {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn add_wall_point(&mut self, new_wall_point: Vector2<f64>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn remove_wall_point(&mut self, wall_point: Vector2<f64>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Span<'_>`
[INFO] [stdout]    --> src/app.rs:262:57
[INFO] [stdout]     |
[INFO] [stdout] 262 | ...   vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 262 -             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout] 262 +             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 262 -             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout] 262 +             vec![Line::from(vec!["Position: x=".into(), <Span<'_> as Into<_>>::into(p.x.to_string().yellow()), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Span<'_>`
[INFO] [stdout]    --> src/app.rs:262:104
[INFO] [stdout]     |
[INFO] [stdout] 262 | ...   vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout]     |                                                                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 262 -             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout] 262 +             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow(), ]),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 262 -             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout] 262 +             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), <Span<'_> as Into<_>>::into(p.y.to_string().yellow()), ]),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]   --> src/robo.rs:77:30
[INFO] [stdout]    |
[INFO] [stdout] 77 |         fn set_map(&mut self,map: Vec<nalgebra::Vector2<f64>>) {
[INFO] [stdout]    |                              ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `real_robot_position`
[INFO] [stdout]   --> src/robo.rs:81:42
[INFO] [stdout]    |
[INFO] [stdout] 81 |         fn set_robot_position(&mut self, real_robot_position: nalgebra::Vector3<f64>) {
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_real_robot_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `robot_start_belief`
[INFO] [stdout]   --> src/robo.rs:85:40
[INFO] [stdout]    |
[INFO] [stdout] 85 |         fn set_robot_belief(&mut self, robot_start_belief: super::RobotStartBelief) {
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_robot_start_belief`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `left`
[INFO] [stdout]    --> src/robo.rs:101:38
[INFO] [stdout]     |
[INFO] [stdout] 101 |         fn set_wheel_velo(&mut self, left: f64, right: f64) {
[INFO] [stdout]     |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_left`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right`
[INFO] [stdout]    --> src/robo.rs:101:49
[INFO] [stdout]     |
[INFO] [stdout] 101 |         fn set_wheel_velo(&mut self, left: f64, right: f64) {
[INFO] [stdout]     |                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_right`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `robot_start_belief`
[INFO] [stdout]    --> src/robo.rs:204:40
[INFO] [stdout]     |
[INFO] [stdout] 204 |         fn set_robot_belief(&mut self, robot_start_belief: super::RobotStartBelief) {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_robot_start_belief`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |     let mut my_pi = match DeviceInfo::new() 
[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] [stderr] error: could not compile `senter` (bin "senter" test) due to 2 previous errors; 18 warnings emitted
[INFO] [stdout] warning: enum `RobotStartBelief` is never used
[INFO] [stdout]  --> src/robo.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum RobotStartBelief {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: methods `get_map`, `set_robot_position`, `set_robot_belief`, `wheel_velo_max`, `wheel_velo_min`, and `set_wheel_velo` are never used
[INFO] [stdout]   --> src/robo.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait RobotAccess {
[INFO] [stdout]    |           ----------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 19 |     fn get_map(&self) -> Vec<Vector2<f64>>;
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     fn set_robot_position(&mut self, real_robot_position: Vector3<f64>);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 23 |     fn set_robot_belief(&mut self, robot_start_belief: RobotStartBelief);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     fn wheel_velo_max(&self) -> f64;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 27 |     fn wheel_velo_min(&self) -> f64;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 28 |     fn set_wheel_velo(&mut self, left: f64, right: f64);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Wall` is never constructed
[INFO] [stdout]    --> src/robo.rs:118:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     pub enum PositionType {
[INFO] [stdout]     |              ------------ variant in this enum
[INFO] [stdout] 118 |         Wall,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PositionType` 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: fields `belief`, `max_velo`, and `min_velo` are never read
[INFO] [stdout]    --> src/robo.rs:128:9
[INFO] [stdout]     |
[INFO] [stdout] 123 |     pub struct MyPiSim {
[INFO] [stdout]     |                ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 128 |         belief: Vec<Vec<f64>>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 129 |         max_velo: f64,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 130 |         min_velo: f64,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MyPiSim` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_wall_point` and `remove_wall_point` are never used
[INFO] [stdout]    --> src/app.rs:78:12
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl<'a> World<'a> {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn add_wall_point(&mut self, new_wall_point: Vector2<f64>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn remove_wall_point(&mut self, wall_point: Vector2<f64>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Span<'_>`
[INFO] [stdout]    --> src/app.rs:262:57
[INFO] [stdout]     |
[INFO] [stdout] 262 | ...   vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 262 -             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout] 262 +             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 262 -             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout] 262 +             vec![Line::from(vec!["Position: x=".into(), <Span<'_> as Into<_>>::into(p.x.to_string().yellow()), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Span<'_>`
[INFO] [stdout]    --> src/app.rs:262:104
[INFO] [stdout]     |
[INFO] [stdout] 262 | ...   vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout]     |                                                                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 262 -             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout] 262 +             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow(), ]),
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 262 -             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), p.y.to_string().yellow().into(), ]),
[INFO] [stdout] 262 +             vec![Line::from(vec!["Position: x=".into(), p.x.to_string().yellow().into(), " y=".into(), <Span<'_> as Into<_>>::into(p.y.to_string().yellow()), ]),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `senter` (bin "senter") due to 2 previous errors; 18 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "d0d051fac66069b8b358e8ee08cbc06b9e4c7b92544ac5b0fe6f838eafad112a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d0d051fac66069b8b358e8ee08cbc06b9e4c7b92544ac5b0fe6f838eafad112a", kill_on_drop: false }`
[INFO] [stdout] d0d051fac66069b8b358e8ee08cbc06b9e4c7b92544ac5b0fe6f838eafad112a
