[INFO] updating cached repository Herschel/quaternion-demo [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Herschel/quaternion-demo [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Herschel/quaternion-demo" "work/ex/clippy-test-run/sources/stable/gh/Herschel/quaternion-demo"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Herschel/quaternion-demo'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Herschel/quaternion-demo" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Herschel/quaternion-demo"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Herschel/quaternion-demo'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] ad83c722a4ea3205c51bff3c49a1e4a65c6ac095 [INFO] sha for GitHub repo Herschel/quaternion-demo: ad83c722a4ea3205c51bff3c49a1e4a65c6ac095 [INFO] validating manifest of Herschel/quaternion-demo 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 Herschel/quaternion-demo 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 Herschel/quaternion-demo [INFO] finished frobbing Herschel/quaternion-demo [INFO] frobbed toml for Herschel/quaternion-demo written to work/ex/clippy-test-run/sources/stable/gh/Herschel/quaternion-demo/Cargo.toml [INFO] started frobbing Herschel/quaternion-demo [INFO] finished frobbing Herschel/quaternion-demo [INFO] frobbed toml for Herschel/quaternion-demo written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Herschel/quaternion-demo/Cargo.toml [INFO] crate Herschel/quaternion-demo 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 Herschel/quaternion-demo against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Herschel/quaternion-demo:/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] a6920ae6a9e4d9807d9a024a6a19c36144af4ecd7b2f795e73eca8f0467bcd1f [INFO] running `"docker" "start" "-a" "a6920ae6a9e4d9807d9a024a6a19c36144af4ecd7b2f795e73eca8f0467bcd1f"` [INFO] [stderr] Checking rand v0.5.1 [INFO] [stderr] Checking conrod v0.60.0 [INFO] [stderr] Checking nalgebra v0.15.3 [INFO] [stderr] Checking quaternion-demo v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/quaternion.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | let w = self.w; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/quaternion.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | let w = self.w; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/quaternion.rs:170:9 [INFO] [stderr] | [INFO] [stderr] 170 | / if (a.x-b.x).abs() >= EPSILON || (a.y-b.y).abs() >= EPSILON || (a.z- b.z).abs() >= EPSILON || (a.w-b.w).abs() >= EPSILON { [INFO] [stderr] 171 | | if (a.x+b.x).abs() >= EPSILON || (a.y+b.y).abs() >= EPSILON || (a.z+b.z).abs() >= EPSILON || (a.w+b.w).abs() >= EPSILON { [INFO] [stderr] 172 | | panic!("Not equal: {:?} {:?}", a, b); [INFO] [stderr] 173 | | } [INFO] [stderr] 174 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 170 | if ((a.x-b.x).abs() >= EPSILON || (a.y-b.y).abs() >= EPSILON || (a.z- b.z).abs() >= EPSILON || (a.w-b.w).abs() >= EPSILON) && ((a.x+b.x).abs() >= EPSILON || (a.y+b.y).abs() >= EPSILON || (a.z+b.z).abs() >= EPSILON || (a.w+b.w).abs() >= EPSILON) { [INFO] [stderr] 171 | panic!("Not equal: {:?} {:?}", a, b); [INFO] [stderr] 172 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/quaternion.rs:220:23 [INFO] [stderr] | [INFO] [stderr] 220 | let sqrt2_2 = 0.707107; [INFO] [stderr] | ^^^^^^^^ help: consider: `0.707_107` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/quaternion.rs:251:44 [INFO] [stderr] | [INFO] [stderr] 251 | assert_rot_eq(p*q, Quaternion { x: 0.17043722, y: 0.3202073, z: 0.185343, w: 0.9132724 }); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0.170_437_22` [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: long literal lacking separators [INFO] [stderr] --> src/quaternion.rs:251:59 [INFO] [stderr] | [INFO] [stderr] 251 | assert_rot_eq(p*q, Quaternion { x: 0.17043722, y: 0.3202073, z: 0.185343, w: 0.9132724 }); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.320_207_3` [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: long literal lacking separators [INFO] [stderr] --> src/quaternion.rs:251:73 [INFO] [stderr] | [INFO] [stderr] 251 | assert_rot_eq(p*q, Quaternion { x: 0.17043722, y: 0.3202073, z: 0.185343, w: 0.9132724 }); [INFO] [stderr] | ^^^^^^^^ help: consider: `0.185_343` [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: long literal lacking separators [INFO] [stderr] --> src/quaternion.rs:251:86 [INFO] [stderr] | [INFO] [stderr] 251 | assert_rot_eq(p*q, Quaternion { x: 0.17043722, y: 0.3202073, z: 0.185343, w: 0.9132724 }); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.913_272_4` [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: long literal lacking separators [INFO] [stderr] --> src/quaternion.rs:283:56 [INFO] [stderr] | [INFO] [stderr] 283 | assert_rot_eq(p.slerp(q, 0.9), Quaternion { x: 0.0060857176, y: 0.9921862, z: -0.05777763, w: -0.11041405 }); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `0.006_085_717_6` [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: long literal lacking separators [INFO] [stderr] --> src/quaternion.rs:283:73 [INFO] [stderr] | [INFO] [stderr] 283 | assert_rot_eq(p.slerp(q, 0.9), Quaternion { x: 0.0060857176, y: 0.9921862, z: -0.05777763, w: -0.11041405 }); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.992_186_2` [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: long literal lacking separators [INFO] [stderr] --> src/quaternion.rs:283:88 [INFO] [stderr] | [INFO] [stderr] 283 | assert_rot_eq(p.slerp(q, 0.9), Quaternion { x: 0.0060857176, y: 0.9921862, z: -0.05777763, w: -0.11041405 }); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0.057_777_63` [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: long literal lacking separators [INFO] [stderr] --> src/quaternion.rs:283:104 [INFO] [stderr] | [INFO] [stderr] 283 | assert_rot_eq(p.slerp(q, 0.9), Quaternion { x: 0.0060857176, y: 0.9921862, z: -0.05777763, w: -0.11041405 }); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0.110_414_05` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:111:23 [INFO] [stderr] | [INFO] [stderr] 111 | const FONT_PATH: &'static str = [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unused variable: `p` [INFO] [stderr] --> src/quaternion.rs:281:13 [INFO] [stderr] | [INFO] [stderr] 281 | let p = Quaternion::from_euler_angles(0.2, 0.4, 3.1 * PI); [INFO] [stderr] | ^ help: consider using `_p` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `RED` [INFO] [stderr] --> src/main.rs:405:5 [INFO] [stderr] | [INFO] [stderr] 405 | const RED: [f32; 4] = [1.0, 0.0, 0.0, 1.0]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `GREEN` [INFO] [stderr] --> src/main.rs:406:5 [INFO] [stderr] | [INFO] [stderr] 406 | const GREEN: [f32; 4] = [0.0, 1.0, 0.0, 1.0]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLUE` [INFO] [stderr] --> src/main.rs:407:5 [INFO] [stderr] | [INFO] [stderr] 407 | const BLUE: [f32; 4] = [0.0, 0.0, 1.0, 1.0]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/quaternion.rs:184:9 [INFO] [stderr] | [INFO] [stderr] 184 | assert_eq!(Quaternion::identity().len(), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/quaternion.rs:184:9 [INFO] [stderr] | [INFO] [stderr] 184 | assert_eq!(Quaternion::identity().len(), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/quaternion.rs:185:9 [INFO] [stderr] | [INFO] [stderr] 185 | assert_eq!(Quaternion { x: 2.0, y: 2.0, z: 2.0, w: 2.0 }.len(), 4.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/quaternion.rs:185:9 [INFO] [stderr] | [INFO] [stderr] 185 | assert_eq!(Quaternion { x: 2.0, y: 2.0, z: 2.0, w: 2.0 }.len(), 4.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/quaternion.rs:220:23 [INFO] [stderr] | [INFO] [stderr] 220 | let sqrt2_2 = 0.707107; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/main.rs:72:62 [INFO] [stderr] | [INFO] [stderr] 72 | projection: Matrix4::new_perspective(16.0 / 9.0, 3.14 / 4.0, 1.0, 1000.0), [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:91:42 [INFO] [stderr] | [INFO] [stderr] 91 | let mut ui = conrod::UiBuilder::new([WIDTH as f64, HEIGHT as f64]).build(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(WIDTH)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:91:56 [INFO] [stderr] | [INFO] [stderr] 91 | let mut ui = conrod::UiBuilder::new([WIDTH as f64, HEIGHT as f64]).build(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(HEIGHT)` [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/main.rs:150:13 [INFO] [stderr] | [INFO] [stderr] 150 | / match event.clone() { [INFO] [stderr] 151 | | glium::glutin::Event::WindowEvent { event, .. } => { [INFO] [stderr] 152 | | match event { [INFO] [stderr] 153 | | glium::glutin::WindowEvent::Closed | [INFO] [stderr] ... | [INFO] [stderr] 164 | | _ => (), [INFO] [stderr] 165 | | }; [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] 150 | if let glium::glutin::Event::WindowEvent { event, .. } = event.clone() { [INFO] [stderr] 151 | match event { [INFO] [stderr] 152 | glium::glutin::WindowEvent::Closed | [INFO] [stderr] 153 | glium::glutin::WindowEvent::KeyboardInput { [INFO] [stderr] 154 | input: glium::glutin::KeyboardInput { [INFO] [stderr] 155 | virtual_keycode: Some(glium::glutin::VirtualKeyCode::Escape), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(euler_angles[0].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Yaw") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.yaw, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:215:30 [INFO] [stderr] | [INFO] [stderr] 215 | for value in Slider::new(euler_angles[0].to_degrees(), 0.0, 360.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 216 | | .label("Yaw") [INFO] [stderr] 217 | | .label_color(color::RED) [INFO] [stderr] 218 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 219 | | .h(30.0) [INFO] [stderr] 220 | | .set(ids.yaw, ui) [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::for_loop_over_option)] on by default [INFO] [stderr] = help: consider replacing `for value in Slider::new(euler_angles[0].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Yaw") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.yaw, ui)` with `if let Some(value) = Slider::new(euler_angles[0].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Yaw") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.yaw, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(euler_angles[1].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Pitch") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.pitch, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:227:30 [INFO] [stderr] | [INFO] [stderr] 227 | for value in Slider::new(euler_angles[1].to_degrees(), 0.0, 360.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 228 | | .label("Pitch") [INFO] [stderr] 229 | | .label_color(color::RED) [INFO] [stderr] 230 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 231 | | .h(30.0) [INFO] [stderr] 232 | | .set(ids.pitch, ui) [INFO] [stderr] | |_______________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for value in Slider::new(euler_angles[1].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Pitch") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.pitch, ui)` with `if let Some(value) = Slider::new(euler_angles[1].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Pitch") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.pitch, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(euler_angles[2].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Roll") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.roll, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:239:30 [INFO] [stderr] | [INFO] [stderr] 239 | for value in Slider::new(euler_angles[2].to_degrees(), 0.0, 360.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 240 | | .label("Roll") [INFO] [stderr] 241 | | .label_color(color::RED) [INFO] [stderr] 242 | | [INFO] [stderr] 243 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 244 | | .h(30.0) [INFO] [stderr] 245 | | .set(ids.roll, ui) [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for value in Slider::new(euler_angles[2].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Roll") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.roll, ui)` with `if let Some(value) = Slider::new(euler_angles[2].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Roll") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.roll, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(axis[0], 0.0, 1.0) [INFO] [stderr] .label("Axis X") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_x, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:252:30 [INFO] [stderr] | [INFO] [stderr] 252 | for value in Slider::new(axis[0], 0.0, 1.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 253 | | .label("Axis X") [INFO] [stderr] 254 | | .label_color(color::RED) [INFO] [stderr] 255 | | [INFO] [stderr] 256 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 257 | | .h(30.0) [INFO] [stderr] 258 | | .set(ids.axis_x, ui) [INFO] [stderr] | |________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for value in Slider::new(axis[0], 0.0, 1.0) [INFO] [stderr] .label("Axis X") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_x, ui)` with `if let Some(value) = Slider::new(axis[0], 0.0, 1.0) [INFO] [stderr] .label("Axis X") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_x, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:261:29 [INFO] [stderr] | [INFO] [stderr] 261 | let n = axis.clone().normalize(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `axis` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(axis[1], 0.0, 1.0) [INFO] [stderr] .label("Axis Y") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_y, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:266:30 [INFO] [stderr] | [INFO] [stderr] 266 | for value in Slider::new(axis[1], 0.0, 1.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 267 | | .label("Axis Y") [INFO] [stderr] 268 | | .label_color(color::RED) [INFO] [stderr] 269 | | [INFO] [stderr] 270 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 271 | | .h(30.0) [INFO] [stderr] 272 | | .set(ids.axis_y, ui) [INFO] [stderr] | |________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for value in Slider::new(axis[1], 0.0, 1.0) [INFO] [stderr] .label("Axis Y") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_y, ui)` with `if let Some(value) = Slider::new(axis[1], 0.0, 1.0) [INFO] [stderr] .label("Axis Y") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_y, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:275:29 [INFO] [stderr] | [INFO] [stderr] 275 | let n = axis.clone().normalize(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `axis` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(axis[2], 0.0, 1.0) [INFO] [stderr] .label("Axis Z") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_z, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:280:30 [INFO] [stderr] | [INFO] [stderr] 280 | for value in Slider::new(axis[2], 0.0, 1.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 281 | | .label("Axis Z") [INFO] [stderr] 282 | | .label_color(color::RED) [INFO] [stderr] 283 | | [INFO] [stderr] 284 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 285 | | .h(30.0) [INFO] [stderr] 286 | | .set(ids.axis_z, ui) [INFO] [stderr] | |________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for value in Slider::new(axis[2], 0.0, 1.0) [INFO] [stderr] .label("Axis Z") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_z, ui)` with `if let Some(value) = Slider::new(axis[2], 0.0, 1.0) [INFO] [stderr] .label("Axis Z") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_z, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:289:29 [INFO] [stderr] | [INFO] [stderr] 289 | let n = axis.clone().normalize(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `axis` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(axis_angle.to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Angle") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_angle, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:294:30 [INFO] [stderr] | [INFO] [stderr] 294 | for value in Slider::new(axis_angle.to_degrees(), 0.0, 360.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 295 | | .label("Angle") [INFO] [stderr] 296 | | .label_color(color::RED) [INFO] [stderr] 297 | | [INFO] [stderr] 298 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 299 | | .h(30.0) [INFO] [stderr] 300 | | .set(ids.axis_angle, ui) [INFO] [stderr] | |____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for value in Slider::new(axis_angle.to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Angle") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_angle, ui)` with `if let Some(value) = Slider::new(axis_angle.to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Angle") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_angle, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:303:29 [INFO] [stderr] | [INFO] [stderr] 303 | let n = axis.clone().normalize(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `axis` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to 11 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `quaternion-demo`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:111:23 [INFO] [stderr] | [INFO] [stderr] 111 | const FONT_PATH: &'static str = [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `RED` [INFO] [stderr] --> src/main.rs:405:5 [INFO] [stderr] | [INFO] [stderr] 405 | const RED: [f32; 4] = [1.0, 0.0, 0.0, 1.0]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `GREEN` [INFO] [stderr] --> src/main.rs:406:5 [INFO] [stderr] | [INFO] [stderr] 406 | const GREEN: [f32; 4] = [0.0, 1.0, 0.0, 1.0]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLUE` [INFO] [stderr] --> src/main.rs:407:5 [INFO] [stderr] | [INFO] [stderr] 407 | const BLUE: [f32; 4] = [0.0, 0.0, 1.0, 1.0]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/main.rs:72:62 [INFO] [stderr] | [INFO] [stderr] 72 | projection: Matrix4::new_perspective(16.0 / 9.0, 3.14 / 4.0, 1.0, 1000.0), [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:91:42 [INFO] [stderr] | [INFO] [stderr] 91 | let mut ui = conrod::UiBuilder::new([WIDTH as f64, HEIGHT as f64]).build(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(WIDTH)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:91:56 [INFO] [stderr] | [INFO] [stderr] 91 | let mut ui = conrod::UiBuilder::new([WIDTH as f64, HEIGHT as f64]).build(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(HEIGHT)` [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/main.rs:150:13 [INFO] [stderr] | [INFO] [stderr] 150 | / match event.clone() { [INFO] [stderr] 151 | | glium::glutin::Event::WindowEvent { event, .. } => { [INFO] [stderr] 152 | | match event { [INFO] [stderr] 153 | | glium::glutin::WindowEvent::Closed | [INFO] [stderr] ... | [INFO] [stderr] 164 | | _ => (), [INFO] [stderr] 165 | | }; [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] 150 | if let glium::glutin::Event::WindowEvent { event, .. } = event.clone() { [INFO] [stderr] 151 | match event { [INFO] [stderr] 152 | glium::glutin::WindowEvent::Closed | [INFO] [stderr] 153 | glium::glutin::WindowEvent::KeyboardInput { [INFO] [stderr] 154 | input: glium::glutin::KeyboardInput { [INFO] [stderr] 155 | virtual_keycode: Some(glium::glutin::VirtualKeyCode::Escape), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(euler_angles[0].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Yaw") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.yaw, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:215:30 [INFO] [stderr] | [INFO] [stderr] 215 | for value in Slider::new(euler_angles[0].to_degrees(), 0.0, 360.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 216 | | .label("Yaw") [INFO] [stderr] 217 | | .label_color(color::RED) [INFO] [stderr] 218 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 219 | | .h(30.0) [INFO] [stderr] 220 | | .set(ids.yaw, ui) [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::for_loop_over_option)] on by default [INFO] [stderr] = help: consider replacing `for value in Slider::new(euler_angles[0].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Yaw") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.yaw, ui)` with `if let Some(value) = Slider::new(euler_angles[0].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Yaw") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.yaw, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(euler_angles[1].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Pitch") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.pitch, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:227:30 [INFO] [stderr] | [INFO] [stderr] 227 | for value in Slider::new(euler_angles[1].to_degrees(), 0.0, 360.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 228 | | .label("Pitch") [INFO] [stderr] 229 | | .label_color(color::RED) [INFO] [stderr] 230 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 231 | | .h(30.0) [INFO] [stderr] 232 | | .set(ids.pitch, ui) [INFO] [stderr] | |_______________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for value in Slider::new(euler_angles[1].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Pitch") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.pitch, ui)` with `if let Some(value) = Slider::new(euler_angles[1].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Pitch") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.pitch, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(euler_angles[2].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Roll") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.roll, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:239:30 [INFO] [stderr] | [INFO] [stderr] 239 | for value in Slider::new(euler_angles[2].to_degrees(), 0.0, 360.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 240 | | .label("Roll") [INFO] [stderr] 241 | | .label_color(color::RED) [INFO] [stderr] 242 | | [INFO] [stderr] 243 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 244 | | .h(30.0) [INFO] [stderr] 245 | | .set(ids.roll, ui) [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for value in Slider::new(euler_angles[2].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Roll") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.roll, ui)` with `if let Some(value) = Slider::new(euler_angles[2].to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Roll") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.roll, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(axis[0], 0.0, 1.0) [INFO] [stderr] .label("Axis X") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_x, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:252:30 [INFO] [stderr] | [INFO] [stderr] 252 | for value in Slider::new(axis[0], 0.0, 1.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 253 | | .label("Axis X") [INFO] [stderr] 254 | | .label_color(color::RED) [INFO] [stderr] 255 | | [INFO] [stderr] 256 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 257 | | .h(30.0) [INFO] [stderr] 258 | | .set(ids.axis_x, ui) [INFO] [stderr] | |________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for value in Slider::new(axis[0], 0.0, 1.0) [INFO] [stderr] .label("Axis X") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_x, ui)` with `if let Some(value) = Slider::new(axis[0], 0.0, 1.0) [INFO] [stderr] .label("Axis X") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_x, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:261:29 [INFO] [stderr] | [INFO] [stderr] 261 | let n = axis.clone().normalize(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `axis` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(axis[1], 0.0, 1.0) [INFO] [stderr] .label("Axis Y") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_y, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:266:30 [INFO] [stderr] | [INFO] [stderr] 266 | for value in Slider::new(axis[1], 0.0, 1.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 267 | | .label("Axis Y") [INFO] [stderr] 268 | | .label_color(color::RED) [INFO] [stderr] 269 | | [INFO] [stderr] 270 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 271 | | .h(30.0) [INFO] [stderr] 272 | | .set(ids.axis_y, ui) [INFO] [stderr] | |________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for value in Slider::new(axis[1], 0.0, 1.0) [INFO] [stderr] .label("Axis Y") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_y, ui)` with `if let Some(value) = Slider::new(axis[1], 0.0, 1.0) [INFO] [stderr] .label("Axis Y") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_y, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:275:29 [INFO] [stderr] | [INFO] [stderr] 275 | let n = axis.clone().normalize(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `axis` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(axis[2], 0.0, 1.0) [INFO] [stderr] .label("Axis Z") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_z, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:280:30 [INFO] [stderr] | [INFO] [stderr] 280 | for value in Slider::new(axis[2], 0.0, 1.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 281 | | .label("Axis Z") [INFO] [stderr] 282 | | .label_color(color::RED) [INFO] [stderr] 283 | | [INFO] [stderr] 284 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 285 | | .h(30.0) [INFO] [stderr] 286 | | .set(ids.axis_z, ui) [INFO] [stderr] | |________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for value in Slider::new(axis[2], 0.0, 1.0) [INFO] [stderr] .label("Axis Z") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_z, ui)` with `if let Some(value) = Slider::new(axis[2], 0.0, 1.0) [INFO] [stderr] .label("Axis Z") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_z, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:289:29 [INFO] [stderr] | [INFO] [stderr] 289 | let n = axis.clone().normalize(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `axis` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: for loop over `Slider::new(axis_angle.to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Angle") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_angle, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/main.rs:294:30 [INFO] [stderr] | [INFO] [stderr] 294 | for value in Slider::new(axis_angle.to_degrees(), 0.0, 360.0) [INFO] [stderr] | ______________________________^ [INFO] [stderr] 295 | | .label("Angle") [INFO] [stderr] 296 | | .label_color(color::RED) [INFO] [stderr] 297 | | [INFO] [stderr] 298 | | .padded_w_of(ids.canvas, PAD) [INFO] [stderr] 299 | | .h(30.0) [INFO] [stderr] 300 | | .set(ids.axis_angle, ui) [INFO] [stderr] | |____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for value in Slider::new(axis_angle.to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Angle") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_angle, ui)` with `if let Some(value) = Slider::new(axis_angle.to_degrees(), 0.0, 360.0) [INFO] [stderr] .label("Angle") [INFO] [stderr] .label_color(color::RED) [INFO] [stderr] [INFO] [stderr] .padded_w_of(ids.canvas, PAD) [INFO] [stderr] .h(30.0) [INFO] [stderr] .set(ids.axis_angle, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:303:29 [INFO] [stderr] | [INFO] [stderr] 303 | let n = axis.clone().normalize(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `axis` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to 8 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `quaternion-demo`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "a6920ae6a9e4d9807d9a024a6a19c36144af4ecd7b2f795e73eca8f0467bcd1f"` [INFO] running `"docker" "rm" "-f" "a6920ae6a9e4d9807d9a024a6a19c36144af4ecd7b2f795e73eca8f0467bcd1f"` [INFO] [stdout] a6920ae6a9e4d9807d9a024a6a19c36144af4ecd7b2f795e73eca8f0467bcd1f