[INFO] cloning repository https://github.com/MashPlant/ray_tracer [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/MashPlant/ray_tracer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMashPlant%2Fray_tracer", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMashPlant%2Fray_tracer'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 62ea967f344ad420fd026805892594819baf1149 [INFO] linting MashPlant/ray_tracer against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMashPlant%2Fray_tracer" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] [stderr] Updating files: 21% (16/73) Updating files: 23% (17/73) Updating files: 24% (18/73) Updating files: 26% (19/73) Updating files: 27% (20/73) Updating files: 28% (21/73) Updating files: 30% (22/73) Updating files: 31% (23/73) Updating files: 32% (24/73) Updating files: 34% (25/73) Updating files: 35% (26/73) Updating files: 36% (27/73) Updating files: 38% (28/73) Updating files: 39% (29/73) Updating files: 41% (30/73) Updating files: 42% (31/73) Updating files: 43% (32/73) Updating files: 45% (33/73) Updating files: 46% (34/73) Updating files: 47% (35/73) Updating files: 49% (36/73) Updating files: 50% (37/73) Updating files: 52% (38/73) Updating files: 53% (39/73) Updating files: 54% (40/73) Updating files: 56% (41/73) Updating files: 57% (42/73) Updating files: 58% (43/73) Updating files: 60% (44/73) Updating files: 61% (45/73) Updating files: 63% (46/73) Updating files: 64% (47/73) Updating files: 65% (48/73) Updating files: 67% (49/73) Updating files: 68% (50/73) Updating files: 69% (51/73) Updating files: 71% (52/73) Updating files: 72% (53/73) Updating files: 73% (54/73) Updating files: 75% (55/73) Updating files: 76% (56/73) Updating files: 78% (57/73) Updating files: 79% (58/73) Updating files: 80% (59/73) Updating files: 82% (60/73) Updating files: 83% (61/73) Updating files: 84% (62/73) Updating files: 86% (63/73) Updating files: 87% (64/73) Updating files: 89% (65/73) Updating files: 90% (66/73) Updating files: 91% (67/73) Updating files: 93% (68/73) Updating files: 94% (69/73) Updating files: 95% (70/73) Updating files: 97% (71/73) Updating files: 98% (72/73) Updating files: 100% (73/73) Updating files: 100% (73/73), done. [INFO] started tweaking git repo https://github.com/MashPlant/ray_tracer [INFO] finished tweaking git repo https://github.com/MashPlant/ray_tracer [INFO] tweaked toml for git repo https://github.com/MashPlant/ray_tracer written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/MashPlant/ray_tracer on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 36 packages to latest compatible versions [INFO] [stderr] Adding bincode v1.3.3 (available: v3.0.0) [INFO] [stderr] Adding png v0.11.0 (available: v0.18.1) [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded f128_input v0.2.1 [INFO] [stderr] Downloaded f128 v0.2.9 [INFO] [stderr] Downloaded f128_internal v0.2.2 [INFO] [stderr] Downloaded text_io v0.1.13 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9df449ae05012a54916c20ccfafb922a3acd6bcbd115d9eb7a07f886c76aeb3a [INFO] running `Command { std: "docker" "start" "-a" "9df449ae05012a54916c20ccfafb922a3acd6bcbd115d9eb7a07f886c76aeb3a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9df449ae05012a54916c20ccfafb922a3acd6bcbd115d9eb7a07f886c76aeb3a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9df449ae05012a54916c20ccfafb922a3acd6bcbd115d9eb7a07f886c76aeb3a", kill_on_drop: false }` [INFO] [stdout] 9df449ae05012a54916c20ccfafb922a3acd6bcbd115d9eb7a07f886c76aeb3a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 3924f186184766a29474f9bd99bc830d4cf49844f49ff7d0abfceab46feb73f4 [INFO] running `Command { std: "docker" "start" "-a" "3924f186184766a29474f9bd99bc830d4cf49844f49ff7d0abfceab46feb73f4", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.183 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling cc v1.2.57 [INFO] [stderr] Checking deflate v0.7.20 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Checking inflate v0.3.4 [INFO] [stderr] Checking serde_json v1.0.149 [INFO] [stderr] Checking text_io v0.1.13 [INFO] [stderr] Checking png v0.11.0 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling f128_internal v0.2.2 [INFO] [stderr] Compiling f128_input v0.2.1 [INFO] [stderr] Checking f128 v0.2.9 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking ray_tracer v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: named argument `i` is not used by name [INFO] [stdout] --> src/codegen.rs:613:74 [INFO] [stdout] | [INFO] [stdout] 613 | cudaMemcpyToSymbol(gpu_mesh{}, &gpu_mesh{i}_tmp, sizeof(KDNode *));"#, i = i)); [INFO] [stdout] | -- ^ this named argument is referred to by position in formatting string [INFO] [stdout] | | [INFO] [stdout] | this formatting argument uses named argument `i` by position [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(named_arguments_used_positionally)]` on by default [INFO] [stdout] help: use the named argument by name to avoid ambiguity [INFO] [stdout] | [INFO] [stdout] 613 | cudaMemcpyToSymbol(gpu_mesh{i}, &gpu_mesh{i}_tmp, sizeof(KDNode *));"#, i = i)); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: named argument `i` is not used by name [INFO] [stdout] --> src/codegen.rs:633:33 [INFO] [stdout] | [INFO] [stdout] 632 | cudaMemcpyFromSymbol(&gpu_mesh{i}_tmp, gpu_mesh{}, sizeof(KDNode *)); [INFO] [stdout] | -- this formatting argument uses named argument `i` by position [INFO] [stdout] 633 | cudaFree(gpu_mesh{i}_tmp);"#, i = i)); [INFO] [stdout] | ^ this named argument is referred to by position in formatting string [INFO] [stdout] | [INFO] [stdout] help: use the named argument by name to avoid ambiguity [INFO] [stdout] | [INFO] [stdout] 632 | cudaMemcpyFromSymbol(&gpu_mesh{i}_tmp, gpu_mesh{i}, sizeof(KDNode *)); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: named argument `w` is not used by name [INFO] [stdout] --> src/codegen.rs:651:7 [INFO] [stdout] | [INFO] [stdout] 645 | trace<<>>(gpu_output, ns); [INFO] [stdout] | -- this formatting argument uses named argument `w` by position [INFO] [stdout] ... [INFO] [stdout] 651 | }}"#, w = world.w, h = world.h, wh = world.w * world.h)); [INFO] [stdout] | ^ this named argument is referred to by position in formatting string [INFO] [stdout] | [INFO] [stdout] help: use the named argument by name to avoid ambiguity [INFO] [stdout] | [INFO] [stdout] 645 | trace<<>>(gpu_output, ns); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: named argument `h` is not used by name [INFO] [stdout] --> src/codegen.rs:651:20 [INFO] [stdout] | [INFO] [stdout] 645 | trace<<>>(gpu_output, ns); [INFO] [stdout] | -- this formatting argument uses named argument `h` by position [INFO] [stdout] ... [INFO] [stdout] 651 | }}"#, w = world.w, h = world.h, wh = world.w * world.h)); [INFO] [stdout] | ^ this named argument is referred to by position in formatting string [INFO] [stdout] | [INFO] [stdout] help: use the named argument by name to avoid ambiguity [INFO] [stdout] | [INFO] [stdout] 645 | trace<<>>(gpu_output, ns); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/material.rs:58:14 [INFO] [stdout] | [INFO] [stdout] 58 | data[((y * w + x) as usize)] [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 58 - data[((y * w + x) as usize)] [INFO] [stdout] 58 + data[(y * w + x) as usize ] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: named argument `i` is not used by name [INFO] [stdout] --> src/codegen.rs:613:74 [INFO] [stdout] | [INFO] [stdout] 613 | cudaMemcpyToSymbol(gpu_mesh{}, &gpu_mesh{i}_tmp, sizeof(KDNode *));"#, i = i)); [INFO] [stdout] | -- ^ this named argument is referred to by position in formatting string [INFO] [stdout] | | [INFO] [stdout] | this formatting argument uses named argument `i` by position [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(named_arguments_used_positionally)]` on by default [INFO] [stdout] help: use the named argument by name to avoid ambiguity [INFO] [stdout] | [INFO] [stdout] 613 | cudaMemcpyToSymbol(gpu_mesh{i}, &gpu_mesh{i}_tmp, sizeof(KDNode *));"#, i = i)); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: named argument `i` is not used by name [INFO] [stdout] --> src/codegen.rs:633:33 [INFO] [stdout] | [INFO] [stdout] 632 | cudaMemcpyFromSymbol(&gpu_mesh{i}_tmp, gpu_mesh{}, sizeof(KDNode *)); [INFO] [stdout] | -- this formatting argument uses named argument `i` by position [INFO] [stdout] 633 | cudaFree(gpu_mesh{i}_tmp);"#, i = i)); [INFO] [stdout] | ^ this named argument is referred to by position in formatting string [INFO] [stdout] | [INFO] [stdout] help: use the named argument by name to avoid ambiguity [INFO] [stdout] | [INFO] [stdout] 632 | cudaMemcpyFromSymbol(&gpu_mesh{i}_tmp, gpu_mesh{i}, sizeof(KDNode *)); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: named argument `w` is not used by name [INFO] [stdout] --> src/codegen.rs:651:7 [INFO] [stdout] | [INFO] [stdout] 645 | trace<<>>(gpu_output, ns); [INFO] [stdout] | -- this formatting argument uses named argument `w` by position [INFO] [stdout] ... [INFO] [stdout] 651 | }}"#, w = world.w, h = world.h, wh = world.w * world.h)); [INFO] [stdout] | ^ this named argument is referred to by position in formatting string [INFO] [stdout] | [INFO] [stdout] help: use the named argument by name to avoid ambiguity [INFO] [stdout] | [INFO] [stdout] 645 | trace<<>>(gpu_output, ns); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: named argument `h` is not used by name [INFO] [stdout] --> src/codegen.rs:651:20 [INFO] [stdout] | [INFO] [stdout] 645 | trace<<>>(gpu_output, ns); [INFO] [stdout] | -- this formatting argument uses named argument `h` by position [INFO] [stdout] ... [INFO] [stdout] 651 | }}"#, w = world.w, h = world.h, wh = world.w * world.h)); [INFO] [stdout] | ^ this named argument is referred to by position in formatting string [INFO] [stdout] | [INFO] [stdout] help: use the named argument by name to avoid ambiguity [INFO] [stdout] | [INFO] [stdout] 645 | trace<<>>(gpu_output, ns); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/material.rs:58:14 [INFO] [stdout] | [INFO] [stdout] 58 | data[((y * w + x) as usize)] [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 58 - data[((y * w + x) as usize)] [INFO] [stdout] 58 + data[(y * w + x) as usize ] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the feature `duration_float` has been stable since 1.38.0 and no longer requires an attribute to enable [INFO] [stdout] --> src/lib.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(duration_float)] [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(stable_features)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead [INFO] [stdout] --> src/oct_tree.rs:118:42 [INFO] [stdout] | [INFO] [stdout] 118 | let mut stk: [&OctNode; 56] = mem::uninitialized(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the feature `duration_float` has been stable since 1.38.0 and no longer requires an attribute to enable [INFO] [stdout] --> src/lib.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(duration_float)] [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(stable_features)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead [INFO] [stdout] --> src/oct_tree.rs:118:42 [INFO] [stdout] | [INFO] [stdout] 118 | let mut stk: [&OctNode; 56] = mem::uninitialized(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: transmute used without annotations [INFO] [stdout] --> src/vec.rs:72:24 [INFO] [stdout] | [INFO] [stdout] 72 | Hash::hash(&mem::transmute::<_, [u8; mem::size_of::()]>(*self), state) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider adding missing annotations: `transmute::` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations [INFO] [stdout] = note: `#[warn(clippy::missing_transmute_annotations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: transmute used without annotations [INFO] [stdout] --> src/vec.rs:313:24 [INFO] [stdout] | [INFO] [stdout] 313 | Hash::hash(&mem::transmute::<_, [u8; mem::size_of::()]>(*self), state) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider adding missing annotations: `transmute::` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: transmute used without annotations [INFO] [stdout] --> src/vec.rs:72:24 [INFO] [stdout] | [INFO] [stdout] 72 | Hash::hash(&mem::transmute::<_, [u8; mem::size_of::()]>(*self), state) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider adding missing annotations: `transmute::` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations [INFO] [stdout] = note: `#[warn(clippy::missing_transmute_annotations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::filter` [INFO] [stdout] --> src/geo.rs:111:5 [INFO] [stdout] | [INFO] [stdout] 111 | / if let Some(t) = self.plane.hit(ray) { [INFO] [stdout] 112 | | if (ray.o + ray.d * t.t - self.plane.p).len2() < self.u.len2() { [INFO] [stdout] 113 | | Some(t) [INFO] [stdout] 114 | | } else { None } [INFO] [stdout] 115 | | } else { None } [INFO] [stdout] | |___________________^ help: try: `self.plane.hit(ray).filter(|t| (ray.o + ray.d * t.t - self.plane.p).len2() < self.u.len2())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_filter [INFO] [stdout] = note: `#[warn(clippy::manual_filter)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: transmute used without annotations [INFO] [stdout] --> src/vec.rs:313:24 [INFO] [stdout] | [INFO] [stdout] 313 | Hash::hash(&mem::transmute::<_, [u8; mem::size_of::()]>(*self), state) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider adding missing annotations: `transmute::` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::filter` [INFO] [stdout] --> src/geo.rs:111:5 [INFO] [stdout] | [INFO] [stdout] 111 | / if let Some(t) = self.plane.hit(ray) { [INFO] [stdout] 112 | | if (ray.o + ray.d * t.t - self.plane.p).len2() < self.u.len2() { [INFO] [stdout] 113 | | Some(t) [INFO] [stdout] 114 | | } else { None } [INFO] [stdout] 115 | | } else { None } [INFO] [stdout] | |___________________^ help: try: `self.plane.hit(ray).filter(|t| (ray.o + ray.d * t.t - self.plane.p).len2() < self.u.len2())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_filter [INFO] [stdout] = note: `#[warn(clippy::manual_filter)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/world.rs:43:25 [INFO] [stdout] | [INFO] [stdout] 43 | fn prologue(&self) -> (Vec, Vec3, Vec3, Instant, Arc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> src/util.rs:2:3 [INFO] [stdout] | [INFO] [stdout] 2 | if x < 0.0 { 0.0 } else { if x > 1.0 { 1.0 } else { x } } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with clamp: `x.clamp(0.0, 1.0)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min, min.is_nan(), or max.is_nan() [INFO] [stdout] = note: clamp returns NaN if the input is NaN [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] = note: `#[warn(clippy::manual_clamp)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/util.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | return x as f32 * INV_U32_MAX; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 23 - return x as f32 * INV_U32_MAX; [INFO] [stdout] 23 + x as f32 * INV_U32_MAX [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/util.rs:17:36 [INFO] [stdout] | [INFO] [stdout] 17 | const INV_U32_MAX: f32 = 1.0 / std::u32::MAX as f32; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 17 - const INV_U32_MAX: f32 = 1.0 / std::u32::MAX as f32; [INFO] [stdout] 17 + const INV_U32_MAX: f32 = 1.0 / u32::MAX as f32; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/world.rs:43:25 [INFO] [stdout] | [INFO] [stdout] 43 | fn prologue(&self) -> (Vec, Vec3, Vec3, Instant, Arc>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> src/util.rs:2:3 [INFO] [stdout] | [INFO] [stdout] 2 | if x < 0.0 { 0.0 } else { if x > 1.0 { 1.0 } else { x } } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with clamp: `x.clamp(0.0, 1.0)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min, min.is_nan(), or max.is_nan() [INFO] [stdout] = note: clamp returns NaN if the input is NaN [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] = note: `#[warn(clippy::manual_clamp)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/util.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | return x as f32 * INV_U32_MAX; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 23 - return x as f32 * INV_U32_MAX; [INFO] [stdout] 23 + x as f32 * INV_U32_MAX [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/util.rs:17:36 [INFO] [stdout] | [INFO] [stdout] 17 | const INV_U32_MAX: f32 = 1.0 / std::u32::MAX as f32; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 17 - const INV_U32_MAX: f32 = 1.0 / std::u32::MAX as f32; [INFO] [stdout] 17 + const INV_U32_MAX: f32 = 1.0 / u32::MAX as f32; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/mesh.rs:152:5 [INFO] [stdout] | [INFO] [stdout] 152 | !self.hit(o, inv_d).is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.hit(o, inv_d).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/mesh.rs:173:13 [INFO] [stdout] | [INFO] [stdout] 173 | assert!(s.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tri_aabb.rs:165:3 [INFO] [stdout] | [INFO] [stdout] 165 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 165 - return true; [INFO] [stdout] 165 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/mesh.rs:152:5 [INFO] [stdout] | [INFO] [stdout] 152 | !self.hit(o, inv_d).is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.hit(o, inv_d).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/mesh.rs:173:13 [INFO] [stdout] | [INFO] [stdout] 173 | assert!(s.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tri_aabb.rs:165:3 [INFO] [stdout] | [INFO] [stdout] 165 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 165 - return true; [INFO] [stdout] 165 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/bezier.rs:19:22 [INFO] [stdout] | [INFO] [stdout] 19 | let mut der_ps = std::iter::repeat(F64Vec3::zero()).take(ps.len() - 1).collect::>(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(F64Vec3::zero(), ps.len() - 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/bezier.rs:19:22 [INFO] [stdout] | [INFO] [stdout] 19 | let mut der_ps = std::iter::repeat(F64Vec3::zero()).take(ps.len() - 1).collect::>(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(F64Vec3::zero(), ps.len() - 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/oct_tree.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 83 | if idx.len() == 0 || !self.aabb.intersect_ray(ray.o, inv_d) { return None; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `idx.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/oct_tree.rs:95:14 [INFO] [stdout] | [INFO] [stdout] 95 | if u < 0.0 || u > 1.0 { continue; } // intersect outside the triangle [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `!(0.0..=1.0).contains(&u)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/oct_tree.rs:187:12 [INFO] [stdout] | [INFO] [stdout] 187 | if !ret.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `ret.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/oct_tree.rs:154:18 [INFO] [stdout] | [INFO] [stdout] 154 | if idx.len() == 0 || !x.aabb.intersect_ray(ray.o, inv_d) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `idx.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/oct_tree.rs:169:20 [INFO] [stdout] | [INFO] [stdout] 169 | if u < 0.0 || u > 1.0 { continue; } // intersect outside the triangle [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `!(0.0..=1.0).contains(&u)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/oct_tree.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 83 | if idx.len() == 0 || !self.aabb.intersect_ray(ray.o, inv_d) { return None; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `idx.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/oct_tree.rs:95:14 [INFO] [stdout] | [INFO] [stdout] 95 | if u < 0.0 || u > 1.0 { continue; } // intersect outside the triangle [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `!(0.0..=1.0).contains(&u)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/oct_tree.rs:187:12 [INFO] [stdout] | [INFO] [stdout] 187 | if !ret.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `ret.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/oct_tree.rs:154:18 [INFO] [stdout] | [INFO] [stdout] 154 | if idx.len() == 0 || !x.aabb.intersect_ray(ray.o, inv_d) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `idx.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/oct_tree.rs:169:20 [INFO] [stdout] | [INFO] [stdout] 169 | if u < 0.0 || u > 1.0 { continue; } // intersect outside the triangle [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `!(0.0..=1.0).contains(&u)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `d` is used to index `v` [INFO] [stdout] --> src/kd_tree.rs:45:18 [INFO] [stdout] | [INFO] [stdout] 45 | for d in 0..3 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 45 - for d in 0..3 { [INFO] [stdout] 45 + for (d, ) in v.iter().enumerate().take(3) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/kd_tree.rs:49:52 [INFO] [stdout] | [INFO] [stdout] 49 | for &(i, j, k) in index.iter() { var += (min!(i, j, k, d) as f64 as f64 - ave).powi(2); } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `min!(i, j, k, d) as f64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary operation [INFO] [stdout] --> src/kd_tree.rs:50:30 [INFO] [stdout] | [INFO] [stdout] 50 | if var > max_var { (sp_d = d, max_var = var); } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: statement can be reduced to: `sp_d = d; max_var = var;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stdout] = note: `#[warn(clippy::unnecessary_operation)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/kd_tree.rs:122:20 [INFO] [stdout] | [INFO] [stdout] 122 | if u < 0.0 || u > 1.0 { continue; } // intersect outside the triangle [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `!(0.0..=1.0).contains(&u)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `d` is used to index `v` [INFO] [stdout] --> src/kd_tree.rs:45:18 [INFO] [stdout] | [INFO] [stdout] 45 | for d in 0..3 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 45 - for d in 0..3 { [INFO] [stdout] 45 + for (d, ) in v.iter().enumerate().take(3) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/kd_tree.rs:181:20 [INFO] [stdout] | [INFO] [stdout] 181 | if u < 0.0 || u > 1.0 { continue; } // intersect outside the triangle [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `!(0.0..=1.0).contains(&u)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/kd_tree.rs:49:52 [INFO] [stdout] | [INFO] [stdout] 49 | for &(i, j, k) in index.iter() { var += (min!(i, j, k, d) as f64 as f64 - ave).powi(2); } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `min!(i, j, k, d) as f64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary operation [INFO] [stdout] --> src/kd_tree.rs:50:30 [INFO] [stdout] | [INFO] [stdout] 50 | if var > max_var { (sp_d = d, max_var = var); } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: statement can be reduced to: `sp_d = d; max_var = var;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stdout] = note: `#[warn(clippy::unnecessary_operation)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/kd_tree.rs:122:20 [INFO] [stdout] | [INFO] [stdout] 122 | if u < 0.0 || u > 1.0 { continue; } // intersect outside the triangle [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `!(0.0..=1.0).contains(&u)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/kd_tree.rs:181:20 [INFO] [stdout] | [INFO] [stdout] 181 | if u < 0.0 || u > 1.0 { continue; } // intersect outside the triangle [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `!(0.0..=1.0).contains(&u)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take` [INFO] [stdout] --> src/codegen.rs:220:18 [INFO] [stdout] | [INFO] [stdout] 220 | for impl_ in mem::replace(&mut self.impls, Vec::new()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(&mut self.impls)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_with_default [INFO] [stdout] = note: `#[warn(clippy::mem_replace_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/codegen.rs:349:11 [INFO] [stdout] | [INFO] [stdout] 349 | / match &object.color { [INFO] [stdout] 350 | | Color::Image { data: _, w: _, h: _ } => { [INFO] [stdout] 351 | | for (idx, &(i, j, k)) in idx.iter().enumerate() { [INFO] [stdout] 352 | | if !is_tri[idx] { continue; } [INFO] [stdout] ... | [INFO] [stdout] 358 | | _ => {} [INFO] [stdout] 359 | | } [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 349 ~ if let Color::Image { data: _, w: _, h: _ } = &object.color { [INFO] [stdout] 350 + for (idx, &(i, j, k)) in idx.iter().enumerate() { [INFO] [stdout] 351 + if !is_tri[idx] { continue; } [INFO] [stdout] 352 + write_vec2!(mesh.uv[i as usize]); [INFO] [stdout] 353 + write_vec2!(mesh.uv[j as usize]); [INFO] [stdout] 354 + write_vec2!(mesh.uv[k as usize]); [INFO] [stdout] 355 + } [INFO] [stdout] 356 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/codegen.rs:367:27 [INFO] [stdout] | [INFO] [stdout] 367 | Command::new("ld").args(&["-r", "-b", "binary", &bin_path, "-o", &format!("mesh{}.o", id)]).spawn().unwrap().wait().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-r", "-b", "binary", &bin_path, "-o", &format!("mesh{}.o", id)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/codegen.rs:387:27 [INFO] [stdout] | [INFO] [stdout] 387 | Command::new("ld").args(&["-r", "-b", "binary", &bin_path, "-o", &format!("img{}.o", id)]).spawn().unwrap().wait().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-r", "-b", "binary", &bin_path, "-o", &format!("img{}.o", id)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take` [INFO] [stdout] --> src/codegen.rs:220:18 [INFO] [stdout] | [INFO] [stdout] 220 | for impl_ in mem::replace(&mut self.impls, Vec::new()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(&mut self.impls)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_with_default [INFO] [stdout] = note: `#[warn(clippy::mem_replace_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `CudaCodegen` [INFO] [stdout] --> src/codegen.rs:554:3 [INFO] [stdout] | [INFO] [stdout] 554 | / pub fn new() -> CudaCodegen { [INFO] [stdout] 555 | | CudaCodegen { img_wh: Vec::new() } [INFO] [stdout] 556 | | } [INFO] [stdout] | |___^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 553 + impl Default for CudaCodegen { [INFO] [stdout] 554 + fn default() -> Self { [INFO] [stdout] 555 + Self::new() [INFO] [stdout] 556 + } [INFO] [stdout] 557 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/codegen.rs:349:11 [INFO] [stdout] | [INFO] [stdout] 349 | / match &object.color { [INFO] [stdout] 350 | | Color::Image { data: _, w: _, h: _ } => { [INFO] [stdout] 351 | | for (idx, &(i, j, k)) in idx.iter().enumerate() { [INFO] [stdout] 352 | | if !is_tri[idx] { continue; } [INFO] [stdout] ... | [INFO] [stdout] 358 | | _ => {} [INFO] [stdout] 359 | | } [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 349 ~ if let Color::Image { data: _, w: _, h: _ } = &object.color { [INFO] [stdout] 350 + for (idx, &(i, j, k)) in idx.iter().enumerate() { [INFO] [stdout] 351 + if !is_tri[idx] { continue; } [INFO] [stdout] 352 + write_vec2!(mesh.uv[i as usize]); [INFO] [stdout] 353 + write_vec2!(mesh.uv[j as usize]); [INFO] [stdout] 354 + write_vec2!(mesh.uv[k as usize]); [INFO] [stdout] 355 + } [INFO] [stdout] 356 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/codegen.rs:367:27 [INFO] [stdout] | [INFO] [stdout] 367 | Command::new("ld").args(&["-r", "-b", "binary", &bin_path, "-o", &format!("mesh{}.o", id)]).spawn().unwrap().wait().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-r", "-b", "binary", &bin_path, "-o", &format!("mesh{}.o", id)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/codegen.rs:387:27 [INFO] [stdout] | [INFO] [stdout] 387 | Command::new("ld").args(&["-r", "-b", "binary", &bin_path, "-o", &format!("img{}.o", id)]).spawn().unwrap().wait().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-r", "-b", "binary", &bin_path, "-o", &format!("img{}.o", id)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `CudaCodegen` [INFO] [stdout] --> src/codegen.rs:554:3 [INFO] [stdout] | [INFO] [stdout] 554 | / pub fn new() -> CudaCodegen { [INFO] [stdout] 555 | | CudaCodegen { img_wh: Vec::new() } [INFO] [stdout] 556 | | } [INFO] [stdout] | |___^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 553 + impl Default for CudaCodegen { [INFO] [stdout] 554 + fn default() -> Self { [INFO] [stdout] 555 + Self::new() [INFO] [stdout] 556 + } [INFO] [stdout] 557 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type `[&oct_tree::OctNode; 56]` does not permit being left uninitialized [INFO] [stdout] --> src/oct_tree.rs:118:37 [INFO] [stdout] | [INFO] [stdout] 118 | let mut stk: [&OctNode; 56] = mem::uninitialized(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this code causes undefined behavior when executed [INFO] [stdout] | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done [INFO] [stdout] | [INFO] [stdout] = note: references must be non-null [INFO] [stdout] = note: `#[warn(invalid_value)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type `[&oct_tree::OctNode; 56]` does not permit being left uninitialized [INFO] [stdout] --> src/oct_tree.rs:118:37 [INFO] [stdout] | [INFO] [stdout] 118 | let mut stk: [&OctNode; 56] = mem::uninitialized(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this code causes undefined behavior when executed [INFO] [stdout] | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done [INFO] [stdout] | [INFO] [stdout] = note: references must be non-null [INFO] [stdout] = note: `#[warn(invalid_value)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.41s [INFO] running `Command { std: "docker" "inspect" "3924f186184766a29474f9bd99bc830d4cf49844f49ff7d0abfceab46feb73f4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3924f186184766a29474f9bd99bc830d4cf49844f49ff7d0abfceab46feb73f4", kill_on_drop: false }` [INFO] [stdout] 3924f186184766a29474f9bd99bc830d4cf49844f49ff7d0abfceab46feb73f4