[INFO] updating cached repository freesig/mood_motion_server [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/freesig/mood_motion_server [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/freesig/mood_motion_server" "work/ex/clippy-test-run/sources/stable/gh/freesig/mood_motion_server"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/freesig/mood_motion_server'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/freesig/mood_motion_server" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/freesig/mood_motion_server"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/freesig/mood_motion_server'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 3a0770e235a7ceebc6e0fbc0543bad0f26d17518 [INFO] sha for GitHub repo freesig/mood_motion_server: 3a0770e235a7ceebc6e0fbc0543bad0f26d17518 [INFO] validating manifest of freesig/mood_motion_server on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of freesig/mood_motion_server on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing freesig/mood_motion_server [INFO] finished frobbing freesig/mood_motion_server [INFO] frobbed toml for freesig/mood_motion_server written to work/ex/clippy-test-run/sources/stable/gh/freesig/mood_motion_server/Cargo.toml [INFO] started frobbing freesig/mood_motion_server [INFO] finished frobbing freesig/mood_motion_server [INFO] frobbed toml for freesig/mood_motion_server written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/freesig/mood_motion_server/Cargo.toml [INFO] crate freesig/mood_motion_server has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting freesig/mood_motion_server against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/freesig/mood_motion_server:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] e339540c9f518f897da18ed5c88c0ce404ebb6c0b18ae07018374891bb6c469e [INFO] running `"docker" "start" "-a" "e339540c9f518f897da18ed5c88c0ce404ebb6c0b18ae07018374891bb6c469e"` [INFO] [stderr] Compiling libc v0.2.31 [INFO] [stderr] Checking shared_library v0.1.7 [INFO] [stderr] Checking ioctl-rs v0.1.5 [INFO] [stderr] Checking termios v0.2.2 [INFO] [stderr] Checking serial-core v0.4.0 [INFO] [stderr] Checking tempfile v2.1.6 [INFO] [stderr] Checking cgmath v0.15.0 [INFO] [stderr] Checking arrayvec v0.4.2 [INFO] [stderr] Compiling glium v0.17.1 [INFO] [stderr] Checking x11-dl v2.15.0 [INFO] [stderr] Checking backtrace-sys v0.1.14 [INFO] [stderr] Checking fs2 v0.2.5 [INFO] [stderr] Checking osmesa-sys v0.1.2 [INFO] [stderr] Checking serial-unix v0.4.0 [INFO] [stderr] Checking memmap v0.4.0 [INFO] [stderr] Checking backtrace v0.3.3 [INFO] [stderr] Checking rusttype v0.2.3 [INFO] [stderr] Compiling rand v0.3.16 [INFO] [stderr] Checking serial v0.4.0 [INFO] [stderr] Compiling phf_generator v0.7.21 [INFO] [stderr] Compiling phf_codegen v0.7.21 [INFO] [stderr] Compiling target_build_utils v0.3.1 [INFO] [stderr] Compiling libloading v0.3.4 [INFO] [stderr] Checking dlib v0.3.1 [INFO] [stderr] Checking wayland-sys v0.9.10 [INFO] [stderr] Checking wayland-client v0.9.10 [INFO] [stderr] Checking wayland-protocols v0.9.10 [INFO] [stderr] Checking wayland-kbd v0.9.1 [INFO] [stderr] Checking wayland-window v0.7.0 [INFO] [stderr] Checking winit v0.7.6 [INFO] [stderr] Checking glutin v0.9.2 [INFO] [stderr] Checking glium_text_rusttype v0.2.0 [INFO] [stderr] Checking mood_motion_server v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Surface` [INFO] [stderr] --> src/render.rs:1:21 [INFO] [stderr] | [INFO] [stderr] 1 | use glium::{glutin, Surface, Display}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `DivAssign` [INFO] [stderr] --> src/movement.rs:4:32 [INFO] [stderr] | [INFO] [stderr] 4 | use std::ops::{Sub, AddAssign, DivAssign}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/movement.rs:37:21 [INFO] [stderr] | [INFO] [stderr] 37 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/movement.rs:39:21 [INFO] [stderr] | [INFO] [stderr] 39 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::vec::IntoIter` [INFO] [stderr] --> src/clouds.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::vec::IntoIter; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std` [INFO] [stderr] --> src/font.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cgmath` [INFO] [stderr] --> src/font.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use cgmath; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `TextDisplay` [INFO] [stderr] --> src/font.rs:5:18 [INFO] [stderr] | [INFO] [stderr] 5 | use glium_text::{TextDisplay, TextSystem}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `font::Text` [INFO] [stderr] --> src/main.rs:39:5 [INFO] [stderr] | [INFO] [stderr] 39 | use font::Text; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/main.rs:143:5 [INFO] [stderr] | [INFO] [stderr] 143 | min_accel [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/main.rs:142:21 [INFO] [stderr] | [INFO] [stderr] 142 | let min_accel = max( start_total.x, max(start_total.y, start_total.z) ) + MIN_BUFFER; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Surface` [INFO] [stderr] --> src/render.rs:1:21 [INFO] [stderr] | [INFO] [stderr] 1 | use glium::{glutin, Surface, Display}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `DivAssign` [INFO] [stderr] --> src/movement.rs:4:32 [INFO] [stderr] | [INFO] [stderr] 4 | use std::ops::{Sub, AddAssign, DivAssign}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/movement.rs:37:21 [INFO] [stderr] | [INFO] [stderr] 37 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/movement.rs:39:21 [INFO] [stderr] | [INFO] [stderr] 39 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::vec::IntoIter` [INFO] [stderr] --> src/clouds.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::vec::IntoIter; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std` [INFO] [stderr] --> src/font.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cgmath` [INFO] [stderr] --> src/font.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use cgmath; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `TextDisplay` [INFO] [stderr] --> src/font.rs:5:18 [INFO] [stderr] | [INFO] [stderr] 5 | use glium_text::{TextDisplay, TextSystem}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `font::Text` [INFO] [stderr] --> src/main.rs:39:5 [INFO] [stderr] | [INFO] [stderr] 39 | use font::Text; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/main.rs:143:5 [INFO] [stderr] | [INFO] [stderr] 143 | min_accel [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/main.rs:142:21 [INFO] [stderr] | [INFO] [stderr] 142 | let min_accel = max( start_total.x, max(start_total.y, start_total.z) ) + MIN_BUFFER; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/arduino.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | Ok(()) [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/arduino.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | Err(e) => { [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `out_buf` [INFO] [stderr] --> src/arduino.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | let mut out_buf: Vec = vec![0u8; 100]; [INFO] [stderr] | ^^^^^^^ help: consider using `_out_buf` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `amt` [INFO] [stderr] --> src/movement.rs:81:10 [INFO] [stderr] | [INFO] [stderr] 81 | let (amt, src) = socket.recv_from(&mut buf).unwrap(); [INFO] [stderr] | ^^^ help: consider using `_amt` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `src` [INFO] [stderr] --> src/movement.rs:81:15 [INFO] [stderr] | [INFO] [stderr] 81 | let (amt, src) = socket.recv_from(&mut buf).unwrap(); [INFO] [stderr] | ^^^ help: consider using `_src` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/main.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | for i in 0..START_SIZE { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `TryRecvError` [INFO] [stderr] --> src/main.rs:153:13 [INFO] [stderr] | [INFO] [stderr] 153 | TryRecvError => (), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using `_TryRecvError` instead [INFO] [stderr] [INFO] [stderr] warning: variable `count` is assigned to, but never used [INFO] [stderr] --> src/main.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | let mut count = 0; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_count` instead [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/arduino.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | Ok(()) [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | let mut jerk = j.lock().unwrap(); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:184:9 [INFO] [stderr] | [INFO] [stderr] 184 | let mut patterns = create_colour_clouds(); [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/main.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | let mut port = arduino::open(); [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/arduino.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | let mut out_buf: Vec = vec![0u8; 100]; [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/render.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | let mut events_loop = glutin::EventsLoop::new(); [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/clouds.rs:51:12 [INFO] [stderr] | [INFO] [stderr] 51 | Ok(mut f) => { [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/arduino.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | Err(e) => { [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `out_buf` [INFO] [stderr] --> src/arduino.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | let mut out_buf: Vec = vec![0u8; 100]; [INFO] [stderr] | ^^^^^^^ help: consider using `_out_buf` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `amt` [INFO] [stderr] --> src/movement.rs:81:10 [INFO] [stderr] | [INFO] [stderr] 81 | let (amt, src) = socket.recv_from(&mut buf).unwrap(); [INFO] [stderr] | ^^^ help: consider using `_amt` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `src` [INFO] [stderr] --> src/movement.rs:81:15 [INFO] [stderr] | [INFO] [stderr] 81 | let (amt, src) = socket.recv_from(&mut buf).unwrap(); [INFO] [stderr] | ^^^ help: consider using `_src` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/main.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | for i in 0..START_SIZE { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `TryRecvError` [INFO] [stderr] --> src/main.rs:153:13 [INFO] [stderr] | [INFO] [stderr] 153 | TryRecvError => (), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using `_TryRecvError` instead [INFO] [stderr] [INFO] [stderr] warning: variable `count` is assigned to, but never used [INFO] [stderr] --> src/main.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | let mut count = 0; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_count` instead [INFO] [stderr] [INFO] [stderr] warning: function is never used: `jerk_to_light` [INFO] [stderr] --> src/movement.rs:110:1 [INFO] [stderr] | [INFO] [stderr] 110 | pub fn jerk_to_light(colour: f32, light: i16) -> String{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Cloud` [INFO] [stderr] --> src/clouds.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | pub struct Cloud{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `load` [INFO] [stderr] --> src/clouds.rs:87:1 [INFO] [stderr] | [INFO] [stderr] 87 | pub fn load(p: &Path, min: u8, max: u8) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `cloud_to_light` [INFO] [stderr] --> src/clouds.rs:121:1 [INFO] [stderr] | [INFO] [stderr] 121 | pub fn cloud_to_light(c: &mut Cloud) -> Colour{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/buffer.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn new(size: usize) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `last` [INFO] [stderr] --> src/buffer.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn last(&self) -> Option{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `create_clouds` [INFO] [stderr] --> src/main.rs:43:1 [INFO] [stderr] | [INFO] [stderr] 43 | fn create_clouds() -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `run_clouds` [INFO] [stderr] --> src/main.rs:75:1 [INFO] [stderr] | [INFO] [stderr] 75 | fn run_clouds(mut patterns: Vec, tx: Sender, j: Arc< Mutex >){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/arduino.rs:42:17 [INFO] [stderr] | [INFO] [stderr] 42 | try!(port.write(&buf[..])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | let mut jerk = j.lock().unwrap(); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:184:9 [INFO] [stderr] | [INFO] [stderr] 184 | let mut patterns = create_colour_clouds(); [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/main.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | let mut port = arduino::open(); [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/arduino.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | let mut out_buf: Vec = vec![0u8; 100]; [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/render.rs:18:19 [INFO] [stderr] | [INFO] [stderr] 18 | self.r = (self.r as f32 * val) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f32::from(self.r)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/render.rs:19:19 [INFO] [stderr] | [INFO] [stderr] 19 | self.g = (self.g as f32 * val) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f32::from(self.g)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/render.rs:20:19 [INFO] [stderr] | [INFO] [stderr] 20 | self.b = (self.b as f32 * val) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f32::from(self.b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/render.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | let mut events_loop = glutin::EventsLoop::new(); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/render.rs:56:9 [INFO] [stderr] | [INFO] [stderr] 56 | / match event { [INFO] [stderr] 57 | | glutin::Event::WindowEvent { event, .. } => match event { [INFO] [stderr] 58 | | WindowEvent::Closed => close = true, [INFO] [stderr] 59 | | WindowEvent::KeyboardInput{ input, .. } => { [INFO] [stderr] ... | [INFO] [stderr] 126 | | _ => (), [INFO] [stderr] 127 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 56 | if let glutin::Event::WindowEvent { event, .. } = event { match event { [INFO] [stderr] 57 | WindowEvent::Closed => close = true, [INFO] [stderr] 58 | WindowEvent::KeyboardInput{ input, .. } => { [INFO] [stderr] 59 | match input{ [INFO] [stderr] 60 | KeyboardInput { virtual_keycode: Some(VirtualKeyCode::Minus), [INFO] [stderr] 61 | state: ElementState::Pressed, .. } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/render.rs:107:29 [INFO] [stderr] | [INFO] [stderr] 107 | min_sender.send(*min_accel); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/render.rs:115:29 [INFO] [stderr] | [INFO] [stderr] 115 | min_sender.send(*min_accel); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/render.rs:133:38 [INFO] [stderr] | [INFO] [stderr] 133 | buf_size: usize, amp: &f32, min_accel: &f32) -> (String, String){ [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/render.rs:133:55 [INFO] [stderr] | [INFO] [stderr] 133 | buf_size: usize, amp: &f32, min_accel: &f32) -> (String, String){ [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clouds.rs:51:12 [INFO] [stderr] | [INFO] [stderr] 51 | Ok(mut f) => { [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/movement.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | / if self.x == other.x && [INFO] [stderr] 35 | | self.y == other.y && [INFO] [stderr] 36 | | self.z == other.z { [INFO] [stderr] 37 | | return true; [INFO] [stderr] 38 | | }else{ [INFO] [stderr] 39 | | return false; [INFO] [stderr] 40 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] help: you can reduce it to [INFO] [stderr] | [INFO] [stderr] 34 | return self.x == other.x && [INFO] [stderr] 35 | self.y == other.y && [INFO] [stderr] 36 | self.z == other.z [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: function is never used: `jerk_to_light` [INFO] [stderr] --> src/movement.rs:110:1 [INFO] [stderr] | [INFO] [stderr] 110 | pub fn jerk_to_light(colour: f32, light: i16) -> String{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Cloud` [INFO] [stderr] --> src/clouds.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | pub struct Cloud{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `load` [INFO] [stderr] --> src/clouds.rs:87:1 [INFO] [stderr] | [INFO] [stderr] 87 | pub fn load(p: &Path, min: u8, max: u8) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `cloud_to_light` [INFO] [stderr] --> src/clouds.rs:121:1 [INFO] [stderr] | [INFO] [stderr] 121 | pub fn cloud_to_light(c: &mut Cloud) -> Colour{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/buffer.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn new(size: usize) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `last` [INFO] [stderr] --> src/buffer.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn last(&self) -> Option{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `create_clouds` [INFO] [stderr] --> src/main.rs:43:1 [INFO] [stderr] | [INFO] [stderr] 43 | fn create_clouds() -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `run_clouds` [INFO] [stderr] --> src/main.rs:75:1 [INFO] [stderr] | [INFO] [stderr] 75 | fn run_clouds(mut patterns: Vec, tx: Sender, j: Arc< Mutex >){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/arduino.rs:42:17 [INFO] [stderr] | [INFO] [stderr] 42 | try!(port.write(&buf[..])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/movement.rs:84:33 [INFO] [stderr] | [INFO] [stderr] 84 | let mut peices = data.split(","); [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/movement.rs:94:5 [INFO] [stderr] | [INFO] [stderr] 94 | / loop { [INFO] [stderr] 95 | | match a_iter.next() { [INFO] [stderr] 96 | | Some(a_cur) => { [INFO] [stderr] 97 | | match a_iter.next() { [INFO] [stderr] ... | [INFO] [stderr] 103 | | } [INFO] [stderr] 104 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(a_cur) = a_iter.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/render.rs:18:19 [INFO] [stderr] | [INFO] [stderr] 18 | self.r = (self.r as f32 * val) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f32::from(self.r)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/render.rs:19:19 [INFO] [stderr] | [INFO] [stderr] 19 | self.g = (self.g as f32 * val) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f32::from(self.g)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/render.rs:20:19 [INFO] [stderr] | [INFO] [stderr] 20 | self.b = (self.b as f32 * val) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f32::from(self.b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/render.rs:56:9 [INFO] [stderr] | [INFO] [stderr] 56 | / match event { [INFO] [stderr] 57 | | glutin::Event::WindowEvent { event, .. } => match event { [INFO] [stderr] 58 | | WindowEvent::Closed => close = true, [INFO] [stderr] 59 | | WindowEvent::KeyboardInput{ input, .. } => { [INFO] [stderr] ... | [INFO] [stderr] 126 | | _ => (), [INFO] [stderr] 127 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 56 | if let glutin::Event::WindowEvent { event, .. } = event { match event { [INFO] [stderr] 57 | WindowEvent::Closed => close = true, [INFO] [stderr] 58 | WindowEvent::KeyboardInput{ input, .. } => { [INFO] [stderr] 59 | match input{ [INFO] [stderr] 60 | KeyboardInput { virtual_keycode: Some(VirtualKeyCode::Minus), [INFO] [stderr] 61 | state: ElementState::Pressed, .. } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/render.rs:107:29 [INFO] [stderr] | [INFO] [stderr] 107 | min_sender.send(*min_accel); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/render.rs:115:29 [INFO] [stderr] | [INFO] [stderr] 115 | min_sender.send(*min_accel); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/render.rs:133:38 [INFO] [stderr] | [INFO] [stderr] 133 | buf_size: usize, amp: &f32, min_accel: &f32) -> (String, String){ [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/render.rs:133:55 [INFO] [stderr] | [INFO] [stderr] 133 | buf_size: usize, amp: &f32, min_accel: &f32) -> (String, String){ [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/movement.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | / if self.x == other.x && [INFO] [stderr] 35 | | self.y == other.y && [INFO] [stderr] 36 | | self.z == other.z { [INFO] [stderr] 37 | | return true; [INFO] [stderr] 38 | | }else{ [INFO] [stderr] 39 | | return false; [INFO] [stderr] 40 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] help: you can reduce it to [INFO] [stderr] | [INFO] [stderr] 34 | return self.x == other.x && [INFO] [stderr] 35 | self.y == other.y && [INFO] [stderr] 36 | self.z == other.z [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/movement.rs:84:33 [INFO] [stderr] | [INFO] [stderr] 84 | let mut peices = data.split(","); [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/movement.rs:94:5 [INFO] [stderr] | [INFO] [stderr] 94 | / loop { [INFO] [stderr] 95 | | match a_iter.next() { [INFO] [stderr] 96 | | Some(a_cur) => { [INFO] [stderr] 97 | | match a_iter.next() { [INFO] [stderr] ... | [INFO] [stderr] 103 | | } [INFO] [stderr] 104 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(a_cur) = a_iter.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/clouds.rs:123:23 [INFO] [stderr] | [INFO] [stderr] 123 | let brightness = (brightness as f32 / (c.max - c.min) as f32 * 255.0) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f32::from(brightness)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/clouds.rs:123:43 [INFO] [stderr] | [INFO] [stderr] 123 | let brightness = (brightness as f32 / (c.max - c.min) as f32 * 255.0) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(c.max - c.min)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/clouds.rs:132:20 [INFO] [stderr] | [INFO] [stderr] 132 | let distance = std::cmp::max(distance, 1) as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(std::cmp::max(distance, 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/clouds.rs:140:27 [INFO] [stderr] | [INFO] [stderr] 140 | let mut c = Colour{r: c.r as i16, g: c.g as i16, b: c.b as i16}; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i16::from(c.r)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/clouds.rs:140:42 [INFO] [stderr] | [INFO] [stderr] 140 | let mut c = Colour{r: c.r as i16, g: c.g as i16, b: c.b as i16}; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i16::from(c.g)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/clouds.rs:140:57 [INFO] [stderr] | [INFO] [stderr] 140 | let mut c = Colour{r: c.r as i16, g: c.g as i16, b: c.b as i16}; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i16::from(c.b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/clouds.rs:123:23 [INFO] [stderr] | [INFO] [stderr] 123 | let brightness = (brightness as f32 / (c.max - c.min) as f32 * 255.0) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f32::from(brightness)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/clouds.rs:123:43 [INFO] [stderr] | [INFO] [stderr] 123 | let brightness = (brightness as f32 / (c.max - c.min) as f32 * 255.0) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(c.max - c.min)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/clouds.rs:132:20 [INFO] [stderr] | [INFO] [stderr] 132 | let distance = std::cmp::max(distance, 1) as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(std::cmp::max(distance, 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/clouds.rs:140:27 [INFO] [stderr] | [INFO] [stderr] 140 | let mut c = Colour{r: c.r as i16, g: c.g as i16, b: c.b as i16}; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i16::from(c.r)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/clouds.rs:140:42 [INFO] [stderr] | [INFO] [stderr] 140 | let mut c = Colour{r: c.r as i16, g: c.g as i16, b: c.b as i16}; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i16::from(c.g)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/clouds.rs:140:57 [INFO] [stderr] | [INFO] [stderr] 140 | let mut c = Colour{r: c.r as i16, g: c.g as i16, b: c.b as i16}; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i16::from(c.b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | tx.send(msg); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | tx.send(msg); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `colour_tots`. [INFO] [stderr] --> src/main.rs:118:18 [INFO] [stderr] | [INFO] [stderr] 118 | for i in 0..2{ [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 118 | for in &mut colour_tots{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:119:33 [INFO] [stderr] | [INFO] [stderr] 119 | colour_tots[i].g = (colour_tots[i].g as f32 * 0.8) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(colour_tots[i].g)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:120:33 [INFO] [stderr] | [INFO] [stderr] 120 | colour_tots[i].b = (colour_tots[i].b as f32 * 0.8) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(colour_tots[i].b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | tx.send(msg); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | tx.send(msg); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: variable `TryRecvError` should have a snake case name such as `try_recv_error` [INFO] [stderr] --> src/main.rs:153:13 [INFO] [stderr] | [INFO] [stderr] 153 | TryRecvError => (), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:158:24 [INFO] [stderr] | [INFO] [stderr] 158 | Some(a) => a.clone(), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*a` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | tx.send(msg); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | tx.send(msg); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `colour_tots`. [INFO] [stderr] --> src/main.rs:118:18 [INFO] [stderr] | [INFO] [stderr] 118 | for i in 0..2{ [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 118 | for in &mut colour_tots{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:119:33 [INFO] [stderr] | [INFO] [stderr] 119 | colour_tots[i].g = (colour_tots[i].g as f32 * 0.8) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(colour_tots[i].g)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:120:33 [INFO] [stderr] | [INFO] [stderr] 120 | colour_tots[i].b = (colour_tots[i].b as f32 * 0.8) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(colour_tots[i].b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | tx.send(msg); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | tx.send(msg); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:230:28 [INFO] [stderr] | [INFO] [stderr] 230 | let mut dj_total = dj.lock().unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `dj.lock().unwrap()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: variable `TryRecvError` should have a snake case name such as `try_recv_error` [INFO] [stderr] --> src/main.rs:153:13 [INFO] [stderr] | [INFO] [stderr] 153 | TryRecvError => (), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:158:24 [INFO] [stderr] | [INFO] [stderr] 158 | Some(a) => a.clone(), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*a` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: Could not compile `mood_motion_server`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:230:28 [INFO] [stderr] | [INFO] [stderr] 230 | let mut dj_total = dj.lock().unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `dj.lock().unwrap()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `mood_motion_server`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "e339540c9f518f897da18ed5c88c0ce404ebb6c0b18ae07018374891bb6c469e"` [INFO] running `"docker" "rm" "-f" "e339540c9f518f897da18ed5c88c0ce404ebb6c0b18ae07018374891bb6c469e"` [INFO] [stdout] e339540c9f518f897da18ed5c88c0ce404ebb6c0b18ae07018374891bb6c469e