[INFO] updating cached repository yuval-k/connect [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/yuval-k/connect [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/yuval-k/connect" "work/ex/clippy-test-run/sources/stable/gh/yuval-k/connect"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/yuval-k/connect'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/yuval-k/connect" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/yuval-k/connect"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/yuval-k/connect'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] e3b41db4cbc2236ce3a06be56bb4f47ff56683dc [INFO] sha for GitHub repo yuval-k/connect: e3b41db4cbc2236ce3a06be56bb4f47ff56683dc [INFO] validating manifest of yuval-k/connect 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 yuval-k/connect 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 yuval-k/connect [INFO] finished frobbing yuval-k/connect [INFO] frobbed toml for yuval-k/connect written to work/ex/clippy-test-run/sources/stable/gh/yuval-k/connect/Cargo.toml [INFO] started frobbing yuval-k/connect [INFO] finished frobbing yuval-k/connect [INFO] frobbed toml for yuval-k/connect written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/yuval-k/connect/Cargo.toml [INFO] crate yuval-k/connect 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 yuval-k/connect against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/yuval-k/connect:/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] b591c41d7e553d532e82ffb0e35a13b1b9142f5299685022d38d6e2dd7c592dd [INFO] running `"docker" "start" "-a" "b591c41d7e553d532e82ffb0e35a13b1b9142f5299685022d38d6e2dd7c592dd"` [INFO] [stderr] Compiling libc v0.2.21 [INFO] [stderr] Compiling siphasher v0.2.2 [INFO] [stderr] Checking num-traits v0.1.37 [INFO] [stderr] Compiling gcc v0.3.46 [INFO] [stderr] Checking approx v0.1.1 [INFO] [stderr] Checking unicode-segmentation v1.1.0 [INFO] [stderr] Checking vec_map v0.7.0 [INFO] [stderr] Checking bitflags v0.8.2 [INFO] [stderr] Checking bit-vec v0.4.3 [INFO] [stderr] Checking memchr v0.1.11 [INFO] [stderr] Checking term_size v0.3.0 [INFO] [stderr] Checking ioctl-rs v0.1.5 [INFO] [stderr] Checking atty v0.2.2 [INFO] [stderr] Checking termios v0.2.2 [INFO] [stderr] Checking rosc v0.1.5 [INFO] [stderr] Compiling phf_shared v0.7.21 [INFO] [stderr] Compiling rand v0.3.15 [INFO] [stderr] Checking aho-corasick v0.5.3 [INFO] [stderr] Checking clap v2.24.1 [INFO] [stderr] Checking serial v0.3.4 [INFO] [stderr] Checking bit-set v0.4.0 [INFO] [stderr] Checking num-integer v0.1.34 [INFO] [stderr] Checking num-complex v0.1.37 [INFO] [stderr] Compiling connect v0.1.0 (/opt/crater/workdir) [INFO] [stderr] Checking thread-id v2.0.0 [INFO] [stderr] Checking tk-opc v0.1.3 [INFO] [stderr] Checking phf v0.7.21 [INFO] [stderr] Checking num-bigint v0.1.37 [INFO] [stderr] Checking num-iter v0.1.33 [INFO] [stderr] Checking thread_local v0.2.7 [INFO] [stderr] Checking regex v0.1.80 [INFO] [stderr] Compiling phf_generator v0.7.21 [INFO] [stderr] Checking num-rational v0.1.36 [INFO] [stderr] Compiling phf_codegen v0.7.21 [INFO] [stderr] Compiling palette v0.2.1 [INFO] [stderr] Checking num v0.1.37 [INFO] [stderr] Checking env_logger v0.3.5 [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/pixels/mod.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | leds: leds, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `leds` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/pixels/mod.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | rgb: rgb, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rgb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/pixels/mod.rs:142:19 [INFO] [stderr] | [INFO] [stderr] 142 | let (r, g, b, a): (u8, u8, u8, u8) = rgb.to_pixel(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animations/idle.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | color: color, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animations/idle.rs:162:13 [INFO] [stderr] | [INFO] [stderr] 162 | color: color, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animations/idle.rs:163:13 [INFO] [stderr] | [INFO] [stderr] 163 | index: index [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animations/mod.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | osc: osc, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `osc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/opc.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | sender: sender, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `sender` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | ls: ls, [INFO] [stderr] | ^^^^^^ help: replace it with: `ls` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/pixels/mod.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | leds: leds, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `leds` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/pixels/mod.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | rgb: rgb, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rgb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/pixels/mod.rs:142:19 [INFO] [stderr] | [INFO] [stderr] 142 | let (r, g, b, a): (u8, u8, u8, u8) = rgb.to_pixel(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animations/idle.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | color: color, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animations/idle.rs:162:13 [INFO] [stderr] | [INFO] [stderr] 162 | color: color, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animations/idle.rs:163:13 [INFO] [stderr] | [INFO] [stderr] 163 | index: index [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animations/mod.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | osc: osc, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `osc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/opc.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | sender: sender, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `sender` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | ls: ls, [INFO] [stderr] | ^^^^^^ help: replace it with: `ls` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::f32` [INFO] [stderr] --> src/animations/idle.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | use std::f32; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::f32` [INFO] [stderr] --> src/animations/idle.rs:178:13 [INFO] [stderr] | [INFO] [stderr] 178 | use std::f32; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/animations/touch.rs:50:16 [INFO] [stderr] | [INFO] [stderr] 50 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 51 | | [INFO] [stderr] 52 | | if pole.level > 0. { [INFO] [stderr] 53 | | pole.level -= delta; [INFO] [stderr] ... | [INFO] [stderr] 57 | | } [INFO] [stderr] 58 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 50 | } else if pole.level > 0. { [INFO] [stderr] 51 | pole.level -= delta; [INFO] [stderr] 52 | if pole.level < 0. { [INFO] [stderr] 53 | pole.level = 0. [INFO] [stderr] 54 | } [INFO] [stderr] 55 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/animations/mod.rs:106:60 [INFO] [stderr] | [INFO] [stderr] 106 | let currentangle = 2. * std::f32::consts::PI *0.3245251*(self.disco_state+i as f32); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.324_525_1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/animations/mod.rs:114:60 [INFO] [stderr] | [INFO] [stderr] 114 | let currentangle = 2. * std::f32::consts::PI *0.3245251*(self.disco_state+5.+i as f32); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.324_525_1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/config/mod.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | numret [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/config/mod.rs:56:22 [INFO] [stderr] | [INFO] [stderr] 56 | let numret = data.num_leds_for_pole; [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 import: `std` [INFO] [stderr] --> src/main.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | use std; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:300:35 [INFO] [stderr] | [INFO] [stderr] 300 | std::thread::sleep_ms(1000000) [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::f32` [INFO] [stderr] --> src/animations/idle.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | use std::f32; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::f32` [INFO] [stderr] --> src/animations/idle.rs:178:13 [INFO] [stderr] | [INFO] [stderr] 178 | use std::f32; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/animations/touch.rs:50:16 [INFO] [stderr] | [INFO] [stderr] 50 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 51 | | [INFO] [stderr] 52 | | if pole.level > 0. { [INFO] [stderr] 53 | | pole.level -= delta; [INFO] [stderr] ... | [INFO] [stderr] 57 | | } [INFO] [stderr] 58 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 50 | } else if pole.level > 0. { [INFO] [stderr] 51 | pole.level -= delta; [INFO] [stderr] 52 | if pole.level < 0. { [INFO] [stderr] 53 | pole.level = 0. [INFO] [stderr] 54 | } [INFO] [stderr] 55 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/animations/mod.rs:106:60 [INFO] [stderr] | [INFO] [stderr] 106 | let currentangle = 2. * std::f32::consts::PI *0.3245251*(self.disco_state+i as f32); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.324_525_1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/animations/mod.rs:114:60 [INFO] [stderr] | [INFO] [stderr] 114 | let currentangle = 2. * std::f32::consts::PI *0.3245251*(self.disco_state+5.+i as f32); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.324_525_1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/config/mod.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | numret [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/config/mod.rs:56:22 [INFO] [stderr] | [INFO] [stderr] 56 | let numret = data.num_leds_for_pole; [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 import: `std` [INFO] [stderr] --> src/main.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | use std; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:300:35 [INFO] [stderr] | [INFO] [stderr] 300 | std::thread::sleep_ms(1000000) [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> src/main.rs:300:13 [INFO] [stderr] | [INFO] [stderr] 300 | std::thread::sleep_ms(1000000) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> src/main.rs:300:13 [INFO] [stderr] | [INFO] [stderr] 300 | std::thread::sleep_ms(1000000) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/animations/idle.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | for i in 0..5 { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/animations/idle.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | for i in 0..5 { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `current_pixels` [INFO] [stderr] --> src/animations/idle.rs:181:13 [INFO] [stderr] | [INFO] [stderr] 181 | let current_pixels = (8.0f32*(curpos*std::f32::consts::PI).sin()) as usize; //if curpos <= 0.5 { (10.0*2.0* curpos) as usize } else { (10.0*2.0* (1.0-curpos)) as usize } ; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_current_pixels` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `old_touch_level` [INFO] [stderr] --> src/animations/mod.rs:331:17 [INFO] [stderr] | [INFO] [stderr] 331 | let old_touch_level = pole.touch_level; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using `_old_touch_level` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `a` [INFO] [stderr] --> src/opc.rs:51:70 [INFO] [stderr] | [INFO] [stderr] 51 | fn set_color_rgba(&mut self, lednum: usize, r: u8, g: u8, b: u8, a: u8) { [INFO] [stderr] | ^ help: consider using `_a` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/osc.rs:133:29 [INFO] [stderr] | [INFO] [stderr] 133 | fn add_riser(&mut self, i: usize) -> Option { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/osc.rs:150:32 [INFO] [stderr] | [INFO] [stderr] 150 | fn remove_riser(&mut self, i: usize) -> Option { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/osc.rs:225:21 [INFO] [stderr] | [INFO] [stderr] 225 | Err(e) => return Err(std::io::Error::new(std::io::ErrorKind::InvalidInput, "invalid packet")), [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/osc.rs:255:17 [INFO] [stderr] | [INFO] [stderr] 255 | for i in 0..3{ [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `poleindex` [INFO] [stderr] --> src/osc.rs:264:34 [INFO] [stderr] | [INFO] [stderr] 264 | pub fn send_event(&mut self, poleindex: usize, states: &[OSCEvent]) {} [INFO] [stderr] | ^^^^^^^^^ help: consider using `_poleindex` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `states` [INFO] [stderr] --> src/osc.rs:264:52 [INFO] [stderr] | [INFO] [stderr] 264 | pub fn send_event(&mut self, poleindex: usize, states: &[OSCEvent]) {} [INFO] [stderr] | ^^^^^^ help: consider using `_states` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `disco` [INFO] [stderr] --> src/events.rs:22:17 [INFO] [stderr] | [INFO] [stderr] 22 | let mut disco = false; [INFO] [stderr] | ^^^^^ help: consider using `_disco` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `src` [INFO] [stderr] --> src/events.rs:290:23 [INFO] [stderr] | [INFO] [stderr] 290 | let (amt, src) = res.unwrap(); [INFO] [stderr] | ^^^ help: consider using `_src` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `src` [INFO] [stderr] --> src/config/mod.rs:83:23 [INFO] [stderr] | [INFO] [stderr] 83 | let (amt, src) = res.unwrap(); [INFO] [stderr] | ^^^ help: consider using `_src` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `current_pixels` [INFO] [stderr] --> src/animations/idle.rs:181:13 [INFO] [stderr] | [INFO] [stderr] 181 | let current_pixels = (8.0f32*(curpos*std::f32::consts::PI).sin()) as usize; //if curpos <= 0.5 { (10.0*2.0* curpos) as usize } else { (10.0*2.0* (1.0-curpos)) as usize } ; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_current_pixels` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `old_touch_level` [INFO] [stderr] --> src/animations/mod.rs:331:17 [INFO] [stderr] | [INFO] [stderr] 331 | let old_touch_level = pole.touch_level; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using `_old_touch_level` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `a` [INFO] [stderr] --> src/opc.rs:51:70 [INFO] [stderr] | [INFO] [stderr] 51 | fn set_color_rgba(&mut self, lednum: usize, r: u8, g: u8, b: u8, a: u8) { [INFO] [stderr] | ^ help: consider using `_a` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/osc.rs:133:29 [INFO] [stderr] | [INFO] [stderr] 133 | fn add_riser(&mut self, i: usize) -> Option { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/osc.rs:150:32 [INFO] [stderr] | [INFO] [stderr] 150 | fn remove_riser(&mut self, i: usize) -> Option { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/osc.rs:225:21 [INFO] [stderr] | [INFO] [stderr] 225 | Err(e) => return Err(std::io::Error::new(std::io::ErrorKind::InvalidInput, "invalid packet")), [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/osc.rs:255:17 [INFO] [stderr] | [INFO] [stderr] 255 | for i in 0..3{ [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `poleindex` [INFO] [stderr] --> src/osc.rs:264:34 [INFO] [stderr] | [INFO] [stderr] 264 | pub fn send_event(&mut self, poleindex: usize, states: &[OSCEvent]) {} [INFO] [stderr] | ^^^^^^^^^ help: consider using `_poleindex` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `states` [INFO] [stderr] --> src/osc.rs:264:52 [INFO] [stderr] | [INFO] [stderr] 264 | pub fn send_event(&mut self, poleindex: usize, states: &[OSCEvent]) {} [INFO] [stderr] | ^^^^^^ help: consider using `_states` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `disco` [INFO] [stderr] --> src/events.rs:22:17 [INFO] [stderr] | [INFO] [stderr] 22 | let mut disco = false; [INFO] [stderr] | ^^^^^ help: consider using `_disco` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `src` [INFO] [stderr] --> src/events.rs:290:23 [INFO] [stderr] | [INFO] [stderr] 290 | let (amt, src) = res.unwrap(); [INFO] [stderr] | ^^^ help: consider using `_src` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `src` [INFO] [stderr] --> src/config/mod.rs:83:23 [INFO] [stderr] | [INFO] [stderr] 83 | let (amt, src) = res.unwrap(); [INFO] [stderr] | ^^^ help: consider using `_src` instead [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:453:10 [INFO] [stderr] | [INFO] [stderr] 453 | fn clear(mut poles: &mut [Pole]) { [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:453:10 [INFO] [stderr] | [INFO] [stderr] 453 | fn clear(mut poles: &mut [Pole]) { [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/osc.rs:240:13 [INFO] [stderr] | [INFO] [stderr] 240 | let mut socket = match std::net::UdpSocket::bind("0.0.0.0:0") { [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/events.rs:19:30 [INFO] [stderr] | [INFO] [stderr] 19 | fn get_events(&mut self, mut sender: std::sync::mpsc::Sender) { [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/events.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | let mut disco = false; [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/osc.rs:240:13 [INFO] [stderr] | [INFO] [stderr] 240 | let mut socket = match std::net::UdpSocket::bind("0.0.0.0:0") { [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/events.rs:19:30 [INFO] [stderr] | [INFO] [stderr] 19 | fn get_events(&mut self, mut sender: std::sync::mpsc::Sender) { [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/events.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | let mut disco = false; [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/events.rs:280:30 [INFO] [stderr] | [INFO] [stderr] 280 | fn get_events(&mut self, mut sender: std::sync::mpsc::Sender) { [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/events.rs:280:30 [INFO] [stderr] | [INFO] [stderr] 280 | fn get_events(&mut self, mut sender: std::sync::mpsc::Sender) { [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/config/mod.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | let mut socket = UdpSocket::bind("0.0.0.0:8134").expect("this must work"); [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/config/mod.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | let mut socket = UdpSocket::bind("0.0.0.0:8134").expect("this must work"); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Led` [INFO] [stderr] --> src/pixels/mod.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | pub struct Led { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `PixelArray` [INFO] [stderr] --> src/pixels/mod.rs:51:1 [INFO] [stderr] | [INFO] [stderr] 51 | pub struct PixelArray { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_color` [INFO] [stderr] --> src/pixels/mod.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn set_color>(&mut self, lednum: usize, color: C) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `LED_ANIM_DURATION` [INFO] [stderr] --> src/animations/idle.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | const LED_ANIM_DURATION: u64 = 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `cyclic_update` [INFO] [stderr] --> src/animations/idle.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | pub fn cyclic_update(&mut self, delta: std::time::Duration) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `CircleAnim` [INFO] [stderr] --> src/animations/idle.rs:52:1 [INFO] [stderr] | [INFO] [stderr] 52 | pub struct CircleAnim { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/animations/idle.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | pub fn new(color: palette::Hsl, total_time: std::time::Duration) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `LED_ANIM_DURATION` [INFO] [stderr] --> src/animations/mod.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | const LED_ANIM_DURATION: u64 = 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `current` [INFO] [stderr] --> src/animations/mod.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn current(&self) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `transition` [INFO] [stderr] --> src/animations/mod.rs:394:5 [INFO] [stderr] | [INFO] [stderr] 394 | / fn transition(&self, [INFO] [stderr] 395 | | i: usize, [INFO] [stderr] 396 | | generatedevents: &mut Vec, [INFO] [stderr] 397 | | old_state: &super::PoleState, [INFO] [stderr] ... | [INFO] [stderr] 463 | | */ [INFO] [stderr] 464 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `ACHIVE_EVENT_1` [INFO] [stderr] --> src/osc.rs:33:1 [INFO] [stderr] | [INFO] [stderr] 33 | const ACHIVE_EVENT_1: &str = "/achive/1"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `ACHIVE_EVENT_2` [INFO] [stderr] --> src/osc.rs:34:1 [INFO] [stderr] | [INFO] [stderr] 34 | const ACHIVE_EVENT_2: &str = "/achive/2"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `ACHIVE_EVENT_3` [INFO] [stderr] --> src/osc.rs:35:1 [INFO] [stderr] | [INFO] [stderr] 35 | const ACHIVE_EVENT_3: &str = "/achive/3"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `ACHIVE_EVENT_4` [INFO] [stderr] --> src/osc.rs:36:1 [INFO] [stderr] | [INFO] [stderr] 36 | const ACHIVE_EVENT_4: &str = "/achive/4"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `sconnectudp` [INFO] [stderr] --> src/osc.rs:239:5 [INFO] [stderr] | [INFO] [stderr] 239 | fn sconnectudp(addr: &str, rx: &mut std::sync::mpsc::Receiver) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `send_event` [INFO] [stderr] --> src/osc.rs:264:5 [INFO] [stderr] | [INFO] [stderr] 264 | pub fn send_event(&mut self, poleindex: usize, states: &[OSCEvent]) {} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Led` [INFO] [stderr] --> src/pixels/mod.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | pub struct Led { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `PixelArray` [INFO] [stderr] --> src/pixels/mod.rs:51:1 [INFO] [stderr] | [INFO] [stderr] 51 | pub struct PixelArray { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_color` [INFO] [stderr] --> src/pixels/mod.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn set_color>(&mut self, lednum: usize, color: C) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `LED_ANIM_DURATION` [INFO] [stderr] --> src/animations/idle.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | const LED_ANIM_DURATION: u64 = 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `cyclic_update` [INFO] [stderr] --> src/animations/idle.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | pub fn cyclic_update(&mut self, delta: std::time::Duration) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `CircleAnim` [INFO] [stderr] --> src/animations/idle.rs:52:1 [INFO] [stderr] | [INFO] [stderr] 52 | pub struct CircleAnim { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/animations/idle.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | pub fn new(color: palette::Hsl, total_time: std::time::Duration) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `LED_ANIM_DURATION` [INFO] [stderr] --> src/animations/mod.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | const LED_ANIM_DURATION: u64 = 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `current` [INFO] [stderr] --> src/animations/mod.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn current(&self) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `transition` [INFO] [stderr] --> src/animations/mod.rs:394:5 [INFO] [stderr] | [INFO] [stderr] 394 | / fn transition(&self, [INFO] [stderr] 395 | | i: usize, [INFO] [stderr] 396 | | generatedevents: &mut Vec, [INFO] [stderr] 397 | | old_state: &super::PoleState, [INFO] [stderr] ... | [INFO] [stderr] 463 | | */ [INFO] [stderr] 464 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `ACHIVE_EVENT_1` [INFO] [stderr] --> src/osc.rs:33:1 [INFO] [stderr] | [INFO] [stderr] 33 | const ACHIVE_EVENT_1: &str = "/achive/1"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `ACHIVE_EVENT_2` [INFO] [stderr] --> src/osc.rs:34:1 [INFO] [stderr] | [INFO] [stderr] 34 | const ACHIVE_EVENT_2: &str = "/achive/2"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `ACHIVE_EVENT_3` [INFO] [stderr] --> src/osc.rs:35:1 [INFO] [stderr] | [INFO] [stderr] 35 | const ACHIVE_EVENT_3: &str = "/achive/3"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `ACHIVE_EVENT_4` [INFO] [stderr] --> src/osc.rs:36:1 [INFO] [stderr] | [INFO] [stderr] 36 | const ACHIVE_EVENT_4: &str = "/achive/4"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `sconnectudp` [INFO] [stderr] --> src/osc.rs:239:5 [INFO] [stderr] | [INFO] [stderr] 239 | fn sconnectudp(addr: &str, rx: &mut std::sync::mpsc::Receiver) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `send_event` [INFO] [stderr] --> src/osc.rs:264:5 [INFO] [stderr] | [INFO] [stderr] 264 | pub fn send_event(&mut self, poleindex: usize, states: &[OSCEvent]) {} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/pixels/mod.rs:97:22 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn transform(&self, r: u8, g: u8, b: u8) -> (u8, u8, u8) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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/animations/idle.rs:43:20 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn current(&self) -> f32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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 argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/animations/idle.rs:47:20 [INFO] [stderr] | [INFO] [stderr] 47 | pub fn is_done(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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 argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/pixels/mod.rs:97:22 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn transform(&self, r: u8, g: u8, b: u8) -> (u8, u8, u8) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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] error: this `if` has identical blocks [INFO] [stderr] --> src/animations/idle.rs:85:44 [INFO] [stderr] | [INFO] [stderr] 85 | } else if i == circl_index { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 86 | | *pixel = self.color; [INFO] [stderr] 87 | | } else if i == (circl_index + 1) { [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/animations/idle.rs:83:43 [INFO] [stderr] | [INFO] [stderr] 83 | if (i + 1) == circl_index { [INFO] [stderr] | ___________________________________________^ [INFO] [stderr] 84 | | *pixel = self.color; [INFO] [stderr] 85 | | } else if i == circl_index { [INFO] [stderr] | |_________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/animations/idle.rs:43:20 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn current(&self) -> f32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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 argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/animations/idle.rs:47:20 [INFO] [stderr] | [INFO] [stderr] 47 | pub fn is_done(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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] error: this `if` has identical blocks [INFO] [stderr] --> src/animations/idle.rs:85:44 [INFO] [stderr] | [INFO] [stderr] 85 | } else if i == circl_index { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 86 | | *pixel = self.color; [INFO] [stderr] 87 | | } else if i == (circl_index + 1) { [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/animations/idle.rs:83:43 [INFO] [stderr] | [INFO] [stderr] 83 | if (i + 1) == circl_index { [INFO] [stderr] | ___________________________________________^ [INFO] [stderr] 84 | | *pixel = self.color; [INFO] [stderr] 85 | | } else if i == circl_index { [INFO] [stderr] | |_________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/animations/mod.rs:49:20 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn current(&self) -> f32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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 argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/animations/mod.rs:53:20 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn is_done(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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 argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/animations/mod.rs:49:20 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn current(&self) -> f32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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 argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/animations/mod.rs:53:20 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn is_done(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: the loop variable `i` is only used to index `poles`. [INFO] [stderr] --> src/animations/mod.rs:199:18 [INFO] [stderr] | [INFO] [stderr] 199 | for i in 0..NUM_POLES { [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] 199 | for in poles.iter_mut().take(NUM_POLES) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `poles`. [INFO] [stderr] --> src/animations/mod.rs:199:18 [INFO] [stderr] | [INFO] [stderr] 199 | for i in 0..NUM_POLES { [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] 199 | for in poles.iter_mut().take(NUM_POLES) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/animations/mod.rs:298:36 [INFO] [stderr] | [INFO] [stderr] 298 | let is_exploding = poles[i].level == 1. && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(poles[i].level - 1.).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/animations/mod.rs:298:36 [INFO] [stderr] | [INFO] [stderr] 298 | let is_exploding = poles[i].level == 1. && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/animations/mod.rs:299:58 [INFO] [stderr] | [INFO] [stderr] 299 | others.iter().any(|i| poles[i].level == 1.); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(poles[i].level - 1.).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/animations/mod.rs:299:58 [INFO] [stderr] | [INFO] [stderr] 299 | others.iter().any(|i| poles[i].level == 1.); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/animations/mod.rs:353:58 [INFO] [stderr] | [INFO] [stderr] 353 | } else if old_level < 1. && pole.level >= 1. { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 354 | | // TODO: set high touch / connected [INFO] [stderr] 355 | | // this only happens when touched, so need to send regular touch off first. [INFO] [stderr] 356 | | [INFO] [stderr] 357 | | // TODO: send midi! [INFO] [stderr] 358 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/animations/mod.rs:347:51 [INFO] [stderr] | [INFO] [stderr] 347 | if old_level >= 1. && pole.level < 1. { [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 348 | | // TODO: set low touch [INFO] [stderr] 349 | | // stop riser. [INFO] [stderr] 350 | | // this only happens when not touched, so need to high regular touch off. [INFO] [stderr] 351 | | [INFO] [stderr] 352 | | // TODO: send midi! [INFO] [stderr] 353 | | } else if old_level < 1. && pole.level >= 1. { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/animations/mod.rs:298:36 [INFO] [stderr] | [INFO] [stderr] 298 | let is_exploding = poles[i].level == 1. && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(poles[i].level - 1.).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/animations/mod.rs:298:36 [INFO] [stderr] | [INFO] [stderr] 298 | let is_exploding = poles[i].level == 1. && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/opc.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | Self::work(&receiver, &address); [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/animations/mod.rs:299:58 [INFO] [stderr] | [INFO] [stderr] 299 | others.iter().any(|i| poles[i].level == 1.); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(poles[i].level - 1.).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/animations/mod.rs:299:58 [INFO] [stderr] | [INFO] [stderr] 299 | others.iter().any(|i| poles[i].level == 1.); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/animations/mod.rs:353:58 [INFO] [stderr] | [INFO] [stderr] 353 | } else if old_level < 1. && pole.level >= 1. { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 354 | | // TODO: set high touch / connected [INFO] [stderr] 355 | | // this only happens when touched, so need to send regular touch off first. [INFO] [stderr] 356 | | [INFO] [stderr] 357 | | // TODO: send midi! [INFO] [stderr] 358 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/animations/mod.rs:347:51 [INFO] [stderr] | [INFO] [stderr] 347 | if old_level >= 1. && pole.level < 1. { [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 348 | | // TODO: set low touch [INFO] [stderr] 349 | | // stop riser. [INFO] [stderr] 350 | | // this only happens when not touched, so need to high regular touch off. [INFO] [stderr] 351 | | [INFO] [stderr] 352 | | // TODO: send midi! [INFO] [stderr] 353 | | } else if old_level < 1. && pole.level >= 1. { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/opc.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | Self::work(&receiver, &address); [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: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/osc.rs:40:29 [INFO] [stderr] | [INFO] [stderr] 40 | const Touch = 1 << 0, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/osc.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | self.remove_riser(i).map(|x| events.push(x)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(x) = self.remove_riser(i) { events.push(x) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/osc.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | self.add_riser(i).map(|x| events.push(x)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(x) = self.add_riser(i) { events.push(x) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/osc.rs:127:9 [INFO] [stderr] | [INFO] [stderr] 127 | self.sender.send(packet); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/osc.rs:138:12 [INFO] [stderr] | [INFO] [stderr] 138 | if risers <= 0 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using risers == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/osc.rs:155:12 [INFO] [stderr] | [INFO] [stderr] 155 | if risers <= 0 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using risers == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: method `tcpSend` should have a snake case name such as `tcp_send` [INFO] [stderr] --> src/osc.rs:221:5 [INFO] [stderr] | [INFO] [stderr] 221 | / fn tcpSend(stream :&mut std::net::TcpStream , msg : rosc::OscPacket) -> std::io::Result<()> { [INFO] [stderr] 222 | | [INFO] [stderr] 223 | | let data = match rosc::encoder::encode(&msg) { [INFO] [stderr] 224 | | Ok(data) => data, [INFO] [stderr] ... | [INFO] [stderr] 236 | | stream.write_all(&data) [INFO] [stderr] 237 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/osc.rs:266:19 [INFO] [stderr] | [INFO] [stderr] 266 | fn to_osc_msg(states: &[OSCEvent]) -> rosc::OscPacket { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/events.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | / let mut stop = false; [INFO] [stderr] 49 | | if words.len() == 3 { [INFO] [stderr] 50 | | words.remove(0); [INFO] [stderr] 51 | | stop = true; [INFO] [stderr] 52 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let stop = if words.len() == 3 { ..; true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/osc.rs:40:29 [INFO] [stderr] | [INFO] [stderr] 40 | const Touch = 1 << 0, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/events.rs:30:30 [INFO] [stderr] | [INFO] [stderr] 30 | let mode = match buffer.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `buffer` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/events.rs:37:17 [INFO] [stderr] | [INFO] [stderr] 37 | sender.send(Events::ModeChanged(mode)); [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/events.rs:61:21 [INFO] [stderr] | [INFO] [stderr] 61 | sender.send(Events::Start(EventTypes::Connect(p1, p2))); [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/events.rs:65:21 [INFO] [stderr] | [INFO] [stderr] 65 | sender.send(Events::Stop(EventTypes::Connect(p1, p2))); [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/events.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | sender.send(Events::Reset); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/events.rs:184:33 [INFO] [stderr] | [INFO] [stderr] 184 | if line.starts_with("#") { [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: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/osc.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | self.remove_riser(i).map(|x| events.push(x)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(x) = self.remove_riser(i) { events.push(x) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/osc.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | self.add_riser(i).map(|x| events.push(x)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(x) = self.add_riser(i) { events.push(x) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/osc.rs:127:9 [INFO] [stderr] | [INFO] [stderr] 127 | self.sender.send(packet); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/osc.rs:138:12 [INFO] [stderr] | [INFO] [stderr] 138 | if risers <= 0 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using risers == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/osc.rs:155:12 [INFO] [stderr] | [INFO] [stderr] 155 | if risers <= 0 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using risers == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/events.rs:245:33 [INFO] [stderr] | [INFO] [stderr] 245 | let event = match events[i][j] { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 246 | | false => { [INFO] [stderr] 247 | | debug!("Not Connected({},{})", i, j); [INFO] [stderr] 248 | | Events::Stop(EventTypes::Connect(i, j)) [INFO] [stderr] ... | [INFO] [stderr] 253 | | } [INFO] [stderr] 254 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 245 | let event = if events[i][j] { [INFO] [stderr] 246 | debug!("Connect({},{})", i, j); [INFO] [stderr] 247 | Events::Start(EventTypes::Connect(i, j)) [INFO] [stderr] 248 | } else { [INFO] [stderr] 249 | debug!("Not Connected({},{})", i, j); [INFO] [stderr] 250 | Events::Stop(EventTypes::Connect(i, j)) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/events.rs:255:21 [INFO] [stderr] | [INFO] [stderr] 255 | sender.send(event); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: method `tcpSend` should have a snake case name such as `tcp_send` [INFO] [stderr] --> src/osc.rs:221:5 [INFO] [stderr] | [INFO] [stderr] 221 | / fn tcpSend(stream :&mut std::net::TcpStream , msg : rosc::OscPacket) -> std::io::Result<()> { [INFO] [stderr] 222 | | [INFO] [stderr] 223 | | let data = match rosc::encoder::encode(&msg) { [INFO] [stderr] 224 | | Ok(data) => data, [INFO] [stderr] ... | [INFO] [stderr] 236 | | stream.write_all(&data) [INFO] [stderr] 237 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/osc.rs:266:19 [INFO] [stderr] | [INFO] [stderr] 266 | fn to_osc_msg(states: &[OSCEvent]) -> rosc::OscPacket { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/events.rs:352:30 [INFO] [stderr] | [INFO] [stderr] 352 | let packet = match &args[0] { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 353 | | &rosc::OscType::Blob(ref packet) => packet, [INFO] [stderr] 354 | | _ => {warn!("unexpected pole_touch packet {:?}", args[0]); return;} [INFO] [stderr] 355 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 352 | let packet = match args[0] { [INFO] [stderr] 353 | rosc::OscType::Blob(ref packet) => packet, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/events.rs:377:39 [INFO] [stderr] | [INFO] [stderr] 377 | currentstate[i] = if ((bitmap[i>>3] >> (i&0b111)) & 0b1) != 0 {true} else {false}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `((bitmap[i>>3] >> (i&0b111)) & 0b1) != 0` [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] [INFO] [stderr] warning: the loop variable `j` is used to index `currentstate` [INFO] [stderr] --> src/events.rs:382:22 [INFO] [stderr] | [INFO] [stderr] 382 | for j in 0..NUM_POLES { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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] 382 | for (j, ) in currentstate.iter().enumerate().take(NUM_POLES) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/events.rs:405:17 [INFO] [stderr] | [INFO] [stderr] 405 | sender.send(event); [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/config/mod.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | sender.send(Events::ConfigChanged); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/events.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | / let mut stop = false; [INFO] [stderr] 49 | | if words.len() == 3 { [INFO] [stderr] 50 | | words.remove(0); [INFO] [stderr] 51 | | stop = true; [INFO] [stderr] 52 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let stop = if words.len() == 3 { ..; true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/events.rs:30:30 [INFO] [stderr] | [INFO] [stderr] 30 | let mode = match buffer.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `buffer` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/events.rs:37:17 [INFO] [stderr] | [INFO] [stderr] 37 | sender.send(Events::ModeChanged(mode)); [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/events.rs:61:21 [INFO] [stderr] | [INFO] [stderr] 61 | sender.send(Events::Start(EventTypes::Connect(p1, p2))); [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/events.rs:65:21 [INFO] [stderr] | [INFO] [stderr] 65 | sender.send(Events::Stop(EventTypes::Connect(p1, p2))); [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/config/mod.rs:143:17 [INFO] [stderr] | [INFO] [stderr] 143 | sender.send(Events::ConfigChanged); [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/config/mod.rs:151:25 [INFO] [stderr] | [INFO] [stderr] 151 | sender.send(Events::ModeChanged(Modes::Flower)); [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/config/mod.rs:153:25 [INFO] [stderr] | [INFO] [stderr] 153 | sender.send(Events::ModeChanged(Modes::Regular)); [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/config/mod.rs:160:17 [INFO] [stderr] | [INFO] [stderr] 160 | sender.send(Events::ModeChanged(Modes::Disco)); [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/config/mod.rs:164:17 [INFO] [stderr] | [INFO] [stderr] 164 | sender.send(Events::ModeChanged(Modes::Regular)); [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/config/mod.rs:168:17 [INFO] [stderr] | [INFO] [stderr] 168 | sender.send(Events::ModeChanged(Modes::Flower)); [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/config/mod.rs:171:17 [INFO] [stderr] | [INFO] [stderr] 171 | sender.send(Events::SaveConfig); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/config/mod.rs:177:16 [INFO] [stderr] | [INFO] [stderr] 177 | fn to_bool(t: &rosc::OscType) -> Option { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/config/mod.rs:179:45 [INFO] [stderr] | [INFO] [stderr] 179 | rosc::OscType::Int(num) => Some(if num != 0 { true } else { false }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `num != 0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/config/mod.rs:180:47 [INFO] [stderr] | [INFO] [stderr] 180 | rosc::OscType::Float(num) => Some(if num != 0.0 { true } else { false }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `num != 0.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/events.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | sender.send(Events::Reset); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/events.rs:184:33 [INFO] [stderr] | [INFO] [stderr] 184 | if line.starts_with("#") { [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/events.rs:245:33 [INFO] [stderr] | [INFO] [stderr] 245 | let event = match events[i][j] { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 246 | | false => { [INFO] [stderr] 247 | | debug!("Not Connected({},{})", i, j); [INFO] [stderr] 248 | | Events::Stop(EventTypes::Connect(i, j)) [INFO] [stderr] ... | [INFO] [stderr] 253 | | } [INFO] [stderr] 254 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 245 | let event = if events[i][j] { [INFO] [stderr] 246 | debug!("Connect({},{})", i, j); [INFO] [stderr] 247 | Events::Start(EventTypes::Connect(i, j)) [INFO] [stderr] 248 | } else { [INFO] [stderr] 249 | debug!("Not Connected({},{})", i, j); [INFO] [stderr] 250 | Events::Stop(EventTypes::Connect(i, j)) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:206:10 [INFO] [stderr] | [INFO] [stderr] 206 | .unwrap_or(std::env::var("DEVICE").unwrap_or(String::new())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| std::env::var("DEVICE").unwrap_or(String::new()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/main.rs:206:20 [INFO] [stderr] | [INFO] [stderr] 206 | .unwrap_or(std::env::var("DEVICE").unwrap_or(String::new())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `std::env::var("DEVICE").unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:209:10 [INFO] [stderr] | [INFO] [stderr] 209 | .unwrap_or(std::env::var("OSC_SERVER").unwrap_or(String::new())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| std::env::var("OSC_SERVER").unwrap_or(String::new()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/main.rs:209:20 [INFO] [stderr] | [INFO] [stderr] 209 | .unwrap_or(std::env::var("OSC_SERVER").unwrap_or(String::new())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `std::env::var("OSC_SERVER").unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:212:10 [INFO] [stderr] | [INFO] [stderr] 212 | .unwrap_or(std::env::var("OPC_SERVER").unwrap_or(String::new())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| std::env::var("OPC_SERVER").unwrap_or(String::new()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/main.rs:212:20 [INFO] [stderr] | [INFO] [stderr] 212 | .unwrap_or(std::env::var("OPC_SERVER").unwrap_or(String::new())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `std::env::var("OPC_SERVER").unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: constant `h_shift` should have an upper case name such as `H_SHIFT` [INFO] [stderr] --> src/main.rs:225:5 [INFO] [stderr] | [INFO] [stderr] 225 | const h_shift : f32 = (2.0+0.5)*360.0/(NUM_POLES as f32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `partition` should have an upper case name such as `PARTITION` [INFO] [stderr] --> src/main.rs:226:5 [INFO] [stderr] | [INFO] [stderr] 226 | const partition : f32 = 2_f32 * std::f32::consts::PI / (NUM_POLES as f32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/main.rs:230:14 [INFO] [stderr] | [INFO] [stderr] 230 | .map(|x| Pole::new(x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove closure as shown: `Pole::new` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/events.rs:255:21 [INFO] [stderr] | [INFO] [stderr] 255 | sender.send(event); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:359:55 [INFO] [stderr] | [INFO] [stderr] 359 | let mut newtouch = self.touches[pole1][pole2].unwrap_or(TouchState::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(TouchState::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/events.rs:352:30 [INFO] [stderr] | [INFO] [stderr] 352 | let packet = match &args[0] { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 353 | | &rosc::OscType::Blob(ref packet) => packet, [INFO] [stderr] 354 | | _ => {warn!("unexpected pole_touch packet {:?}", args[0]); return;} [INFO] [stderr] 355 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 352 | let packet = match args[0] { [INFO] [stderr] 353 | rosc::OscType::Blob(ref packet) => packet, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/events.rs:377:39 [INFO] [stderr] | [INFO] [stderr] 377 | currentstate[i] = if ((bitmap[i>>3] >> (i&0b111)) & 0b1) != 0 {true} else {false}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `((bitmap[i>>3] >> (i&0b111)) & 0b1) != 0` [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] [INFO] [stderr] warning: the loop variable `j` is used to index `currentstate` [INFO] [stderr] --> src/events.rs:382:22 [INFO] [stderr] | [INFO] [stderr] 382 | for j in 0..NUM_POLES { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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] 382 | for (j, ) in currentstate.iter().enumerate().take(NUM_POLES) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/events.rs:405:17 [INFO] [stderr] | [INFO] [stderr] 405 | sender.send(event); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/config/mod.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | sender.send(Events::ConfigChanged); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: Could not compile `connect`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/config/mod.rs:143:17 [INFO] [stderr] | [INFO] [stderr] 143 | sender.send(Events::ConfigChanged); [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/config/mod.rs:151:25 [INFO] [stderr] | [INFO] [stderr] 151 | sender.send(Events::ModeChanged(Modes::Flower)); [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/config/mod.rs:153:25 [INFO] [stderr] | [INFO] [stderr] 153 | sender.send(Events::ModeChanged(Modes::Regular)); [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/config/mod.rs:160:17 [INFO] [stderr] | [INFO] [stderr] 160 | sender.send(Events::ModeChanged(Modes::Disco)); [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/config/mod.rs:164:17 [INFO] [stderr] | [INFO] [stderr] 164 | sender.send(Events::ModeChanged(Modes::Regular)); [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/config/mod.rs:168:17 [INFO] [stderr] | [INFO] [stderr] 168 | sender.send(Events::ModeChanged(Modes::Flower)); [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/config/mod.rs:171:17 [INFO] [stderr] | [INFO] [stderr] 171 | sender.send(Events::SaveConfig); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/config/mod.rs:177:16 [INFO] [stderr] | [INFO] [stderr] 177 | fn to_bool(t: &rosc::OscType) -> Option { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/config/mod.rs:179:45 [INFO] [stderr] | [INFO] [stderr] 179 | rosc::OscType::Int(num) => Some(if num != 0 { true } else { false }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `num != 0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/config/mod.rs:180:47 [INFO] [stderr] | [INFO] [stderr] 180 | rosc::OscType::Float(num) => Some(if num != 0.0 { true } else { false }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `num != 0.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:206:10 [INFO] [stderr] | [INFO] [stderr] 206 | .unwrap_or(std::env::var("DEVICE").unwrap_or(String::new())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| std::env::var("DEVICE").unwrap_or(String::new()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/main.rs:206:20 [INFO] [stderr] | [INFO] [stderr] 206 | .unwrap_or(std::env::var("DEVICE").unwrap_or(String::new())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `std::env::var("DEVICE").unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:209:10 [INFO] [stderr] | [INFO] [stderr] 209 | .unwrap_or(std::env::var("OSC_SERVER").unwrap_or(String::new())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| std::env::var("OSC_SERVER").unwrap_or(String::new()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/main.rs:209:20 [INFO] [stderr] | [INFO] [stderr] 209 | .unwrap_or(std::env::var("OSC_SERVER").unwrap_or(String::new())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `std::env::var("OSC_SERVER").unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:212:10 [INFO] [stderr] | [INFO] [stderr] 212 | .unwrap_or(std::env::var("OPC_SERVER").unwrap_or(String::new())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| std::env::var("OPC_SERVER").unwrap_or(String::new()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/main.rs:212:20 [INFO] [stderr] | [INFO] [stderr] 212 | .unwrap_or(std::env::var("OPC_SERVER").unwrap_or(String::new())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `std::env::var("OPC_SERVER").unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: constant `h_shift` should have an upper case name such as `H_SHIFT` [INFO] [stderr] --> src/main.rs:225:5 [INFO] [stderr] | [INFO] [stderr] 225 | const h_shift : f32 = (2.0+0.5)*360.0/(NUM_POLES as f32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `partition` should have an upper case name such as `PARTITION` [INFO] [stderr] --> src/main.rs:226:5 [INFO] [stderr] | [INFO] [stderr] 226 | const partition : f32 = 2_f32 * std::f32::consts::PI / (NUM_POLES as f32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/main.rs:230:14 [INFO] [stderr] | [INFO] [stderr] 230 | .map(|x| Pole::new(x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove closure as shown: `Pole::new` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:359:55 [INFO] [stderr] | [INFO] [stderr] 359 | let mut newtouch = self.touches[pole1][pole2].unwrap_or(TouchState::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(TouchState::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `connect`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "b591c41d7e553d532e82ffb0e35a13b1b9142f5299685022d38d6e2dd7c592dd"` [INFO] running `"docker" "rm" "-f" "b591c41d7e553d532e82ffb0e35a13b1b9142f5299685022d38d6e2dd7c592dd"` [INFO] [stdout] b591c41d7e553d532e82ffb0e35a13b1b9142f5299685022d38d6e2dd7c592dd