[INFO] updating cached repository mdsteele/tachyomancer [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/mdsteele/tachyomancer [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/mdsteele/tachyomancer" "work/ex/clippy-test-run/sources/stable/gh/mdsteele/tachyomancer"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/mdsteele/tachyomancer'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/mdsteele/tachyomancer" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mdsteele/tachyomancer"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mdsteele/tachyomancer'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] f0b363dc7a4d785343c732ffb4bf04e1f702b5a1 [INFO] sha for GitHub repo mdsteele/tachyomancer: f0b363dc7a4d785343c732ffb4bf04e1f702b5a1 [INFO] validating manifest of mdsteele/tachyomancer 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 mdsteele/tachyomancer 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 mdsteele/tachyomancer [INFO] finished frobbing mdsteele/tachyomancer [INFO] frobbed toml for mdsteele/tachyomancer written to work/ex/clippy-test-run/sources/stable/gh/mdsteele/tachyomancer/Cargo.toml [INFO] started frobbing mdsteele/tachyomancer [INFO] finished frobbing mdsteele/tachyomancer [INFO] frobbed toml for mdsteele/tachyomancer written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mdsteele/tachyomancer/Cargo.toml [INFO] crate mdsteele/tachyomancer 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 mdsteele/tachyomancer 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/mdsteele/tachyomancer:/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] 450c5da77372c0a2da4159cdee2bed1873cb7f2871969cbdf6cb3c59f27d153a [INFO] running `"docker" "start" "-a" "450c5da77372c0a2da4159cdee2bed1873cb7f2871969cbdf6cb3c59f27d153a"` [INFO] [stderr] Compiling adler32 v1.0.3 [INFO] [stderr] Compiling stb_truetype v0.2.4 [INFO] [stderr] Compiling sdl2-sys v0.31.0 [INFO] [stderr] Compiling nsvg v0.5.0 [INFO] [stderr] Checking deflate v0.7.19 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Compiling num-integer v0.1.39 [INFO] [stderr] Compiling approx v0.3.0 [INFO] [stderr] Compiling ordered-float v1.0.1 [INFO] [stderr] Checking pathfinding v1.1.0 [INFO] [stderr] Compiling gl_generator v0.9.0 [INFO] [stderr] Checking cgmath v0.16.1 [INFO] [stderr] Compiling inflate v0.4.3 [INFO] [stderr] Compiling num-iter v0.1.37 [INFO] [stderr] Compiling rusttype v0.7.2 [INFO] [stderr] Checking png v0.13.1 [INFO] [stderr] Compiling gl v0.10.0 [INFO] [stderr] Checking sdl2 v0.31.0 [INFO] [stderr] Compiling icns v0.3.0 [INFO] [stderr] Compiling tachyomancer v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/tachy/font/mod.rs:29:1 [INFO] [stderr] | [INFO] [stderr] 29 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deprecated_cfg_attr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/tachy/font/mod.rs:38:1 [INFO] [stderr] | [INFO] [stderr] 38 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/tachy/texture/mod.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/tachy/texture/mod.rs:28:1 [INFO] [stderr] | [INFO] [stderr] 28 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/tachy/view/wire.rs:34:1 [INFO] [stderr] | [INFO] [stderr] 34 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/tachy/view/wire.rs:45:1 [INFO] [stderr] | [INFO] [stderr] 45 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/tachy/font/mod.rs:29:1 [INFO] [stderr] | [INFO] [stderr] 29 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deprecated_cfg_attr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/tachy/font/mod.rs:38:1 [INFO] [stderr] | [INFO] [stderr] 38 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/tachy/texture/mod.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/tachy/texture/mod.rs:28:1 [INFO] [stderr] | [INFO] [stderr] 28 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/tachy/view/wire.rs:34:1 [INFO] [stderr] | [INFO] [stderr] 34 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/tachy/view/wire.rs:45:1 [INFO] [stderr] | [INFO] [stderr] 45 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/gl/program.rs:132:9 [INFO] [stderr] | [INFO] [stderr] 132 | return Ok(ShaderUniform::new(loc)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(ShaderUniform::new(loc))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/gl/texture.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | / return Ok(Texture1D { [INFO] [stderr] 66 | | name, [INFO] [stderr] 67 | | phantom: PhantomData, [INFO] [stderr] 68 | | }); [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 65 | Ok(Texture1D { [INFO] [stderr] 66 | name, [INFO] [stderr] 67 | phantom: PhantomData, [INFO] [stderr] 68 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/gl/texture.rs:163:9 [INFO] [stderr] | [INFO] [stderr] 163 | / return Ok(Texture2D { [INFO] [stderr] 164 | | name, [INFO] [stderr] 165 | | phantom: PhantomData, [INFO] [stderr] 166 | | }); [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 163 | Ok(Texture2D { [INFO] [stderr] 164 | name, [INFO] [stderr] 165 | phantom: PhantomData, [INFO] [stderr] 166 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/gui/audio.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | return Ok(device); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(device)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/check.rs:281:13 [INFO] [stderr] | [INFO] [stderr] 281 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/check.rs:318:23 [INFO] [stderr] | [INFO] [stderr] 318 | Ok(groups) => return Ok(groups), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(groups)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/edit.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/edit.rs:345:9 [INFO] [stderr] | [INFO] [stderr] 345 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/edit.rs:689:9 [INFO] [stderr] | [INFO] [stderr] 689 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/edit.rs:703:9 [INFO] [stderr] | [INFO] [stderr] 703 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/edit.rs:816:9 [INFO] [stderr] | [INFO] [stderr] 816 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/edit.rs:887:5 [INFO] [stderr] | [INFO] [stderr] 887 | return Some(Coords::new(xsign * (x as i32), ysign * (y as i32))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(Coords::new(xsign * (x as i32), ysign * (y as i32)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/eval.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | return EvalResult::Continue; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `EvalResult::Continue` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/begin.rs:79:9 [INFO] [stderr] | [INFO] [stderr] 79 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/begin.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/circuit.rs:213:9 [INFO] [stderr] | [INFO] [stderr] 213 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/control.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/list.rs:179:9 [INFO] [stderr] | [INFO] [stderr] 179 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/menu.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/menu.rs:218:9 [INFO] [stderr] | [INFO] [stderr] 218 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/prefs.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/prefs.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/puzzle.rs:156:9 [INFO] [stderr] | [INFO] [stderr] 156 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/puzzle.rs:215:9 [INFO] [stderr] | [INFO] [stderr] 215 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/tachy/view/wire.rs:30:23 [INFO] [stderr] | [INFO] [stderr] 30 | const COS_67_5: f32 = 0.38268343236508984; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `0.382_683_432_365_089_84` [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: unneeded return statement [INFO] [stderr] --> src/tachy/gl/program.rs:132:9 [INFO] [stderr] | [INFO] [stderr] 132 | return Ok(ShaderUniform::new(loc)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(ShaderUniform::new(loc))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/gl/texture.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | / return Ok(Texture1D { [INFO] [stderr] 66 | | name, [INFO] [stderr] 67 | | phantom: PhantomData, [INFO] [stderr] 68 | | }); [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 65 | Ok(Texture1D { [INFO] [stderr] 66 | name, [INFO] [stderr] 67 | phantom: PhantomData, [INFO] [stderr] 68 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/gl/texture.rs:163:9 [INFO] [stderr] | [INFO] [stderr] 163 | / return Ok(Texture2D { [INFO] [stderr] 164 | | name, [INFO] [stderr] 165 | | phantom: PhantomData, [INFO] [stderr] 166 | | }); [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 163 | Ok(Texture2D { [INFO] [stderr] 164 | name, [INFO] [stderr] 165 | phantom: PhantomData, [INFO] [stderr] 166 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/gui/audio.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | return Ok(device); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(device)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/check.rs:281:13 [INFO] [stderr] | [INFO] [stderr] 281 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/check.rs:318:23 [INFO] [stderr] | [INFO] [stderr] 318 | Ok(groups) => return Ok(groups), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(groups)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/tachy/state/chip.rs:519:29 [INFO] [stderr] | [INFO] [stderr] 519 | ChipType::Const(0xffffffff), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [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: unneeded return statement [INFO] [stderr] --> src/tachy/state/edit.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/edit.rs:345:9 [INFO] [stderr] | [INFO] [stderr] 345 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/edit.rs:689:9 [INFO] [stderr] | [INFO] [stderr] 689 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/edit.rs:703:9 [INFO] [stderr] | [INFO] [stderr] 703 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/edit.rs:816:9 [INFO] [stderr] | [INFO] [stderr] 816 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/edit.rs:887:5 [INFO] [stderr] | [INFO] [stderr] 887 | return Some(Coords::new(xsign * (x as i32), ysign * (y as i32))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(Coords::new(xsign * (x as i32), ysign * (y as i32)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/state/eval.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | return EvalResult::Continue; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `EvalResult::Continue` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/begin.rs:79:9 [INFO] [stderr] | [INFO] [stderr] 79 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/begin.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/circuit.rs:213:9 [INFO] [stderr] | [INFO] [stderr] 213 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/control.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/list.rs:179:9 [INFO] [stderr] | [INFO] [stderr] 179 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/menu.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/menu.rs:218:9 [INFO] [stderr] | [INFO] [stderr] 218 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/prefs.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/prefs.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/puzzle.rs:156:9 [INFO] [stderr] | [INFO] [stderr] 156 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tachy/view/puzzle.rs:215:9 [INFO] [stderr] | [INFO] [stderr] 215 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/tachy/view/wire.rs:30:23 [INFO] [stderr] | [INFO] [stderr] 30 | const COS_67_5: f32 = 0.38268343236508984; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `0.382_683_432_365_089_84` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tachy/geom/orient.rs:37:24 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn is_mirrored(&self) -> bool { self.mirror } [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/tachy/geom/orient.rs:39:19 [INFO] [stderr] | [INFO] [stderr] 39 | pub fn matrix(&self) -> Matrix4 { [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: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/tachy/geom/orient.rs:40:55 [INFO] [stderr] | [INFO] [stderr] 40 | let matrix = Matrix4::from_angle_z(Deg(90.0 * (self.rotate as f32))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(self.rotate)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tachy/geom/orient.rs:48:30 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn transform_in_rect(&self, delta: CoordsDelta, size: CoordsSize) [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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/tachy/gl/program.rs:53:26 [INFO] [stderr] | [INFO] [stderr] 53 | if result != (gl::TRUE as GLint) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::TRUE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/tachy/gl/shader.rs:67:26 [INFO] [stderr] | [INFO] [stderr] 67 | if result != (gl::TRUE as GLint) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::TRUE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/gui/event.rs:46:20 [INFO] [stderr] | [INFO] [stderr] 46 | 1e-9 * (elapsed.subsec_nanos() as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(elapsed.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tachy/mode/begin.rs:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | / match view.handle_event(&event, state, &mut audio) { [INFO] [stderr] 37 | | Some(BeginAction::CreateProfile(name)) => { [INFO] [stderr] 38 | | debug_log!("Creating profile {:?}", name); [INFO] [stderr] 39 | | match state.create_or_load_profile(name) { [INFO] [stderr] ... | [INFO] [stderr] 47 | | None => {} [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 36 | if let Some(BeginAction::CreateProfile(name)) = view.handle_event(&event, state, &mut audio) { [INFO] [stderr] 37 | debug_log!("Creating profile {:?}", name); [INFO] [stderr] 38 | match state.create_or_load_profile(name) { [INFO] [stderr] 39 | Ok(()) => return ModeChange::Next, [INFO] [stderr] 40 | Err(err) => { [INFO] [stderr] 41 | // TODO: display error to user; don't panic [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/save/encode.rs:39:42 [INFO] [stderr] | [INFO] [stderr] 39 | value = value * 16 + (digit as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(digit)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/save/encode.rs:40:32 [INFO] [stderr] | [INFO] [stderr] 40 | if value > (u32::MAX as u64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(u32::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/save/encode.rs:57:46 [INFO] [stderr] | [INFO] [stderr] 57 | } else if any_digits && value <= (u32::MAX as u64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(u32::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/tachy/save/profile.rs:150:34 [INFO] [stderr] | [INFO] [stderr] 150 | self.data.current_puzzle.unwrap_or(Puzzle::first()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(Puzzle::first)` [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/tachy/save/profile.rs:203:9 [INFO] [stderr] | [INFO] [stderr] 203 | / if !self.puzzles.contains_key(&puzzle) { [INFO] [stderr] 204 | | let puzzle_path = self.base_path.join(format!("{:?}", puzzle)); [INFO] [stderr] 205 | | let progress = PuzzleProgress::create_or_load(&puzzle_path)?; [INFO] [stderr] 206 | | self.puzzles.insert(puzzle, progress); [INFO] [stderr] 207 | | } [INFO] [stderr] | |_________^ help: consider using: `self.puzzles.entry(puzzle)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/tachy/state/check.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | / if !all_fragments.contains_key(&loc) { [INFO] [stderr] 150 | | let mut wire_ports = HashMap::with_capacity(1); [INFO] [stderr] 151 | | wire_ports.insert(loc, port); [INFO] [stderr] 152 | | wires.push(WireInfo::new(HashSet::new(), wire_ports)); [INFO] [stderr] 153 | | } [INFO] [stderr] | |_________^ help: consider using: `all_fragments.entry(loc)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/tachy/state/check.rs:201:34 [INFO] [stderr] | [INFO] [stderr] 201 | pub fn map_ports_to_wires(wires: &Vec) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[WireInfo]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tachy/state/check.rs:322:17 [INFO] [stderr] | [INFO] [stderr] 322 | wire_successors.get(index).unwrap().iter().cloned() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&wire_successors[index]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tachy/state/check.rs:331:25 [INFO] [stderr] | [INFO] [stderr] 331 | if !wire_successors.get(wire).unwrap().contains(wire) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&wire_successors[wire]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 33 [INFO] [stderr] --> src/tachy/state/edit.rs:356:5 [INFO] [stderr] | [INFO] [stderr] 356 | / fn mutate_one(&mut self, change: &GridChange) { [INFO] [stderr] 357 | | match *change { [INFO] [stderr] 358 | | // TODO: enforce wires must be in bounds [INFO] [stderr] 359 | | GridChange::ToggleStubWire(coords, dir) => { [INFO] [stderr] ... | [INFO] [stderr] 550 | | } [INFO] [stderr] 551 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tachy/geom/orient.rs:37:24 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn is_mirrored(&self) -> bool { self.mirror } [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/tachy/geom/orient.rs:39:19 [INFO] [stderr] | [INFO] [stderr] 39 | pub fn matrix(&self) -> Matrix4 { [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: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/tachy/geom/orient.rs:40:55 [INFO] [stderr] | [INFO] [stderr] 40 | let matrix = Matrix4::from_angle_z(Deg(90.0 * (self.rotate as f32))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(self.rotate)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tachy/geom/orient.rs:48:30 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn transform_in_rect(&self, delta: CoordsDelta, size: CoordsSize) [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/state/edit.rs:862:26 [INFO] [stderr] | [INFO] [stderr] 862 | x = 10 * x + (digit as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(digit)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/tachy/state/edit.rs:877:27 [INFO] [stderr] | [INFO] [stderr] 877 | while let Some(chr) = chars.next() { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `for chr in chars { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/state/edit.rs:879:26 [INFO] [stderr] | [INFO] [stderr] 879 | y = 10 * y + (digit as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(digit)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:324:5 [INFO] [stderr] | [INFO] [stderr] 324 | / pub fn new(size: WireSize, input1: usize, input2: usize, output1: usize, [INFO] [stderr] 325 | | output2: usize) [INFO] [stderr] 326 | | -> Box { [INFO] [stderr] 327 | | Box::new(AddChipEval { [INFO] [stderr] ... | [INFO] [stderr] 333 | | }) [INFO] [stderr] 334 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/state/eval.rs:342:23 [INFO] [stderr] | [INFO] [stderr] 342 | let sum = (input1 as u64) + (input2 as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(input1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/state/eval.rs:342:41 [INFO] [stderr] | [INFO] [stderr] 342 | let sum = (input1 as u64) + (input2 as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(input2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/state/eval.rs:343:29 [INFO] [stderr] | [INFO] [stderr] 343 | let lo = (sum & (self.size.mask() as u64)) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.size.mask())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:358:5 [INFO] [stderr] | [INFO] [stderr] 358 | / pub fn new(input1: usize, input2: usize, output: usize) -> Box { [INFO] [stderr] 359 | | Box::new(AndChipEval { [INFO] [stderr] 360 | | input1, [INFO] [stderr] 361 | | input2, [INFO] [stderr] 362 | | output, [INFO] [stderr] 363 | | }) [INFO] [stderr] 364 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:384:5 [INFO] [stderr] | [INFO] [stderr] 384 | / pub fn new(input: usize, output: usize, coords: Coords) -> Box { [INFO] [stderr] 385 | | Box::new(BreakChipEval { [INFO] [stderr] 386 | | input, [INFO] [stderr] 387 | | output, [INFO] [stderr] 388 | | coords, [INFO] [stderr] 389 | | }) [INFO] [stderr] 390 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:410:5 [INFO] [stderr] | [INFO] [stderr] 410 | / pub fn new(output: usize, coords: Coords, [INFO] [stderr] 411 | | interact: Rc>) [INFO] [stderr] 412 | | -> Box { [INFO] [stderr] 413 | | Box::new(ButtonChipEval { [INFO] [stderr] ... | [INFO] [stderr] 418 | | }) [INFO] [stderr] 419 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:454:5 [INFO] [stderr] | [INFO] [stderr] 454 | / pub fn new(input: usize, output: usize) -> Box { [INFO] [stderr] 455 | | Box::new(ClockChipEval { [INFO] [stderr] 456 | | input, [INFO] [stderr] 457 | | output, [INFO] [stderr] ... | [INFO] [stderr] 460 | | }) [INFO] [stderr] 461 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:487:5 [INFO] [stderr] | [INFO] [stderr] 487 | / pub fn new(value: u32, output: usize) -> Box { [INFO] [stderr] 488 | | Box::new(ConstChipEval { output, value }) [INFO] [stderr] 489 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:505:5 [INFO] [stderr] | [INFO] [stderr] 505 | / pub fn new(input: usize, output: usize) -> Box { [INFO] [stderr] 506 | | Box::new(DelayChipEval { [INFO] [stderr] 507 | | input, [INFO] [stderr] 508 | | output, [INFO] [stderr] 509 | | value: None, [INFO] [stderr] 510 | | }) [INFO] [stderr] 511 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:539:5 [INFO] [stderr] | [INFO] [stderr] 539 | / pub fn new(input: usize, output: usize) -> Box { [INFO] [stderr] 540 | | Box::new(DiscardChipEval { input, output }) [INFO] [stderr] 541 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:559:5 [INFO] [stderr] | [INFO] [stderr] 559 | / pub fn new(input1: usize, input2: usize, output: usize) -> Box { [INFO] [stderr] 560 | | Box::new(JoinChipEval { [INFO] [stderr] 561 | | input1, [INFO] [stderr] 562 | | input2, [INFO] [stderr] 563 | | output, [INFO] [stderr] 564 | | }) [INFO] [stderr] 565 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:584:5 [INFO] [stderr] | [INFO] [stderr] 584 | / pub fn new(input: usize, output: usize) -> Box { [INFO] [stderr] 585 | | Box::new(LatestChipEval { input, output }) [INFO] [stderr] 586 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:604:5 [INFO] [stderr] | [INFO] [stderr] 604 | / pub fn new(size: WireSize, input: usize, output: usize) -> Box { [INFO] [stderr] 605 | | Box::new(NotChipEval { [INFO] [stderr] 606 | | size, [INFO] [stderr] 607 | | input, [INFO] [stderr] 608 | | output, [INFO] [stderr] 609 | | }) [INFO] [stderr] 610 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:628:5 [INFO] [stderr] | [INFO] [stderr] 628 | / pub fn new(input_size: WireSize, input1: usize, input2: usize, [INFO] [stderr] 629 | | output: usize) [INFO] [stderr] 630 | | -> Box { [INFO] [stderr] 631 | | Box::new(PackChipEval { [INFO] [stderr] ... | [INFO] [stderr] 636 | | }) [INFO] [stderr] 637 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:659:5 [INFO] [stderr] | [INFO] [stderr] 659 | / pub fn new(input_b: usize, input_e: usize, output: usize, [INFO] [stderr] 660 | | storage: Rc>>) [INFO] [stderr] 661 | | -> Box { [INFO] [stderr] 662 | | Box::new(RamChipEval { [INFO] [stderr] ... | [INFO] [stderr] 667 | | }) [INFO] [stderr] 668 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:689:5 [INFO] [stderr] | [INFO] [stderr] 689 | / pub fn new(input_e: usize, input_b: usize, output: usize) [INFO] [stderr] 690 | | -> Box { [INFO] [stderr] 691 | | Box::new(SampleChipEval { [INFO] [stderr] 692 | | input_e, [INFO] [stderr] ... | [INFO] [stderr] 695 | | }) [INFO] [stderr] 696 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:716:5 [INFO] [stderr] | [INFO] [stderr] 716 | / pub fn new(output_size: WireSize, input: usize, output1: usize, [INFO] [stderr] 717 | | output2: usize) [INFO] [stderr] 718 | | -> Box { [INFO] [stderr] 719 | | Box::new(UnpackChipEval { [INFO] [stderr] ... | [INFO] [stderr] 724 | | }) [INFO] [stderr] 725 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/tachy/gl/program.rs:53:26 [INFO] [stderr] | [INFO] [stderr] 53 | if result != (gl::TRUE as GLint) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::TRUE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/state/puzzle.rs:84:59 [INFO] [stderr] | [INFO] [stderr] 84 | self.verification[3 * (time_step as usize) + 2] = actual as u64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(actual)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/tachy/gl/shader.rs:67:26 [INFO] [stderr] | [INFO] [stderr] 67 | if result != (gl::TRUE as GLint) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::TRUE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tachy/state/size.rs:137:21 [INFO] [stderr] | [INFO] [stderr] 137 | pub fn is_empty(&self) -> bool { self.lo > self.hi } [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/tachy/state/size.rs:139:25 [INFO] [stderr] | [INFO] [stderr] 139 | pub fn is_ambiguous(&self) -> bool { self.lo < self.hi } [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/tachy/state/size.rs:141:24 [INFO] [stderr] | [INFO] [stderr] 141 | pub fn lower_bound(&self) -> Option { [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/tachy/state/size.rs:163:25 [INFO] [stderr] | [INFO] [stderr] 163 | pub fn intersection(&self, other: WireSizeInterval) -> WireSizeInterval { [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/tachy/state/size.rs:170:17 [INFO] [stderr] | [INFO] [stderr] 170 | pub fn half(&self) -> WireSizeInterval { [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/tachy/state/size.rs:181:19 [INFO] [stderr] | [INFO] [stderr] 181 | pub fn double(&self) -> WireSizeInterval { [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/tachy/state/size.rs:187:38 [INFO] [stderr] | [INFO] [stderr] 187 | hi: self.hi.double().unwrap_or(WireSize::max_value()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(WireSize::max_value)` [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: the function has a cyclomatic complexity of 27 [INFO] [stderr] --> src/tachy/view/circuit.rs:401:5 [INFO] [stderr] | [INFO] [stderr] 401 | / fn handle_event(&mut self, event: &Event, grid: &mut EditGrid) { [INFO] [stderr] 402 | | match event { [INFO] [stderr] 403 | | Event::KeyDown(key) => { [INFO] [stderr] 404 | | match key.code { [INFO] [stderr] ... | [INFO] [stderr] 507 | | } [INFO] [stderr] 508 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/gui/event.rs:46:20 [INFO] [stderr] | [INFO] [stderr] 46 | 1e-9 * (elapsed.subsec_nanos() as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(elapsed.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: consider using `Option` instead of `Option>` or a custom enum if you need to distinguish all 3 cases [INFO] [stderr] --> src/tachy/view/control.rs:89:28 [INFO] [stderr] | [INFO] [stderr] 89 | -> Option> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_option)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_option [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tachy/view/control.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | / match event { [INFO] [stderr] 134 | | Event::MouseDown(mouse) => { [INFO] [stderr] 135 | | if mouse.left && self.rect.contains_point(mouse.pt) { [INFO] [stderr] 136 | | return Some(self.action); [INFO] [stderr] ... | [INFO] [stderr] 140 | | _ => {} [INFO] [stderr] 141 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 133 | if let Event::MouseDown(mouse) = event { [INFO] [stderr] 134 | if mouse.left && self.rect.contains_point(mouse.pt) { [INFO] [stderr] 135 | return Some(self.action); [INFO] [stderr] 136 | } [INFO] [stderr] 137 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/view/list.rs:234:6 [INFO] [stderr] | [INFO] [stderr] 234 | ((a as f64) / (b as f64)).round() as i32 [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/view/list.rs:234:19 [INFO] [stderr] | [INFO] [stderr] 234 | ((a as f64) / (b as f64)).round() as i32 [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tachy/mode/begin.rs:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | / match view.handle_event(&event, state, &mut audio) { [INFO] [stderr] 37 | | Some(BeginAction::CreateProfile(name)) => { [INFO] [stderr] 38 | | debug_log!("Creating profile {:?}", name); [INFO] [stderr] 39 | | match state.create_or_load_profile(name) { [INFO] [stderr] ... | [INFO] [stderr] 47 | | None => {} [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 36 | if let Some(BeginAction::CreateProfile(name)) = view.handle_event(&event, state, &mut audio) { [INFO] [stderr] 37 | debug_log!("Creating profile {:?}", name); [INFO] [stderr] 38 | match state.create_or_load_profile(name) { [INFO] [stderr] 39 | Ok(()) => return ModeChange::Next, [INFO] [stderr] 40 | Err(err) => { [INFO] [stderr] 41 | // TODO: display error to user; don't panic [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tachy/view/menu.rs:207:9 [INFO] [stderr] | [INFO] [stderr] 207 | / match event { [INFO] [stderr] 208 | | Event::MouseDown(mouse) => { [INFO] [stderr] 209 | | if self.section != current_section && [INFO] [stderr] 210 | | self.rect.contains_point(mouse.pt) [INFO] [stderr] ... | [INFO] [stderr] 216 | | _ => {} [INFO] [stderr] 217 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 207 | if let Event::MouseDown(mouse) = event { [INFO] [stderr] 208 | if self.section != current_section && [INFO] [stderr] 209 | self.rect.contains_point(mouse.pt) [INFO] [stderr] 210 | { [INFO] [stderr] 211 | audio.play_sound(Sound::Beep); [INFO] [stderr] 212 | return Some(self.section); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tachy/view/prefs.rs:112:9 [INFO] [stderr] | [INFO] [stderr] 112 | / match event { [INFO] [stderr] 113 | | Event::MouseDown(mouse) => { [INFO] [stderr] 114 | | if mouse.left && self.rect.contains_point(mouse.pt) { [INFO] [stderr] 115 | | return Some(PrefsAction::NewProfile); [INFO] [stderr] ... | [INFO] [stderr] 118 | | _ => {} [INFO] [stderr] 119 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 112 | if let Event::MouseDown(mouse) = event { [INFO] [stderr] 113 | if mouse.left && self.rect.contains_point(mouse.pt) { [INFO] [stderr] 114 | return Some(PrefsAction::NewProfile); [INFO] [stderr] 115 | } [INFO] [stderr] 116 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tachy/view/puzzle.rs:207:9 [INFO] [stderr] | [INFO] [stderr] 207 | / match event { [INFO] [stderr] 208 | | Event::MouseDown(mouse) => { [INFO] [stderr] 209 | | if mouse.left && self.rect.contains_point(mouse.pt) { [INFO] [stderr] 210 | | return Some(self.action); [INFO] [stderr] ... | [INFO] [stderr] 213 | | _ => {} [INFO] [stderr] 214 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 207 | if let Event::MouseDown(mouse) = event { [INFO] [stderr] 208 | if mouse.left && self.rect.contains_point(mouse.pt) { [INFO] [stderr] 209 | return Some(self.action); [INFO] [stderr] 210 | } [INFO] [stderr] 211 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/save/encode.rs:39:42 [INFO] [stderr] | [INFO] [stderr] 39 | value = value * 16 + (digit as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(digit)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/save/encode.rs:40:32 [INFO] [stderr] | [INFO] [stderr] 40 | if value > (u32::MAX as u64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(u32::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/save/encode.rs:57:46 [INFO] [stderr] | [INFO] [stderr] 57 | } else if any_digits && value <= (u32::MAX as u64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(u32::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/view/verify.rs:138:28 [INFO] [stderr] | [INFO] [stderr] 138 | if value > u32::MAX as u64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(u32::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/tachy/view/wire.rs:30:23 [INFO] [stderr] | [INFO] [stderr] 30 | const COS_67_5: f32 = 0.38268343236508984; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `0.382_683_43` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::excessive_precision)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `/` [INFO] [stderr] --> src/tachy/view/wire.rs:42:25 [INFO] [stderr] | [INFO] [stderr] 42 | (20./32., 88./128., 128./128.), // 32-bit [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `wire_size_start(size)` [INFO] [stderr] --> src/tachy/view/wire.rs:169:21 [INFO] [stderr] | [INFO] [stderr] 169 | let start = wire_size_start(size) + 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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/tachy/save/profile.rs:150:34 [INFO] [stderr] | [INFO] [stderr] 150 | self.data.current_puzzle.unwrap_or(Puzzle::first()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(Puzzle::first)` [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/tachy/save/profile.rs:203:9 [INFO] [stderr] | [INFO] [stderr] 203 | / if !self.puzzles.contains_key(&puzzle) { [INFO] [stderr] 204 | | let puzzle_path = self.base_path.join(format!("{:?}", puzzle)); [INFO] [stderr] 205 | | let progress = PuzzleProgress::create_or_load(&puzzle_path)?; [INFO] [stderr] 206 | | self.puzzles.insert(puzzle, progress); [INFO] [stderr] 207 | | } [INFO] [stderr] | |_________^ help: consider using: `self.puzzles.entry(puzzle)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `tachyomancer`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/tachy/state/check.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | / if !all_fragments.contains_key(&loc) { [INFO] [stderr] 150 | | let mut wire_ports = HashMap::with_capacity(1); [INFO] [stderr] 151 | | wire_ports.insert(loc, port); [INFO] [stderr] 152 | | wires.push(WireInfo::new(HashSet::new(), wire_ports)); [INFO] [stderr] 153 | | } [INFO] [stderr] | |_________^ help: consider using: `all_fragments.entry(loc)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/tachy/state/check.rs:201:34 [INFO] [stderr] | [INFO] [stderr] 201 | pub fn map_ports_to_wires(wires: &Vec) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[WireInfo]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tachy/state/check.rs:322:17 [INFO] [stderr] | [INFO] [stderr] 322 | wire_successors.get(index).unwrap().iter().cloned() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&wire_successors[index]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tachy/state/check.rs:331:25 [INFO] [stderr] | [INFO] [stderr] 331 | if !wire_successors.get(wire).unwrap().contains(wire) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&wire_successors[wire]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 33 [INFO] [stderr] --> src/tachy/state/edit.rs:356:5 [INFO] [stderr] | [INFO] [stderr] 356 | / fn mutate_one(&mut self, change: &GridChange) { [INFO] [stderr] 357 | | match *change { [INFO] [stderr] 358 | | // TODO: enforce wires must be in bounds [INFO] [stderr] 359 | | GridChange::ToggleStubWire(coords, dir) => { [INFO] [stderr] ... | [INFO] [stderr] 550 | | } [INFO] [stderr] 551 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/state/edit.rs:862:26 [INFO] [stderr] | [INFO] [stderr] 862 | x = 10 * x + (digit as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(digit)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/tachy/state/edit.rs:877:27 [INFO] [stderr] | [INFO] [stderr] 877 | while let Some(chr) = chars.next() { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `for chr in chars { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/state/edit.rs:879:26 [INFO] [stderr] | [INFO] [stderr] 879 | y = 10 * y + (digit as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(digit)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:324:5 [INFO] [stderr] | [INFO] [stderr] 324 | / pub fn new(size: WireSize, input1: usize, input2: usize, output1: usize, [INFO] [stderr] 325 | | output2: usize) [INFO] [stderr] 326 | | -> Box { [INFO] [stderr] 327 | | Box::new(AddChipEval { [INFO] [stderr] ... | [INFO] [stderr] 333 | | }) [INFO] [stderr] 334 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/state/eval.rs:342:23 [INFO] [stderr] | [INFO] [stderr] 342 | let sum = (input1 as u64) + (input2 as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(input1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/state/eval.rs:342:41 [INFO] [stderr] | [INFO] [stderr] 342 | let sum = (input1 as u64) + (input2 as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(input2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/state/eval.rs:343:29 [INFO] [stderr] | [INFO] [stderr] 343 | let lo = (sum & (self.size.mask() as u64)) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.size.mask())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:358:5 [INFO] [stderr] | [INFO] [stderr] 358 | / pub fn new(input1: usize, input2: usize, output: usize) -> Box { [INFO] [stderr] 359 | | Box::new(AndChipEval { [INFO] [stderr] 360 | | input1, [INFO] [stderr] 361 | | input2, [INFO] [stderr] 362 | | output, [INFO] [stderr] 363 | | }) [INFO] [stderr] 364 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:384:5 [INFO] [stderr] | [INFO] [stderr] 384 | / pub fn new(input: usize, output: usize, coords: Coords) -> Box { [INFO] [stderr] 385 | | Box::new(BreakChipEval { [INFO] [stderr] 386 | | input, [INFO] [stderr] 387 | | output, [INFO] [stderr] 388 | | coords, [INFO] [stderr] 389 | | }) [INFO] [stderr] 390 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:410:5 [INFO] [stderr] | [INFO] [stderr] 410 | / pub fn new(output: usize, coords: Coords, [INFO] [stderr] 411 | | interact: Rc>) [INFO] [stderr] 412 | | -> Box { [INFO] [stderr] 413 | | Box::new(ButtonChipEval { [INFO] [stderr] ... | [INFO] [stderr] 418 | | }) [INFO] [stderr] 419 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:454:5 [INFO] [stderr] | [INFO] [stderr] 454 | / pub fn new(input: usize, output: usize) -> Box { [INFO] [stderr] 455 | | Box::new(ClockChipEval { [INFO] [stderr] 456 | | input, [INFO] [stderr] 457 | | output, [INFO] [stderr] ... | [INFO] [stderr] 460 | | }) [INFO] [stderr] 461 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:487:5 [INFO] [stderr] | [INFO] [stderr] 487 | / pub fn new(value: u32, output: usize) -> Box { [INFO] [stderr] 488 | | Box::new(ConstChipEval { output, value }) [INFO] [stderr] 489 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:505:5 [INFO] [stderr] | [INFO] [stderr] 505 | / pub fn new(input: usize, output: usize) -> Box { [INFO] [stderr] 506 | | Box::new(DelayChipEval { [INFO] [stderr] 507 | | input, [INFO] [stderr] 508 | | output, [INFO] [stderr] 509 | | value: None, [INFO] [stderr] 510 | | }) [INFO] [stderr] 511 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:539:5 [INFO] [stderr] | [INFO] [stderr] 539 | / pub fn new(input: usize, output: usize) -> Box { [INFO] [stderr] 540 | | Box::new(DiscardChipEval { input, output }) [INFO] [stderr] 541 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:559:5 [INFO] [stderr] | [INFO] [stderr] 559 | / pub fn new(input1: usize, input2: usize, output: usize) -> Box { [INFO] [stderr] 560 | | Box::new(JoinChipEval { [INFO] [stderr] 561 | | input1, [INFO] [stderr] 562 | | input2, [INFO] [stderr] 563 | | output, [INFO] [stderr] 564 | | }) [INFO] [stderr] 565 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:584:5 [INFO] [stderr] | [INFO] [stderr] 584 | / pub fn new(input: usize, output: usize) -> Box { [INFO] [stderr] 585 | | Box::new(LatestChipEval { input, output }) [INFO] [stderr] 586 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:604:5 [INFO] [stderr] | [INFO] [stderr] 604 | / pub fn new(size: WireSize, input: usize, output: usize) -> Box { [INFO] [stderr] 605 | | Box::new(NotChipEval { [INFO] [stderr] 606 | | size, [INFO] [stderr] 607 | | input, [INFO] [stderr] 608 | | output, [INFO] [stderr] 609 | | }) [INFO] [stderr] 610 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:628:5 [INFO] [stderr] | [INFO] [stderr] 628 | / pub fn new(input_size: WireSize, input1: usize, input2: usize, [INFO] [stderr] 629 | | output: usize) [INFO] [stderr] 630 | | -> Box { [INFO] [stderr] 631 | | Box::new(PackChipEval { [INFO] [stderr] ... | [INFO] [stderr] 636 | | }) [INFO] [stderr] 637 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:659:5 [INFO] [stderr] | [INFO] [stderr] 659 | / pub fn new(input_b: usize, input_e: usize, output: usize, [INFO] [stderr] 660 | | storage: Rc>>) [INFO] [stderr] 661 | | -> Box { [INFO] [stderr] 662 | | Box::new(RamChipEval { [INFO] [stderr] ... | [INFO] [stderr] 667 | | }) [INFO] [stderr] 668 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:689:5 [INFO] [stderr] | [INFO] [stderr] 689 | / pub fn new(input_e: usize, input_b: usize, output: usize) [INFO] [stderr] 690 | | -> Box { [INFO] [stderr] 691 | | Box::new(SampleChipEval { [INFO] [stderr] 692 | | input_e, [INFO] [stderr] ... | [INFO] [stderr] 695 | | }) [INFO] [stderr] 696 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/tachy/state/eval.rs:716:5 [INFO] [stderr] | [INFO] [stderr] 716 | / pub fn new(output_size: WireSize, input: usize, output1: usize, [INFO] [stderr] 717 | | output2: usize) [INFO] [stderr] 718 | | -> Box { [INFO] [stderr] 719 | | Box::new(UnpackChipEval { [INFO] [stderr] ... | [INFO] [stderr] 724 | | }) [INFO] [stderr] 725 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/state/puzzle.rs:84:59 [INFO] [stderr] | [INFO] [stderr] 84 | self.verification[3 * (time_step as usize) + 2] = actual as u64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(actual)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tachy/state/size.rs:137:21 [INFO] [stderr] | [INFO] [stderr] 137 | pub fn is_empty(&self) -> bool { self.lo > self.hi } [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/tachy/state/size.rs:139:25 [INFO] [stderr] | [INFO] [stderr] 139 | pub fn is_ambiguous(&self) -> bool { self.lo < self.hi } [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/tachy/state/size.rs:141:24 [INFO] [stderr] | [INFO] [stderr] 141 | pub fn lower_bound(&self) -> Option { [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/tachy/state/size.rs:163:25 [INFO] [stderr] | [INFO] [stderr] 163 | pub fn intersection(&self, other: WireSizeInterval) -> WireSizeInterval { [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/tachy/state/size.rs:170:17 [INFO] [stderr] | [INFO] [stderr] 170 | pub fn half(&self) -> WireSizeInterval { [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/tachy/state/size.rs:181:19 [INFO] [stderr] | [INFO] [stderr] 181 | pub fn double(&self) -> WireSizeInterval { [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/tachy/state/size.rs:187:38 [INFO] [stderr] | [INFO] [stderr] 187 | hi: self.hi.double().unwrap_or(WireSize::max_value()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(WireSize::max_value)` [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: the function has a cyclomatic complexity of 27 [INFO] [stderr] --> src/tachy/view/circuit.rs:401:5 [INFO] [stderr] | [INFO] [stderr] 401 | / fn handle_event(&mut self, event: &Event, grid: &mut EditGrid) { [INFO] [stderr] 402 | | match event { [INFO] [stderr] 403 | | Event::KeyDown(key) => { [INFO] [stderr] 404 | | match key.code { [INFO] [stderr] ... | [INFO] [stderr] 507 | | } [INFO] [stderr] 508 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: consider using `Option` instead of `Option>` or a custom enum if you need to distinguish all 3 cases [INFO] [stderr] --> src/tachy/view/control.rs:89:28 [INFO] [stderr] | [INFO] [stderr] 89 | -> Option> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_option)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_option [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tachy/view/control.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | / match event { [INFO] [stderr] 134 | | Event::MouseDown(mouse) => { [INFO] [stderr] 135 | | if mouse.left && self.rect.contains_point(mouse.pt) { [INFO] [stderr] 136 | | return Some(self.action); [INFO] [stderr] ... | [INFO] [stderr] 140 | | _ => {} [INFO] [stderr] 141 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 133 | if let Event::MouseDown(mouse) = event { [INFO] [stderr] 134 | if mouse.left && self.rect.contains_point(mouse.pt) { [INFO] [stderr] 135 | return Some(self.action); [INFO] [stderr] 136 | } [INFO] [stderr] 137 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/view/list.rs:234:6 [INFO] [stderr] | [INFO] [stderr] 234 | ((a as f64) / (b as f64)).round() as i32 [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/view/list.rs:234:19 [INFO] [stderr] | [INFO] [stderr] 234 | ((a as f64) / (b as f64)).round() as i32 [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tachy/view/menu.rs:207:9 [INFO] [stderr] | [INFO] [stderr] 207 | / match event { [INFO] [stderr] 208 | | Event::MouseDown(mouse) => { [INFO] [stderr] 209 | | if self.section != current_section && [INFO] [stderr] 210 | | self.rect.contains_point(mouse.pt) [INFO] [stderr] ... | [INFO] [stderr] 216 | | _ => {} [INFO] [stderr] 217 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 207 | if let Event::MouseDown(mouse) = event { [INFO] [stderr] 208 | if self.section != current_section && [INFO] [stderr] 209 | self.rect.contains_point(mouse.pt) [INFO] [stderr] 210 | { [INFO] [stderr] 211 | audio.play_sound(Sound::Beep); [INFO] [stderr] 212 | return Some(self.section); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tachy/view/prefs.rs:112:9 [INFO] [stderr] | [INFO] [stderr] 112 | / match event { [INFO] [stderr] 113 | | Event::MouseDown(mouse) => { [INFO] [stderr] 114 | | if mouse.left && self.rect.contains_point(mouse.pt) { [INFO] [stderr] 115 | | return Some(PrefsAction::NewProfile); [INFO] [stderr] ... | [INFO] [stderr] 118 | | _ => {} [INFO] [stderr] 119 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 112 | if let Event::MouseDown(mouse) = event { [INFO] [stderr] 113 | if mouse.left && self.rect.contains_point(mouse.pt) { [INFO] [stderr] 114 | return Some(PrefsAction::NewProfile); [INFO] [stderr] 115 | } [INFO] [stderr] 116 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tachy/view/puzzle.rs:207:9 [INFO] [stderr] | [INFO] [stderr] 207 | / match event { [INFO] [stderr] 208 | | Event::MouseDown(mouse) => { [INFO] [stderr] 209 | | if mouse.left && self.rect.contains_point(mouse.pt) { [INFO] [stderr] 210 | | return Some(self.action); [INFO] [stderr] ... | [INFO] [stderr] 213 | | _ => {} [INFO] [stderr] 214 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 207 | if let Event::MouseDown(mouse) = event { [INFO] [stderr] 208 | if mouse.left && self.rect.contains_point(mouse.pt) { [INFO] [stderr] 209 | return Some(self.action); [INFO] [stderr] 210 | } [INFO] [stderr] 211 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/tachy/view/verify.rs:138:28 [INFO] [stderr] | [INFO] [stderr] 138 | if value > u32::MAX as u64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(u32::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/tachy/view/wire.rs:30:23 [INFO] [stderr] | [INFO] [stderr] 30 | const COS_67_5: f32 = 0.38268343236508984; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `0.382_683_43` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::excessive_precision)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `/` [INFO] [stderr] --> src/tachy/view/wire.rs:42:25 [INFO] [stderr] | [INFO] [stderr] 42 | (20./32., 88./128., 128./128.), // 32-bit [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `wire_size_start(size)` [INFO] [stderr] --> src/tachy/view/wire.rs:169:21 [INFO] [stderr] | [INFO] [stderr] 169 | let start = wire_size_start(size) + 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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `tachyomancer`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "450c5da77372c0a2da4159cdee2bed1873cb7f2871969cbdf6cb3c59f27d153a"` [INFO] running `"docker" "rm" "-f" "450c5da77372c0a2da4159cdee2bed1873cb7f2871969cbdf6cb3c59f27d153a"` [INFO] [stdout] 450c5da77372c0a2da4159cdee2bed1873cb7f2871969cbdf6cb3c59f27d153a