[INFO] updating cached repository Technici4n/crowl [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Technici4n/crowl [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Technici4n/crowl" "work/ex/clippy-test-run/sources/stable/gh/Technici4n/crowl"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Technici4n/crowl'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Technici4n/crowl" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Technici4n/crowl"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Technici4n/crowl'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 519796768943db8ea27cb14c0a4f74543ec0fb54 [INFO] sha for GitHub repo Technici4n/crowl: 519796768943db8ea27cb14c0a4f74543ec0fb54 [INFO] validating manifest of Technici4n/crowl 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 Technici4n/crowl 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 Technici4n/crowl [INFO] finished frobbing Technici4n/crowl [INFO] frobbed toml for Technici4n/crowl written to work/ex/clippy-test-run/sources/stable/gh/Technici4n/crowl/Cargo.toml [INFO] started frobbing Technici4n/crowl [INFO] finished frobbing Technici4n/crowl [INFO] frobbed toml for Technici4n/crowl written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Technici4n/crowl/Cargo.toml [INFO] crate Technici4n/crowl 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 Technici4n/crowl 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/Technici4n/crowl:/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] ac861057eaa0ea89bb9ee9eab73bcaefb959cb742b082f4db71d07bd0df6131a [INFO] running `"docker" "start" "-a" "ac861057eaa0ea89bb9ee9eab73bcaefb959cb742b082f4db71d07bd0df6131a"` [INFO] [stderr] Compiling bitflags v1.0.0 [INFO] [stderr] Checking coco v0.1.1 [INFO] [stderr] Compiling itertools v0.5.10 [INFO] [stderr] Checking noise v0.4.1 [INFO] [stderr] Checking cgmath v0.15.0 [INFO] [stderr] Compiling xml-rs v0.6.2 [INFO] [stderr] Checking rayon-core v1.2.1 [INFO] [stderr] Checking rayon v0.8.2 [INFO] [stderr] Compiling derivative v1.0.0 [INFO] [stderr] Compiling wayland-scanner v0.9.10 [INFO] [stderr] Compiling gl_generator v0.5.5 [INFO] [stderr] Compiling wayland-client v0.9.10 [INFO] [stderr] Compiling wayland-protocols v0.9.10 [INFO] [stderr] Checking jpeg-decoder v0.1.13 [INFO] [stderr] Compiling gfx_gl v0.3.1 [INFO] [stderr] Compiling glutin v0.10.0 [INFO] [stderr] Checking gfx_core v0.7.2 [INFO] [stderr] Checking image v0.17.0 [INFO] [stderr] Checking wayland-kbd v0.9.1 [INFO] [stderr] Checking wayland-window v0.8.0 [INFO] [stderr] Checking texture_packer v0.12.0 [INFO] [stderr] Checking winit v0.8.2 [INFO] [stderr] Checking gfx_device_gl v0.14.4 [INFO] [stderr] Checking gfx v0.16.1 [INFO] [stderr] Checking gfx_window_glutin v0.18.0 [INFO] [stderr] Checking crowl v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/block.rs:62:32 [INFO] [stderr] | [INFO] [stderr] 62 | sides: Box::new([[[0b00111111; CHUNK_SIZE]; CHUNK_SIZE]; CHUNK_SIZE]), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [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: this if statement can be collapsed [INFO] [stderr] --> src/threads/meshing.rs:78:37 [INFO] [stderr] | [INFO] [stderr] 78 | / if 0 <= x && x < sz && 0 <= y && y < sz && 0 <= z && z < sz { [INFO] [stderr] 79 | | if !block_registry.get_block(blocks[x as usize][y as usize][z as usize]).is_opaque() { [INFO] [stderr] 80 | | sides[i as usize][j as usize][k as usize] ^= 1 << side; [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | } [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] 78 | if 0 <= x && x < sz && 0 <= y && y < sz && 0 <= z && z < sz && !block_registry.get_block(blocks[x as usize][y as usize][z as usize]).is_opaque() { [INFO] [stderr] 79 | sides[i as usize][j as usize][k as usize] ^= 1 << side; [INFO] [stderr] 80 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/threads/network.rs:17:65 [INFO] [stderr] | [INFO] [stderr] 17 | let mut rng = rand::StdRng::from_seed(&[((pos.0*4242424242 + pos.2)%1_000_000_007).abs() as usize]); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `4_242_424_242` [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: the loop variable `j` is used to index `UVS` [INFO] [stderr] --> src/block.rs:116:18 [INFO] [stderr] | [INFO] [stderr] 116 | for j in 0..4 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 116 | for (j, ) in UVS.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/render/camera.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | / let mut speedup = 1.0f32; [INFO] [stderr] 63 | | if keys.is_key_pressed(CONTROL) [INFO] [stderr] 64 | | { speedup = 15.0; } [INFO] [stderr] | |___________________________^ help: it is more idiomatic to write: `let speedup = if keys.is_key_pressed(CONTROL) { 15.0 } else { 1.0f32 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/render/frames.rs:19:18 [INFO] [stderr] | [INFO] [stderr] 19 | let ts = (dur.subsec_nanos() as f64) + (dur.as_secs() as f64) * 1e9; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(dur.subsec_nanos())` [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: length comparison to zero [INFO] [stderr] --> src/render/frames.rs:20:15 [INFO] [stderr] | [INFO] [stderr] 20 | while self.frames.len() > 0 && ts - self.frames.front().unwrap() > 1e9 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.frames.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/texture.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | self.textures.get(name).unwrap().clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.textures[name]` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/threads/input.rs:168:53 [INFO] [stderr] | [INFO] [stderr] 168 | Event::DeviceEvent { event, .. } => match event { [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 169 | | // TODO: Ensure this event is only received if the window is focused [INFO] [stderr] 170 | | DeviceEvent::Motion { axis, value } => { [INFO] [stderr] 171 | | match axis { [INFO] [stderr] ... | [INFO] [stderr] 177 | | _ => {}, [INFO] [stderr] 178 | | }, [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] 168 | Event::DeviceEvent { event, .. } => if let DeviceEvent::Motion { axis, value } = event { [INFO] [stderr] 169 | match axis { [INFO] [stderr] 170 | 0 => cam.update_cursor(value as f32, 0.0), [INFO] [stderr] 171 | 1 => cam.update_cursor(0.0, value as f32), [INFO] [stderr] 172 | _ => panic!("Unknown axis. Expected 0 or 1, found {}.", axis), [INFO] [stderr] 173 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/threads/input.rs:223:18 [INFO] [stderr] | [INFO] [stderr] 223 | for i in -RENDER_DIST..(RENDER_DIST+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `-RENDER_DIST..=RENDER_DIST` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/threads/input.rs:224:22 [INFO] [stderr] | [INFO] [stderr] 224 | for j in -RENDER_DIST..(RENDER_DIST+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `-RENDER_DIST..=RENDER_DIST` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/threads/input.rs:225:26 [INFO] [stderr] | [INFO] [stderr] 225 | for k in -RENDER_DIST..(RENDER_DIST+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `-RENDER_DIST..=RENDER_DIST` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/threads/input.rs:262:13 [INFO] [stderr] | [INFO] [stderr] 262 | / match buffer { [INFO] [stderr] 263 | | &mut Some(ref mut buff) => { [INFO] [stderr] 264 | | transform.model = cgmath::Matrix4::from_translation((CHUNK_SIZE as f32) * cgmath::Vector3::new(pos.0 as f32, pos.1 as f32, pos.2 as f32)).into(); [INFO] [stderr] 265 | | encoder.update_buffer(&data.transform, [INFO] [stderr] ... | [INFO] [stderr] 273 | | &mut None => (), [INFO] [stderr] 274 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 262 | match *buffer { [INFO] [stderr] 263 | Some(ref mut buff) => { [INFO] [stderr] 264 | transform.model = cgmath::Matrix4::from_translation((CHUNK_SIZE as f32) * cgmath::Vector3::new(pos.0 as f32, pos.1 as f32, pos.2 as f32)).into(); [INFO] [stderr] 265 | encoder.update_buffer(&data.transform, [INFO] [stderr] 266 | &[transform], [INFO] [stderr] 267 | 0).unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the loop variable `side` is used to index `ADJ_CHUNKS` [INFO] [stderr] --> src/threads/meshing.rs:57:33 [INFO] [stderr] | [INFO] [stderr] 57 | for side in 0..6 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 57 | for (side, ) in ADJ_CHUNKS.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/threads/meshing.rs:59:66 [INFO] [stderr] | [INFO] [stderr] 59 | if let ChunkState::Received(_, ref c) = *chunks.get(&ChunkPos(pos.0 + adj[0], pos.1 + adj[1], pos.2 + adj[2])).unwrap().borrow_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&chunks[&ChunkPos(pos.0 + adj[0], pos.1 + adj[1], pos.2 + adj[2])]` [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 loop variable `side` is used to index `ADJ_CHUNKS` [INFO] [stderr] --> src/threads/meshing.rs:75:45 [INFO] [stderr] | [INFO] [stderr] 75 | for side in 0..6 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 75 | for (side, ) in ADJ_CHUNKS.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `chunk` [INFO] [stderr] --> src/threads/network.rs:18:26 [INFO] [stderr] | [INFO] [stderr] 18 | for i in 0..CHUNK_SIZE { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 18 | for (i, ) in chunk.iter_mut().enumerate().take(CHUNK_SIZE) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/threads/network.rs:34:57 [INFO] [stderr] | [INFO] [stderr] 34 | let theta: f64 = rng.gen_range(0.0, 2.0*3.14); [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: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `crowl`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/block.rs:62:32 [INFO] [stderr] | [INFO] [stderr] 62 | sides: Box::new([[[0b00111111; CHUNK_SIZE]; CHUNK_SIZE]; CHUNK_SIZE]), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [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: this if statement can be collapsed [INFO] [stderr] --> src/threads/meshing.rs:78:37 [INFO] [stderr] | [INFO] [stderr] 78 | / if 0 <= x && x < sz && 0 <= y && y < sz && 0 <= z && z < sz { [INFO] [stderr] 79 | | if !block_registry.get_block(blocks[x as usize][y as usize][z as usize]).is_opaque() { [INFO] [stderr] 80 | | sides[i as usize][j as usize][k as usize] ^= 1 << side; [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | } [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] 78 | if 0 <= x && x < sz && 0 <= y && y < sz && 0 <= z && z < sz && !block_registry.get_block(blocks[x as usize][y as usize][z as usize]).is_opaque() { [INFO] [stderr] 79 | sides[i as usize][j as usize][k as usize] ^= 1 << side; [INFO] [stderr] 80 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/threads/network.rs:17:65 [INFO] [stderr] | [INFO] [stderr] 17 | let mut rng = rand::StdRng::from_seed(&[((pos.0*4242424242 + pos.2)%1_000_000_007).abs() as usize]); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `4_242_424_242` [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: the loop variable `j` is used to index `UVS` [INFO] [stderr] --> src/block.rs:116:18 [INFO] [stderr] | [INFO] [stderr] 116 | for j in 0..4 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 116 | for (j, ) in UVS.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/render/camera.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | / let mut speedup = 1.0f32; [INFO] [stderr] 63 | | if keys.is_key_pressed(CONTROL) [INFO] [stderr] 64 | | { speedup = 15.0; } [INFO] [stderr] | |___________________________^ help: it is more idiomatic to write: `let speedup = if keys.is_key_pressed(CONTROL) { 15.0 } else { 1.0f32 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/render/frames.rs:19:18 [INFO] [stderr] | [INFO] [stderr] 19 | let ts = (dur.subsec_nanos() as f64) + (dur.as_secs() as f64) * 1e9; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(dur.subsec_nanos())` [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: length comparison to zero [INFO] [stderr] --> src/render/frames.rs:20:15 [INFO] [stderr] | [INFO] [stderr] 20 | while self.frames.len() > 0 && ts - self.frames.front().unwrap() > 1e9 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.frames.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/texture.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | self.textures.get(name).unwrap().clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.textures[name]` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/threads/input.rs:168:53 [INFO] [stderr] | [INFO] [stderr] 168 | Event::DeviceEvent { event, .. } => match event { [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 169 | | // TODO: Ensure this event is only received if the window is focused [INFO] [stderr] 170 | | DeviceEvent::Motion { axis, value } => { [INFO] [stderr] 171 | | match axis { [INFO] [stderr] ... | [INFO] [stderr] 177 | | _ => {}, [INFO] [stderr] 178 | | }, [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] 168 | Event::DeviceEvent { event, .. } => if let DeviceEvent::Motion { axis, value } = event { [INFO] [stderr] 169 | match axis { [INFO] [stderr] 170 | 0 => cam.update_cursor(value as f32, 0.0), [INFO] [stderr] 171 | 1 => cam.update_cursor(0.0, value as f32), [INFO] [stderr] 172 | _ => panic!("Unknown axis. Expected 0 or 1, found {}.", axis), [INFO] [stderr] 173 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/threads/input.rs:223:18 [INFO] [stderr] | [INFO] [stderr] 223 | for i in -RENDER_DIST..(RENDER_DIST+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `-RENDER_DIST..=RENDER_DIST` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/threads/input.rs:224:22 [INFO] [stderr] | [INFO] [stderr] 224 | for j in -RENDER_DIST..(RENDER_DIST+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `-RENDER_DIST..=RENDER_DIST` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/threads/input.rs:225:26 [INFO] [stderr] | [INFO] [stderr] 225 | for k in -RENDER_DIST..(RENDER_DIST+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `-RENDER_DIST..=RENDER_DIST` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/threads/input.rs:262:13 [INFO] [stderr] | [INFO] [stderr] 262 | / match buffer { [INFO] [stderr] 263 | | &mut Some(ref mut buff) => { [INFO] [stderr] 264 | | transform.model = cgmath::Matrix4::from_translation((CHUNK_SIZE as f32) * cgmath::Vector3::new(pos.0 as f32, pos.1 as f32, pos.2 as f32)).into(); [INFO] [stderr] 265 | | encoder.update_buffer(&data.transform, [INFO] [stderr] ... | [INFO] [stderr] 273 | | &mut None => (), [INFO] [stderr] 274 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 262 | match *buffer { [INFO] [stderr] 263 | Some(ref mut buff) => { [INFO] [stderr] 264 | transform.model = cgmath::Matrix4::from_translation((CHUNK_SIZE as f32) * cgmath::Vector3::new(pos.0 as f32, pos.1 as f32, pos.2 as f32)).into(); [INFO] [stderr] 265 | encoder.update_buffer(&data.transform, [INFO] [stderr] 266 | &[transform], [INFO] [stderr] 267 | 0).unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the loop variable `side` is used to index `ADJ_CHUNKS` [INFO] [stderr] --> src/threads/meshing.rs:57:33 [INFO] [stderr] | [INFO] [stderr] 57 | for side in 0..6 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 57 | for (side, ) in ADJ_CHUNKS.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/threads/meshing.rs:59:66 [INFO] [stderr] | [INFO] [stderr] 59 | if let ChunkState::Received(_, ref c) = *chunks.get(&ChunkPos(pos.0 + adj[0], pos.1 + adj[1], pos.2 + adj[2])).unwrap().borrow_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&chunks[&ChunkPos(pos.0 + adj[0], pos.1 + adj[1], pos.2 + adj[2])]` [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 loop variable `side` is used to index `ADJ_CHUNKS` [INFO] [stderr] --> src/threads/meshing.rs:75:45 [INFO] [stderr] | [INFO] [stderr] 75 | for side in 0..6 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 75 | for (side, ) in ADJ_CHUNKS.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `chunk` [INFO] [stderr] --> src/threads/network.rs:18:26 [INFO] [stderr] | [INFO] [stderr] 18 | for i in 0..CHUNK_SIZE { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 18 | for (i, ) in chunk.iter_mut().enumerate().take(CHUNK_SIZE) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/threads/network.rs:34:57 [INFO] [stderr] | [INFO] [stderr] 34 | let theta: f64 = rng.gen_range(0.0, 2.0*3.14); [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: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `crowl`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "ac861057eaa0ea89bb9ee9eab73bcaefb959cb742b082f4db71d07bd0df6131a"` [INFO] running `"docker" "rm" "-f" "ac861057eaa0ea89bb9ee9eab73bcaefb959cb742b082f4db71d07bd0df6131a"` [INFO] [stdout] ac861057eaa0ea89bb9ee9eab73bcaefb959cb742b082f4db71d07bd0df6131a