[INFO] updating cached repository tcsc/raygun [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/tcsc/raygun [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/tcsc/raygun" "work/ex/clippy-test-run/sources/stable/gh/tcsc/raygun"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/tcsc/raygun'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/tcsc/raygun" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/tcsc/raygun"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/tcsc/raygun'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] ae3c9f0770c2c8f99ceae299ec0510bf275469b6 [INFO] sha for GitHub repo tcsc/raygun: ae3c9f0770c2c8f99ceae299ec0510bf275469b6 [INFO] validating manifest of tcsc/raygun 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 tcsc/raygun 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 tcsc/raygun [INFO] finished frobbing tcsc/raygun [INFO] frobbed toml for tcsc/raygun written to work/ex/clippy-test-run/sources/stable/gh/tcsc/raygun/Cargo.toml [INFO] started frobbing tcsc/raygun [INFO] finished frobbing tcsc/raygun [INFO] frobbed toml for tcsc/raygun written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/tcsc/raygun/Cargo.toml [INFO] crate tcsc/raygun 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 tcsc/raygun against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/tcsc/raygun:/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] 466ec673b2acee0c4e8486812d084df73237663f73c83c55df7ed1ebd7c34b66 [INFO] running `"docker" "start" "-a" "466ec673b2acee0c4e8486812d084df73237663f73c83c55df7ed1ebd7c34b66"` [INFO] [stderr] Compiling cc v1.0.1 [INFO] [stderr] Checking either v1.3.0 [INFO] [stderr] Checking futures v0.1.16 [INFO] [stderr] Checking bitflags v1.0.0 [INFO] [stderr] Checking downcast v0.9.1 [INFO] [stderr] Checking num_cpus v1.7.0 [INFO] [stderr] Checking memchr v1.0.1 [INFO] [stderr] Checking time v0.1.38 [INFO] [stderr] Checking deflate v0.7.17 [INFO] [stderr] Compiling tempdir v0.3.5 [INFO] [stderr] Checking thread_local v0.3.4 [INFO] [stderr] Checking aho-corasick v0.6.3 [INFO] [stderr] Checking nom v3.2.0 [INFO] [stderr] Compiling serde_derive v1.0.15 [INFO] [stderr] Checking float-cmp v0.2.5 [INFO] [stderr] Checking coco v0.1.1 [INFO] [stderr] Checking itertools v0.6.5 [INFO] [stderr] Checking chrono v0.4.0 [INFO] [stderr] Checking simplelog v0.4.3 [INFO] [stderr] Checking regex v0.2.2 [INFO] [stderr] Checking png v0.11.0 [INFO] [stderr] Compiling backtrace-sys v0.1.16 [INFO] [stderr] Checking rayon-core v1.2.1 [INFO] [stderr] Checking rayon v0.8.2 [INFO] [stderr] Compiling serde v1.0.15 [INFO] [stderr] Checking jpeg-decoder v0.1.13 [INFO] [stderr] Checking image v0.17.0 [INFO] [stderr] Compiling backtrace v0.3.3 [INFO] [stderr] Compiling error-chain v0.11.0 [INFO] [stderr] Compiling semver v0.8.0 [INFO] [stderr] Compiling serde_json v1.0.4 [INFO] [stderr] Compiling cargo_metadata v0.3.0 [INFO] [stderr] Compiling skeptic v0.13.2 [INFO] [stderr] Compiling liquid v0.10.1 [INFO] [stderr] Checking raygun v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/colour.rs:24:18 [INFO] [stderr] | [INFO] [stderr] 24 | Colour { r: r, g: g, b: b } [INFO] [stderr] | ^^^^ help: replace it with: `r` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/colour.rs:24:24 [INFO] [stderr] | [INFO] [stderr] 24 | Colour { r: r, g: g, b: b } [INFO] [stderr] | ^^^^ help: replace it with: `g` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/colour.rs:24:30 [INFO] [stderr] | [INFO] [stderr] 24 | Colour { r: r, g: g, b: b } [INFO] [stderr] | ^^^^ help: replace it with: `b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/light/point_light.rs:15:32 [INFO] [stderr] | [INFO] [stderr] 15 | PointLight { loc: pos, colour: colour } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `colour` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/math/matrix.rs:242:13 [INFO] [stderr] | [INFO] [stderr] 242 | let w = m[idx!(3,3)]; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/math/vector.rs:29:17 [INFO] [stderr] | [INFO] [stderr] 29 | Vector {x: x, y: y, z: z} [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/math/vector.rs:29:23 [INFO] [stderr] | [INFO] [stderr] 29 | Vector {x: x, y: y, z: z} [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/math/vector.rs:29:29 [INFO] [stderr] | [INFO] [stderr] 29 | Vector {x: x, y: y, z: z} [INFO] [stderr] | ^^^^ help: replace it with: `z` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/math/vector.rs:196:14 [INFO] [stderr] | [INFO] [stderr] 196 | Vector { x: x, y: y, z: z } [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/math/vector.rs:196:20 [INFO] [stderr] | [INFO] [stderr] 196 | Vector { x: x, y: y, z: z } [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/math/vector.rs:196:26 [INFO] [stderr] | [INFO] [stderr] 196 | Vector { x: x, y: y, z: z } [INFO] [stderr] | ^^^^ help: replace it with: `z` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/primitive/sphere.rs:18:30 [INFO] [stderr] | [INFO] [stderr] 18 | Sphere{ centre: loc, radius: radius } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `radius` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/camera.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | dx: dx, [INFO] [stderr] | ^^^^^^ help: replace it with: `dx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/camera.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | dy: dy, [INFO] [stderr] | ^^^^^^ help: replace it with: `dy` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/camera.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/camera.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:18:4 [INFO] [stderr] | [INFO] [stderr] 18 | src: src, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `src` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scenefile/constructs.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scenefile/constructs.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | height: height [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scenefile/camera.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | loc: loc, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `loc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scenefile/camera.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | dir: dir, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dir` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scenefile/camera.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | right: right, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `right` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scenefile/camera.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | up: up, [INFO] [stderr] | ^^^^^^ help: replace it with: `up` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/colour.rs:24:18 [INFO] [stderr] | [INFO] [stderr] 24 | Colour { r: r, g: g, b: b } [INFO] [stderr] | ^^^^ help: replace it with: `r` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/colour.rs:24:24 [INFO] [stderr] | [INFO] [stderr] 24 | Colour { r: r, g: g, b: b } [INFO] [stderr] | ^^^^ help: replace it with: `g` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/colour.rs:24:30 [INFO] [stderr] | [INFO] [stderr] 24 | Colour { r: r, g: g, b: b } [INFO] [stderr] | ^^^^ help: replace it with: `b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/light/point_light.rs:15:32 [INFO] [stderr] | [INFO] [stderr] 15 | PointLight { loc: pos, colour: colour } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `colour` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/math/matrix.rs:242:13 [INFO] [stderr] | [INFO] [stderr] 242 | let w = m[idx!(3,3)]; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/math/vector.rs:29:17 [INFO] [stderr] | [INFO] [stderr] 29 | Vector {x: x, y: y, z: z} [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/math/vector.rs:29:23 [INFO] [stderr] | [INFO] [stderr] 29 | Vector {x: x, y: y, z: z} [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/math/vector.rs:29:29 [INFO] [stderr] | [INFO] [stderr] 29 | Vector {x: x, y: y, z: z} [INFO] [stderr] | ^^^^ help: replace it with: `z` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/math/vector.rs:196:14 [INFO] [stderr] | [INFO] [stderr] 196 | Vector { x: x, y: y, z: z } [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/math/vector.rs:196:20 [INFO] [stderr] | [INFO] [stderr] 196 | Vector { x: x, y: y, z: z } [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/math/vector.rs:196:26 [INFO] [stderr] | [INFO] [stderr] 196 | Vector { x: x, y: y, z: z } [INFO] [stderr] | ^^^^ help: replace it with: `z` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/primitive/sphere.rs:18:30 [INFO] [stderr] | [INFO] [stderr] 18 | Sphere{ centre: loc, radius: radius } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `radius` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/camera.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | dx: dx, [INFO] [stderr] | ^^^^^^ help: replace it with: `dx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/camera.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | dy: dy, [INFO] [stderr] | ^^^^^^ help: replace it with: `dy` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/camera.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/camera.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:18:4 [INFO] [stderr] | [INFO] [stderr] 18 | src: src, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `src` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scenefile/constructs.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scenefile/constructs.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | height: height [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scenefile/camera.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | loc: loc, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `loc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scenefile/camera.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | dir: dir, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dir` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scenefile/camera.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | right: right, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `right` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scenefile/camera.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | up: up, [INFO] [stderr] | ^^^^^^ help: replace it with: `up` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/light/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | mod light; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unused import: `Object` [INFO] [stderr] --> src/light/point_light.rs:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | use primitive::{AxisAlignedBox, Object, Primitive}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/math/matrix.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | return Matrix(result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Matrix(result)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/math/matrix.rs:200:9 [INFO] [stderr] | [INFO] [stderr] 200 | return Matrix(result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Matrix(result)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Point`, `Vector` [INFO] [stderr] --> src/math/transform.rs:2:18 [INFO] [stderr] | [INFO] [stderr] 2 | use math::{self, Point, Matrix, Vector}; [INFO] [stderr] | ^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `degrees` [INFO] [stderr] --> src/math/transform.rs:3:29 [INFO] [stderr] | [INFO] [stderr] 3 | use units::{Angle, Radians, degrees}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Vector` [INFO] [stderr] --> src/primitive/aabb.rs:1:19 [INFO] [stderr] | [INFO] [stderr] 1 | use math::{Point, Vector}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/primitive/_box.rs:2:12 [INFO] [stderr] | [INFO] [stderr] 2 | use math::{self, point, Point, Vector}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Object` [INFO] [stderr] --> src/primitive/_box.rs:3:33 [INFO] [stderr] | [INFO] [stderr] 3 | use primitive::{AxisAlignedBox, Object, Primitive}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Matrix` [INFO] [stderr] --> src/primitive/union.rs:2:12 [INFO] [stderr] | [INFO] [stderr] 2 | use math::{Matrix, Point, Transform, Vector}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Finish` [INFO] [stderr] --> src/primitive/object.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | use material::{Finish, Material}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Vector` [INFO] [stderr] --> src/primitive/object.rs:5:30 [INFO] [stderr] | [INFO] [stderr] 5 | use math::{Point, Transform, Vector}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `math::point` [INFO] [stderr] --> src/primitive/object.rs:87:13 [INFO] [stderr] | [INFO] [stderr] 87 | use math::point; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/primitive/mod.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | pub mod primitive; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unused import: `Object` [INFO] [stderr] --> src/primitive/plane.rs:2:17 [INFO] [stderr] | [INFO] [stderr] 2 | use primitive::{Object, Primitive}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Object` [INFO] [stderr] --> src/primitive/sphere.rs:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | use primitive::{AxisAlignedBox, Object, Primitive}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::boxed` [INFO] [stderr] --> src/primitive/mod.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use std::boxed; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::Arc` [INFO] [stderr] --> src/primitive/mod.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | use std::sync::Arc; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/material.rs:1:14 [INFO] [stderr] | [INFO] [stderr] 1 | use colour::{self, Colour}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Light`, `PointLight` [INFO] [stderr] --> src/scene.rs:6:13 [INFO] [stderr] | [INFO] [stderr] 6 | use light::{Light, PointLight}; [INFO] [stderr] | ^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/scene.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | return visitor.lights; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `visitor.lights` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ops::Deref` [INFO] [stderr] --> src/scene.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | use std::ops::Deref; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Matrix`, `self` [INFO] [stderr] --> src/scenefile/constructs.rs:8:12 [INFO] [stderr] | [INFO] [stderr] 8 | use math::{self, Matrix, Vector, Transform}; [INFO] [stderr] | ^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `math::Transform` [INFO] [stderr] --> src/scenefile/lights.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use math::Transform; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Transform`, `Vector`, `self` [INFO] [stderr] --> src/scenefile/primitive.rs:4:12 [INFO] [stderr] | [INFO] [stderr] 4 | use math::{self, Vector, Transform}; [INFO] [stderr] | ^^^^ ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `units::degrees` [INFO] [stderr] --> src/scenefile/primitive.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use units::degrees; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/scenefile/primitive.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefCell` [INFO] [stderr] --> src/scenefile/primitive.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | use std::cell::RefCell; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `self`, `translation_matrix` [INFO] [stderr] --> src/scenefile/transform.rs:2:12 [INFO] [stderr] | [INFO] [stderr] 2 | use math::{self, Vector, Transform, translation_matrix}; [INFO] [stderr] | ^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::error::Error` [INFO] [stderr] --> src/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use std::error::Error; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Config`, `LogLevelFilter`, `TermLogger` [INFO] [stderr] --> src/main.rs:14:17 [INFO] [stderr] | [INFO] [stderr] 14 | use simplelog::{TermLogger, LogLevelFilter, Config}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/light/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | mod light; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unused import: `Object` [INFO] [stderr] --> src/light/point_light.rs:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | use primitive::{AxisAlignedBox, Object, Primitive}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/math/matrix.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | return Matrix(result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Matrix(result)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/math/matrix.rs:200:9 [INFO] [stderr] | [INFO] [stderr] 200 | return Matrix(result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Matrix(result)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `Ulps` [INFO] [stderr] --> src/math/matrix.rs:253:21 [INFO] [stderr] | [INFO] [stderr] 253 | use float_cmp::{Ulps, ApproxEqUlps}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/math/matrix.rs:256:27 [INFO] [stderr] | [INFO] [stderr] 256 | fn matrix_transpose() -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/math/matrix.rs:267:39 [INFO] [stderr] | [INFO] [stderr] 267 | fn matrix_transpose_reflexivity() -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/math/matrix.rs:272:25 [INFO] [stderr] | [INFO] [stderr] 272 | fn matrix_default() -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/math/vector.rs:243:41 [INFO] [stderr] | [INFO] [stderr] 243 | assert!((n.x - 0.57735).abs() < 0.000001); [INFO] [stderr] | ^^^^^^^^ help: consider: `0.000_001` [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/math/vector.rs:244:41 [INFO] [stderr] | [INFO] [stderr] 244 | assert!((n.y - 0.57735).abs() < 0.000001); [INFO] [stderr] | ^^^^^^^^ help: consider: `0.000_001` [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/math/vector.rs:245:41 [INFO] [stderr] | [INFO] [stderr] 245 | assert!((n.z - 0.57735).abs() < 0.000001); [INFO] [stderr] | ^^^^^^^^ help: consider: `0.000_001` [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: unneeded unit return type [INFO] [stderr] --> src/math/vector.rs:249:25 [INFO] [stderr] | [INFO] [stderr] 249 | fn vector_default() -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/math/vector.rs:255:26 [INFO] [stderr] | [INFO] [stderr] 255 | fn vector_equality() -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/math/vector.rs:266:26 [INFO] [stderr] | [INFO] [stderr] 266 | fn vector_addition() -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/math/vector.rs:274:29 [INFO] [stderr] | [INFO] [stderr] 274 | fn vector_subtraction() -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/math/vector.rs:282:26 [INFO] [stderr] | [INFO] [stderr] 282 | fn vector_negation() -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/math/vector.rs:289:39 [INFO] [stderr] | [INFO] [stderr] 289 | fn vector_scalar_multiplication() -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/math/vector.rs:296:29 [INFO] [stderr] | [INFO] [stderr] 296 | fn point_construction() -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Point`, `Vector` [INFO] [stderr] --> src/math/transform.rs:2:18 [INFO] [stderr] | [INFO] [stderr] 2 | use math::{self, Point, Matrix, Vector}; [INFO] [stderr] | ^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/units/angle.rs:182:43 [INFO] [stderr] | [INFO] [stderr] 182 | assert!(floats_are_close(z.sin(), 0.70710678118, 1e-10)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0.707_106_781_18` [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/units/angle.rs:194:43 [INFO] [stderr] | [INFO] [stderr] 194 | assert!(floats_are_close(z.cos(), 0.70710678118, 1e-10)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0.707_106_781_18` [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/units/angle.rs:228:43 [INFO] [stderr] | [INFO] [stderr] 228 | assert!(floats_are_close(z.sin(), 0.70710678118, 1e-10)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0.707_106_781_18` [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/units/angle.rs:240:43 [INFO] [stderr] | [INFO] [stderr] 240 | assert!(floats_are_close(z.cos(), 0.70710678118, 1e-10)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0.707_106_781_18` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused import: `Vector` [INFO] [stderr] --> src/primitive/aabb.rs:1:19 [INFO] [stderr] | [INFO] [stderr] 1 | use math::{Point, Vector}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/primitive/_box.rs:2:12 [INFO] [stderr] | [INFO] [stderr] 2 | use math::{self, point, Point, Vector}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Object` [INFO] [stderr] --> src/primitive/_box.rs:3:33 [INFO] [stderr] | [INFO] [stderr] 3 | use primitive::{AxisAlignedBox, Object, Primitive}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Matrix` [INFO] [stderr] --> src/primitive/union.rs:2:12 [INFO] [stderr] | [INFO] [stderr] 2 | use math::{Matrix, Point, Transform, Vector}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `IDENTITY` [INFO] [stderr] --> src/primitive/union.rs:65:31 [INFO] [stderr] | [INFO] [stderr] 65 | use math::{point, vector, IDENTITY}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Finish` [INFO] [stderr] --> src/primitive/object.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | use material::{Finish, Material}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Vector` [INFO] [stderr] --> src/primitive/object.rs:5:30 [INFO] [stderr] | [INFO] [stderr] 5 | use math::{Point, Transform, Vector}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `math::point` [INFO] [stderr] --> src/primitive/object.rs:87:13 [INFO] [stderr] | [INFO] [stderr] 87 | use math::point; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/primitive/mod.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | pub mod primitive; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unused import: `Object` [INFO] [stderr] --> src/primitive/plane.rs:2:17 [INFO] [stderr] | [INFO] [stderr] 2 | use primitive::{Object, Primitive}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Object` [INFO] [stderr] --> src/primitive/sphere.rs:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | use primitive::{AxisAlignedBox, Object, Primitive}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `primitive::primitive::*` [INFO] [stderr] --> src/primitive/sphere.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | use primitive::primitive::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/primitive/sphere.rs:105:32 [INFO] [stderr] | [INFO] [stderr] 105 | assert!(x - 90.0 < 0.0000001) [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.000_000_1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::boxed` [INFO] [stderr] --> src/primitive/mod.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use std::boxed; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::Arc` [INFO] [stderr] --> src/primitive/mod.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | use std::sync::Arc; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/material.rs:1:14 [INFO] [stderr] | [INFO] [stderr] 1 | use colour::{self, Colour}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Light`, `PointLight` [INFO] [stderr] --> src/scene.rs:6:13 [INFO] [stderr] | [INFO] [stderr] 6 | use light::{Light, PointLight}; [INFO] [stderr] | ^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/scene.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | return visitor.lights; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `visitor.lights` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ops::Deref` [INFO] [stderr] --> src/scene.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | use std::ops::Deref; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Matrix`, `self` [INFO] [stderr] --> src/scenefile/constructs.rs:8:12 [INFO] [stderr] | [INFO] [stderr] 8 | use math::{self, Matrix, Vector, Transform}; [INFO] [stderr] | ^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `point` [INFO] [stderr] --> src/scenefile/camera.rs:59:20 [INFO] [stderr] | [INFO] [stderr] 59 | use math::{point, vector}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::f64::consts::FRAC_1_SQRT_2` [INFO] [stderr] --> src/scenefile/camera.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | use std::f64::consts::FRAC_1_SQRT_2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `math::Transform` [INFO] [stderr] --> src/scenefile/lights.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use math::Transform; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `material::Finish` [INFO] [stderr] --> src/scenefile/material/mod.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | use material::Finish; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Vector`, `self` [INFO] [stderr] --> src/scenefile/primitive.rs:4:12 [INFO] [stderr] | [INFO] [stderr] 4 | use math::{self, Vector, Transform}; [INFO] [stderr] | ^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/scenefile/primitive.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefCell` [INFO] [stderr] --> src/scenefile/primitive.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | use std::cell::RefCell; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `nom` [INFO] [stderr] --> src/scenefile/primitive.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | use nom; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `nom::IResult` [INFO] [stderr] --> src/scenefile/primitive.rs:141:13 [INFO] [stderr] | [INFO] [stderr] 141 | use nom::IResult; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `nom::IResult` [INFO] [stderr] --> src/scenefile/primitive.rs:157:13 [INFO] [stderr] | [INFO] [stderr] 157 | use nom::IResult; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `nom::IResult` [INFO] [stderr] --> src/scenefile/primitive.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | use nom::IResult; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `math::point` [INFO] [stderr] --> src/scenefile/primitive.rs:187:13 [INFO] [stderr] | [INFO] [stderr] 187 | use math::point; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `nom::IResult` [INFO] [stderr] --> src/scenefile/primitive.rs:189:13 [INFO] [stderr] | [INFO] [stderr] 189 | use nom::IResult; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/scenefile/primitive.rs:198:31 [INFO] [stderr] | [INFO] [stderr] 198 | let expected = vector(0.1801712440614613, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0.180_171_244_061_461_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/scenefile/primitive.rs:199:31 [INFO] [stderr] | [INFO] [stderr] 199 | 0.5104851915074736, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0.510_485_191_507_473_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/scenefile/primitive.rs:200:31 [INFO] [stderr] | [INFO] [stderr] 200 | 0.8407991389534859); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0.840_799_138_953_485_9` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused imports: `self`, `translation_matrix` [INFO] [stderr] --> src/scenefile/transform.rs:2:12 [INFO] [stderr] | [INFO] [stderr] 2 | use math::{self, Vector, Transform, translation_matrix}; [INFO] [stderr] | ^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `nom` [INFO] [stderr] --> src/scenefile/transform.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | use nom; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::*` [INFO] [stderr] --> src/scenefile/mod.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | use super::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `nom` [INFO] [stderr] --> src/scenefile/mod.rs:114:9 [INFO] [stderr] | [INFO] [stderr] 114 | use nom; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::*` [INFO] [stderr] --> src/render.rs:257:9 [INFO] [stderr] | [INFO] [stderr] 257 | use super::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `colour` [INFO] [stderr] --> src/render.rs:259:9 [INFO] [stderr] | [INFO] [stderr] 259 | use colour; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `light::PointLight` [INFO] [stderr] --> src/render.rs:263:9 [INFO] [stderr] | [INFO] [stderr] 263 | use light::PointLight; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `scenefile::SceneError` [INFO] [stderr] --> src/main.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | use scenefile::SceneError; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `light::Light` [INFO] [stderr] --> src/render.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use light::Light; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `light::Light` [INFO] [stderr] --> src/render.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use light::Light; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scene` [INFO] [stderr] --> src/scenefile/lights.rs:11:41 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn point_light<'a>(input: &'a [u8], scene: &SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] | ^^^^^ help: consider using `_scene` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scene` [INFO] [stderr] --> src/scenefile/primitive.rs:17:36 [INFO] [stderr] | [INFO] [stderr] 17 | fn sphere<'a, 'b>(input: &'a [u8], scene: &'b SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] | ^^^^^ help: consider using `_scene` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scene` [INFO] [stderr] --> src/scenefile/primitive.rs:40:34 [INFO] [stderr] | [INFO] [stderr] 40 | fn _box<'a, 'b>(input: &'a [u8], scene: &'b SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] | ^^^^^ help: consider using `_scene` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scene` [INFO] [stderr] --> src/scenefile/primitive.rs:60:35 [INFO] [stderr] | [INFO] [stderr] 60 | fn plane<'a, 'b>(input: &'a [u8], scene: &'b SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] | ^^^^^ help: consider using `_scene` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `object` [INFO] [stderr] --> src/primitive/primitive.rs:29:31 [INFO] [stderr] | [INFO] [stderr] 29 | fn accept_children(&self, object: &Object, visitor: &mut SceneVisitor) {} [INFO] [stderr] | ^^^^^^ help: consider using `_object` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `visitor` [INFO] [stderr] --> src/primitive/primitive.rs:29:48 [INFO] [stderr] | [INFO] [stderr] 29 | fn accept_children(&self, object: &Object, visitor: &mut SceneVisitor) {} [INFO] [stderr] | ^^^^^^^ help: consider using `_visitor` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `t` [INFO] [stderr] --> src/scene.rs:20:34 [INFO] [stderr] | [INFO] [stderr] 20 | fn push_transform(&mut self, t: &Transform) {} [INFO] [stderr] | ^ help: consider using `_t` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `r` [INFO] [stderr] --> src/light/point_light.rs:28:26 [INFO] [stderr] | [INFO] [stderr] 28 | fn intersects(&self, r: Ray) -> Option { [INFO] [stderr] | ^ help: consider using `_r` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pt` [INFO] [stderr] --> src/light/point_light.rs:39:22 [INFO] [stderr] | [INFO] [stderr] 39 | fn normal(&self, pt: Point) -> Vector { [INFO] [stderr] | ^^ help: consider using `_pt` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `p` [INFO] [stderr] --> src/light/point_light.rs:62:27 [INFO] [stderr] | [INFO] [stderr] 62 | fn illuminates(&self, p: Point) -> Option { [INFO] [stderr] | ^ help: consider using `_p` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `r` [INFO] [stderr] --> src/primitive/union.rs:20:26 [INFO] [stderr] | [INFO] [stderr] 20 | fn intersects(&self, r: Ray) -> Option { [INFO] [stderr] | ^ help: consider using `_r` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pt` [INFO] [stderr] --> src/primitive/union.rs:24:22 [INFO] [stderr] | [INFO] [stderr] 24 | fn normal(&self, pt: Point) -> Vector { [INFO] [stderr] | ^^ help: consider using `_pt` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pt` [INFO] [stderr] --> src/primitive/plane.rs:24:22 [INFO] [stderr] | [INFO] [stderr] 24 | fn normal(&self, pt: Point) -> Vector { [INFO] [stderr] | ^^ help: consider using `_pt` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `p` [INFO] [stderr] --> src/material.rs:44:33 [INFO] [stderr] | [INFO] [stderr] 44 | pub fn sample<'a>(&'a self, p: Point) -> (Colour, &'a Finish) { [INFO] [stderr] | ^ help: consider using `_p` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `r` [INFO] [stderr] --> src/scene.rs:88:23 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn sky(&self, r: Ray) -> Colour { [INFO] [stderr] | ^ help: consider using `_r` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `base` [INFO] [stderr] --> src/scenefile/constructs.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | let base = Arc::new(Transform::default()); [INFO] [stderr] | ^^^^ help: consider using `_base` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `base` [INFO] [stderr] --> src/scenefile/constructs.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | let base = Arc::new(Transform::default()); [INFO] [stderr] | ^^^^ help: consider using `_base` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scene` [INFO] [stderr] --> src/scenefile/lights.rs:11:41 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn point_light<'a>(input: &'a [u8], scene: &SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] | ^^^^^ help: consider using `_scene` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scene` [INFO] [stderr] --> src/scenefile/primitive.rs:17:36 [INFO] [stderr] | [INFO] [stderr] 17 | fn sphere<'a, 'b>(input: &'a [u8], scene: &'b SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] | ^^^^^ help: consider using `_scene` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scene` [INFO] [stderr] --> src/scenefile/primitive.rs:40:34 [INFO] [stderr] | [INFO] [stderr] 40 | fn _box<'a, 'b>(input: &'a [u8], scene: &'b SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] | ^^^^^ help: consider using `_scene` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scene` [INFO] [stderr] --> src/scenefile/primitive.rs:60:35 [INFO] [stderr] | [INFO] [stderr] 60 | fn plane<'a, 'b>(input: &'a [u8], scene: &'b SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] | ^^^^^ help: consider using `_scene` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `r` [INFO] [stderr] --> src/primitive/plane.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | let r = Ray::new(point(0.0, 1.0, 0.0), [INFO] [stderr] | ^ help: consider using `_r` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `object` [INFO] [stderr] --> src/primitive/primitive.rs:29:31 [INFO] [stderr] | [INFO] [stderr] 29 | fn accept_children(&self, object: &Object, visitor: &mut SceneVisitor) {} [INFO] [stderr] | ^^^^^^ help: consider using `_object` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `visitor` [INFO] [stderr] --> src/primitive/primitive.rs:29:48 [INFO] [stderr] | [INFO] [stderr] 29 | fn accept_children(&self, object: &Object, visitor: &mut SceneVisitor) {} [INFO] [stderr] | ^^^^^^^ help: consider using `_visitor` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `t` [INFO] [stderr] --> src/scene.rs:20:34 [INFO] [stderr] | [INFO] [stderr] 20 | fn push_transform(&mut self, t: &Transform) {} [INFO] [stderr] | ^ help: consider using `_t` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `r` [INFO] [stderr] --> src/light/point_light.rs:28:26 [INFO] [stderr] | [INFO] [stderr] 28 | fn intersects(&self, r: Ray) -> Option { [INFO] [stderr] | ^ help: consider using `_r` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pt` [INFO] [stderr] --> src/light/point_light.rs:39:22 [INFO] [stderr] | [INFO] [stderr] 39 | fn normal(&self, pt: Point) -> Vector { [INFO] [stderr] | ^^ help: consider using `_pt` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `p` [INFO] [stderr] --> src/light/point_light.rs:62:27 [INFO] [stderr] | [INFO] [stderr] 62 | fn illuminates(&self, p: Point) -> Option { [INFO] [stderr] | ^ help: consider using `_p` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `r` [INFO] [stderr] --> src/primitive/union.rs:20:26 [INFO] [stderr] | [INFO] [stderr] 20 | fn intersects(&self, r: Ray) -> Option { [INFO] [stderr] | ^ help: consider using `_r` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pt` [INFO] [stderr] --> src/primitive/union.rs:24:22 [INFO] [stderr] | [INFO] [stderr] 24 | fn normal(&self, pt: Point) -> Vector { [INFO] [stderr] | ^^ help: consider using `_pt` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pt` [INFO] [stderr] --> src/primitive/plane.rs:24:22 [INFO] [stderr] | [INFO] [stderr] 24 | fn normal(&self, pt: Point) -> Vector { [INFO] [stderr] | ^^ help: consider using `_pt` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `p` [INFO] [stderr] --> src/material.rs:44:33 [INFO] [stderr] | [INFO] [stderr] 44 | pub fn sample<'a>(&'a self, p: Point) -> (Colour, &'a Finish) { [INFO] [stderr] | ^ help: consider using `_p` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `r` [INFO] [stderr] --> src/scene.rs:88:23 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn sky(&self, r: Ray) -> Colour { [INFO] [stderr] | ^ help: consider using `_r` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `base` [INFO] [stderr] --> src/scenefile/constructs.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | let base = Arc::new(Transform::default()); [INFO] [stderr] | ^^^^ help: consider using `_base` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `base` [INFO] [stderr] --> src/scenefile/constructs.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | let base = Arc::new(Transform::default()); [INFO] [stderr] | ^^^^ help: consider using `_base` instead [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/light/point_light.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | pub fn new(pos: Point, colour: Colour) -> PointLight { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `position` [INFO] [stderr] --> src/light/point_light.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn position(&self) -> Point { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `colour` [INFO] [stderr] --> src/light/point_light.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn colour(&self) -> Colour { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `unit_vector` [INFO] [stderr] --> src/math/vector.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn unit_vector(x: f64, y: f64, z: f64) -> UnitVector { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `min` [INFO] [stderr] --> src/math/mod.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn min(a: T, b: T) -> T { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `max` [INFO] [stderr] --> src/math/mod.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn max(a: T, b: T) -> T { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `radians` [INFO] [stderr] --> src/units/angle.rs:138:1 [INFO] [stderr] | [INFO] [stderr] 138 | pub fn radians(n: f64) -> Angle { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/primitive/_box.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | pub fn new(lower: Point, upper: Point) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `lower` [INFO] [stderr] --> src/primitive/_box.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn lower(&self) -> &Point { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `upper` [INFO] [stderr] --> src/primitive/_box.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn upper(&self) -> &Point { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/primitive/union.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | pub fn new() -> Union { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `from` [INFO] [stderr] --> src/primitive/object.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn from(p: Arc) -> Object { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `as_primitive` [INFO] [stderr] --> src/primitive/object.rs:77:5 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn as_primitive(&self) -> Option<&P> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/primitive/sphere.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn new(loc: Point, radius: f64) -> Sphere { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `with_loc` [INFO] [stderr] --> src/camera.rs:33:5 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn with_loc(&self, x: f64, y: f64, z: f64) -> Camera { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `with_dir` [INFO] [stderr] --> src/camera.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn with_dir(&self, x: f64, y: f64, z: f64) -> Camera { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `width` [INFO] [stderr] --> src/camera.rs:86:5 [INFO] [stderr] | [INFO] [stderr] 86 | width: isize, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `height` [INFO] [stderr] --> src/camera.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | height: isize, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/scene.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn new() -> Scene { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_object` [INFO] [stderr] --> src/scene.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | pub fn add_object(&mut self, obj: Object) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/scenefile/constructs.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn new(width: isize, height: isize) -> SceneState { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/colour.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | let v = other as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 82 | colour_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/colour.rs:75:25 [INFO] [stderr] | [INFO] [stderr] 75 | let v = self as f64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 82 | colour_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/colour.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | let v = other as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 82 | colour_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/colour.rs:75:25 [INFO] [stderr] | [INFO] [stderr] 75 | let v = self as f64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 82 | colour_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/colour.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | let v = other as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 82 | colour_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/colour.rs:75:25 [INFO] [stderr] | [INFO] [stderr] 75 | let v = self as f64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 82 | colour_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [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: variable does not need to be mutable [INFO] [stderr] --> src/scenefile/lights.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | let mut state = SceneState::default(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/math/matrix.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | / match write!(f, [INFO] [stderr] 119 | | "({}, {}, {}, {})", [INFO] [stderr] 120 | | values[row], [INFO] [stderr] 121 | | values[row + 1], [INFO] [stderr] ... | [INFO] [stderr] 125 | | _ => (), [INFO] [stderr] 126 | | } [INFO] [stderr] | |_____________^ help: try this: `if let e @ Err(_) = $ dst . write_fmt ( format_args ! ( $ ( $ arg ) * ) ) { return e }` [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] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/math/matrix.rs:142:5 [INFO] [stderr] | [INFO] [stderr] 142 | / fn ne(&self, other: &Matrix) -> bool { [INFO] [stderr] 143 | | let &Matrix(ref a) = self; [INFO] [stderr] 144 | | let &Matrix(ref b) = other; [INFO] [stderr] 145 | | a != b [INFO] [stderr] 146 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::partialeq_ne_impl)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/math/matrix.rs:154:5 [INFO] [stderr] | [INFO] [stderr] 154 | / fn index<'a>(&'a self, idx: (usize, usize)) -> &'a f64 { [INFO] [stderr] 155 | | let &Matrix(ref values) = self; [INFO] [stderr] 156 | | let (i, j) = idx; [INFO] [stderr] 157 | | &values[(j * 4) + i] [INFO] [stderr] 158 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/math/matrix.rs:165:5 [INFO] [stderr] | [INFO] [stderr] 165 | / fn index_mut<'a>(&'a mut self, idx: (usize, usize)) -> &'a mut f64 { [INFO] [stderr] 166 | | let Matrix(ref mut values) = *self; [INFO] [stderr] 167 | | let (i, j) = idx; [INFO] [stderr] 168 | | &mut values[(j * 4) + i] [INFO] [stderr] 169 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/math/matrix.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | &self * &rhs [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 209 | self * rhs [INFO] [stderr] | ^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/math/matrix.rs:218:9 [INFO] [stderr] | [INFO] [stderr] 218 | self * &rhs [INFO] [stderr] | ^^^^^^^---- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `rhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Mul` impl [INFO] [stderr] --> src/math/matrix.rs:243:25 [INFO] [stderr] | [INFO] [stderr] 243 | let inv_w = 1.0 / w; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::suspicious_arithmetic_impl)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/math/vector.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | / fn ne(&self, other: &Vector) -> bool { [INFO] [stderr] 91 | | self.x != other.x || self.y != other.y || self.z != other.z [INFO] [stderr] 92 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:120:25 [INFO] [stderr] | [INFO] [stderr] 120 | let v = other as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 159 | vec_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:129:25 [INFO] [stderr] | [INFO] [stderr] 129 | let v = self as f64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 159 | vec_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:120:25 [INFO] [stderr] | [INFO] [stderr] 120 | let v = other as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 159 | vec_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:129:25 [INFO] [stderr] | [INFO] [stderr] 129 | let v = self as f64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 159 | vec_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:120:25 [INFO] [stderr] | [INFO] [stderr] 120 | let v = other as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 159 | vec_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:129:25 [INFO] [stderr] | [INFO] [stderr] 129 | let v = self as f64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 159 | vec_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [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] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/math/vector.rs:144:31 [INFO] [stderr] | [INFO] [stderr] 144 | vector(self.x * v, self.y * v, self.z * v) [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/math/vector.rs:144:43 [INFO] [stderr] | [INFO] [stderr] 144 | vector(self.x * v, self.y * v, self.z * v) [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/math/vector.rs:144:55 [INFO] [stderr] | [INFO] [stderr] 144 | vector(self.x * v, self.y * v, self.z * v) [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/math/vector.rs:153:32 [INFO] [stderr] | [INFO] [stderr] 153 | vector(other.x * v, other.y * v, other.z * v) [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/math/vector.rs:153:45 [INFO] [stderr] | [INFO] [stderr] 153 | vector(other.x * v, other.y * v, other.z * v) [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/math/vector.rs:153:58 [INFO] [stderr] | [INFO] [stderr] 153 | vector(other.x * v, other.y * v, other.z * v) [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:143:31 [INFO] [stderr] | [INFO] [stderr] 143 | let v = 1.0 / (other as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:152:31 [INFO] [stderr] | [INFO] [stderr] 152 | let v = 1.0 / (self as f64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:143:31 [INFO] [stderr] | [INFO] [stderr] 143 | let v = 1.0 / (other as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:152:31 [INFO] [stderr] | [INFO] [stderr] 152 | let v = 1.0 / (self as f64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:143:31 [INFO] [stderr] | [INFO] [stderr] 143 | let v = 1.0 / (other as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:152:31 [INFO] [stderr] | [INFO] [stderr] 152 | let v = 1.0 / (self as f64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:81:41 [INFO] [stderr] | [INFO] [stderr] 81 | Angle::new(self.get() * (other as f64)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 118 | angle_mul_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:90:28 [INFO] [stderr] | [INFO] [stderr] 90 | Angle::new((self as f64) * other.get()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 118 | angle_mul_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:81:41 [INFO] [stderr] | [INFO] [stderr] 81 | Angle::new(self.get() * (other as f64)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 118 | angle_mul_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:90:28 [INFO] [stderr] | [INFO] [stderr] 90 | Angle::new((self as f64) * other.get()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 118 | angle_mul_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:103:41 [INFO] [stderr] | [INFO] [stderr] 103 | Angle::new(self.get() / (other as f64)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 119 | angle_div_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:112:28 [INFO] [stderr] | [INFO] [stderr] 112 | Angle::new((self as f64) / other.get()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 119 | angle_div_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:103:41 [INFO] [stderr] | [INFO] [stderr] 103 | Angle::new(self.get() / (other as f64)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 119 | angle_div_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:112:28 [INFO] [stderr] | [INFO] [stderr] 112 | Angle::new((self as f64) / other.get()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 119 | angle_div_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [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] error: this `if` has identical blocks [INFO] [stderr] --> src/primitive/aabb.rs:49:33 [INFO] [stderr] | [INFO] [stderr] 49 | } else if t_min > t_max { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 50 | | // Ray does not intersect box [INFO] [stderr] 51 | | None [INFO] [stderr] 52 | | } else { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/primitive/aabb.rs:44:24 [INFO] [stderr] | [INFO] [stderr] 44 | if t_max < 0.0 { [INFO] [stderr] | ________________________^ [INFO] [stderr] 45 | | // ray intersects box if extended infinitely, but the whole box [INFO] [stderr] 46 | | // is behind the ray origin, which doesn't count [INFO] [stderr] 47 | | //error!("Should never happen"); [INFO] [stderr] 48 | | None [INFO] [stderr] 49 | | } else if t_min > t_max { [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/primitive/union.rs:39:28 [INFO] [stderr] | [INFO] [stderr] 39 | Some(ref t) => t.as_ref().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*t.as_ref()` [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] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/primitive/object.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn as_light<'a>(&'a self) -> Option<&'a Light> { [INFO] [stderr] 29 | | self.primitive.as_light() [INFO] [stderr] 30 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/primitive/sphere.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / fn ne(&self, other: &Sphere) -> bool { [INFO] [stderr] 38 | | self.centre != other.centre || self.radius != other.radius [INFO] [stderr] 39 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/material.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | / pub fn sample<'a>(&'a self, p: Point) -> (Colour, &'a Finish) { [INFO] [stderr] 45 | | match self.pigment { [INFO] [stderr] 46 | | Pigment::Solid(c) => (c, &self.finish) [INFO] [stderr] 47 | | } [INFO] [stderr] 48 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scene.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | / pub fn lights<'a>(&'a self) -> Vec { [INFO] [stderr] 50 | | struct LightVisitor { [INFO] [stderr] 51 | | transform_stack: Vec, [INFO] [stderr] 52 | | lights: Vec [INFO] [stderr] ... | [INFO] [stderr] 85 | | return visitor.lights; [INFO] [stderr] 86 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/scene.rs:57:28 [INFO] [stderr] | [INFO] [stderr] 57 | let head = self.transform_stack.last().unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.transform_stack.last().unwrap()` [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] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/scene.rs:71:36 [INFO] [stderr] | [INFO] [stderr] 71 | transform: t.clone(), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*t` [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] warning: redundant closure found [INFO] [stderr] --> src/scenefile/constructs.rs:101:14 [INFO] [stderr] | [INFO] [stderr] 101 | .map(|value| storefn(value)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `storefn` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scenefile/primitive.rs:191:13 [INFO] [stderr] | [INFO] [stderr] 191 | let mut state = SceneState::default(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/scenefile/constructs.rs:163:34 [INFO] [stderr] | [INFO] [stderr] 163 | transform: transform.map(|t| Box::new(t)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Box::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 80 [INFO] [stderr] --> src/scenefile/camera.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | / pub fn camera<'a>(input: &'a [u8], state: &SceneState) -> IResult<&'a [u8], Camera> { [INFO] [stderr] 13 | | let mut loc = point(0.0, 0.0, 0.0); [INFO] [stderr] 14 | | let mut target = point(0.0, 0.0, 0.0); [INFO] [stderr] 15 | | let mut sky = point(0.0, 1.0, 0.0); [INFO] [stderr] ... | [INFO] [stderr] 48 | | }) [INFO] [stderr] 49 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 50 [INFO] [stderr] --> src/scenefile/lights.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn point_light<'a>(input: &'a [u8], scene: &SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] 12 | | let mut result = PointLight::default(); [INFO] [stderr] 13 | | [INFO] [stderr] 14 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 30 | | None)) [INFO] [stderr] 31 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/render.rs:308:13 [INFO] [stderr] | [INFO] [stderr] 308 | let mut s = Scene::new(); [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/material/pigment.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / fn solid_pigment<'a>(input: &'a [u8]) -> IResult<&'a [u8], Pigment> { [INFO] [stderr] 9 | | let mut result = Pigment::default(); [INFO] [stderr] 10 | | [INFO] [stderr] 11 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 20 | | rval.map(|_| result) [INFO] [stderr] 21 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 34 [INFO] [stderr] --> src/scenefile/material/pigment.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / fn solid_pigment<'a>(input: &'a [u8]) -> IResult<&'a [u8], Pigment> { [INFO] [stderr] 9 | | let mut result = Pigment::default(); [INFO] [stderr] 10 | | [INFO] [stderr] 11 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 20 | | rval.map(|_| result) [INFO] [stderr] 21 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/material/pigment.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | / pub fn pigment<'a>(input: &'a [u8]) -> IResult<&'a [u8], Pigment> { [INFO] [stderr] 24 | | ws!(input, alt!(solid_pigment)) [INFO] [stderr] 25 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/material/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn finish<'a>(input: &'a [u8]) -> IResult<&'a [u8], Finish> { [INFO] [stderr] 10 | | let mut result = Finish::default(); [INFO] [stderr] 11 | | [INFO] [stderr] 12 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 71 [INFO] [stderr] --> src/scenefile/material/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn finish<'a>(input: &'a [u8]) -> IResult<&'a [u8], Finish> { [INFO] [stderr] 10 | | let mut result = Finish::default(); [INFO] [stderr] 11 | | [INFO] [stderr] 12 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLACK` [INFO] [stderr] --> src/colour.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | pub const BLACK : Colour = Colour { r: 0.0, g: 0.0, b: 0.0 }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/light/point_light.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | pub fn new(pos: Point, colour: Colour) -> PointLight { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `position` [INFO] [stderr] --> src/light/point_light.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn position(&self) -> Point { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `colour` [INFO] [stderr] --> src/light/point_light.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn colour(&self) -> Colour { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `UnitVector` [INFO] [stderr] --> src/math/vector.rs:18:1 [INFO] [stderr] | [INFO] [stderr] 18 | pub type UnitVector = Vector; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `unit_vector` [INFO] [stderr] --> src/math/vector.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn unit_vector(x: f64, y: f64, z: f64) -> UnitVector { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `min` [INFO] [stderr] --> src/math/mod.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn min(a: T, b: T) -> T { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `max` [INFO] [stderr] --> src/math/mod.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn max(a: T, b: T) -> T { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/primitive/_box.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | pub fn new(lower: Point, upper: Point) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/primitive/union.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | pub fn new() -> Union { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `surface_at` [INFO] [stderr] --> src/primitive/object.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | pub fn surface_at(&self, pt: Point) -> SurfaceInfo { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `accept` [INFO] [stderr] --> src/primitive/object.rs:81:5 [INFO] [stderr] | [INFO] [stderr] 81 | pub fn accept(&self, visitor: &mut SceneVisitor) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `SurfaceInfo` [INFO] [stderr] --> src/primitive/mod.rs:28:1 [INFO] [stderr] | [INFO] [stderr] 28 | pub struct SurfaceInfo<'a> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `with_dir` [INFO] [stderr] --> src/camera.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn with_dir(&self, x: f64, y: f64, z: f64) -> Camera { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `width` [INFO] [stderr] --> src/camera.rs:86:5 [INFO] [stderr] | [INFO] [stderr] 86 | width: isize, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `height` [INFO] [stderr] --> src/camera.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | height: isize, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `sample` [INFO] [stderr] --> src/material.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | pub fn sample<'a>(&'a self, p: Point) -> (Colour, &'a Finish) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `visit` [INFO] [stderr] --> src/scene.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn visit(&self, v: &mut SceneVisitor) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `lights` [INFO] [stderr] --> src/scene.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn lights<'a>(&'a self) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `LightVisitor` [INFO] [stderr] --> src/scene.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | struct LightVisitor { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `sky` [INFO] [stderr] --> src/scene.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn sky(&self, r: Ray) -> Colour { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `RenderOptions` [INFO] [stderr] --> src/render.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | pub struct RenderOptions { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `render` [INFO] [stderr] --> src/render.rs:19:1 [INFO] [stderr] | [INFO] [stderr] 19 | pub fn render(scene: &Scene, options: RenderOptions) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `pack_pixel` [INFO] [stderr] --> src/render.rs:76:1 [INFO] [stderr] | [INFO] [stderr] 76 | fn pack_pixel(c: Colour) -> Rgba { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `obj` [INFO] [stderr] --> src/render.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | obj: &'a Object, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `point` [INFO] [stderr] --> src/render.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | point: Point, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `blinn_phong_highlight` [INFO] [stderr] --> src/render.rs:128:1 [INFO] [stderr] | [INFO] [stderr] 128 | / fn blinn_phong_highlight(viewdir: UnitVector, [INFO] [stderr] 129 | | light_ray: Ray, [INFO] [stderr] 130 | | surface_normal: UnitVector, [INFO] [stderr] 131 | | light_colour: Colour, [INFO] [stderr] ... | [INFO] [stderr] 142 | | } [INFO] [stderr] 143 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `light_surface` [INFO] [stderr] --> src/render.rs:148:1 [INFO] [stderr] | [INFO] [stderr] 148 | / fn light_surface(viewdir: UnitVector, [INFO] [stderr] 149 | | surface_pt: Point, [INFO] [stderr] 150 | | surface_normal: UnitVector, [INFO] [stderr] 151 | | surface_colour: Colour, [INFO] [stderr] ... | [INFO] [stderr] 181 | | result [INFO] [stderr] 182 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `reflect` [INFO] [stderr] --> src/render.rs:196:1 [INFO] [stderr] | [INFO] [stderr] 196 | fn reflect(inbound: Ray, pt: Point, normal: Vector) -> Ray { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `trace` [INFO] [stderr] --> src/render.rs:209:1 [INFO] [stderr] | [INFO] [stderr] 209 | fn trace(inbound_ray: Ray, scene: &Scene, lights: &Vec) -> Colour { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Args` [INFO] [stderr] --> src/main.rs:73:1 [INFO] [stderr] | [INFO] [stderr] 73 | struct Args { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `parse_args` [INFO] [stderr] --> src/main.rs:80:1 [INFO] [stderr] | [INFO] [stderr] 80 | fn parse_args() -> Args { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/colour.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | let v = other as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 82 | colour_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/colour.rs:75:25 [INFO] [stderr] | [INFO] [stderr] 75 | let v = self as f64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 82 | colour_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/colour.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | let v = other as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 82 | colour_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/colour.rs:75:25 [INFO] [stderr] | [INFO] [stderr] 75 | let v = self as f64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 82 | colour_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/colour.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | let v = other as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 82 | colour_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/colour.rs:75:25 [INFO] [stderr] | [INFO] [stderr] 75 | let v = self as f64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 82 | colour_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [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/math/matrix.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | / match write!(f, [INFO] [stderr] 119 | | "({}, {}, {}, {})", [INFO] [stderr] 120 | | values[row], [INFO] [stderr] 121 | | values[row + 1], [INFO] [stderr] ... | [INFO] [stderr] 125 | | _ => (), [INFO] [stderr] 126 | | } [INFO] [stderr] | |_____________^ help: try this: `if let e @ Err(_) = $ dst . write_fmt ( format_args ! ( $ ( $ arg ) * ) ) { return e }` [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] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/math/matrix.rs:142:5 [INFO] [stderr] | [INFO] [stderr] 142 | / fn ne(&self, other: &Matrix) -> bool { [INFO] [stderr] 143 | | let &Matrix(ref a) = self; [INFO] [stderr] 144 | | let &Matrix(ref b) = other; [INFO] [stderr] 145 | | a != b [INFO] [stderr] 146 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::partialeq_ne_impl)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/math/matrix.rs:154:5 [INFO] [stderr] | [INFO] [stderr] 154 | / fn index<'a>(&'a self, idx: (usize, usize)) -> &'a f64 { [INFO] [stderr] 155 | | let &Matrix(ref values) = self; [INFO] [stderr] 156 | | let (i, j) = idx; [INFO] [stderr] 157 | | &values[(j * 4) + i] [INFO] [stderr] 158 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/math/matrix.rs:165:5 [INFO] [stderr] | [INFO] [stderr] 165 | / fn index_mut<'a>(&'a mut self, idx: (usize, usize)) -> &'a mut f64 { [INFO] [stderr] 166 | | let Matrix(ref mut values) = *self; [INFO] [stderr] 167 | | let (i, j) = idx; [INFO] [stderr] 168 | | &mut values[(j * 4) + i] [INFO] [stderr] 169 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/material/mod.rs:44:1 [INFO] [stderr] | [INFO] [stderr] 44 | / pub fn material<'a>(input: &'a [u8]) -> IResult<&'a [u8], Material> { [INFO] [stderr] 45 | | let mut result = Material::default(); [INFO] [stderr] 46 | | [INFO] [stderr] 47 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 64 | | } [INFO] [stderr] 65 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 47 [INFO] [stderr] --> src/scenefile/material/mod.rs:44:1 [INFO] [stderr] | [INFO] [stderr] 44 | / pub fn material<'a>(input: &'a [u8]) -> IResult<&'a [u8], Material> { [INFO] [stderr] 45 | | let mut result = Material::default(); [INFO] [stderr] 46 | | [INFO] [stderr] 47 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 64 | | } [INFO] [stderr] 65 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/math/matrix.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | &self * &rhs [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 209 | self * rhs [INFO] [stderr] | ^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/math/matrix.rs:218:9 [INFO] [stderr] | [INFO] [stderr] 218 | self * &rhs [INFO] [stderr] | ^^^^^^^---- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `rhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Mul` impl [INFO] [stderr] --> src/math/matrix.rs:243:25 [INFO] [stderr] | [INFO] [stderr] 243 | let inv_w = 1.0 / w; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::suspicious_arithmetic_impl)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/math/matrix.rs:262:9 [INFO] [stderr] | [INFO] [stderr] 262 | assert_eq!(mt[(0, 3)], 0.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/math/matrix.rs:262:9 [INFO] [stderr] | [INFO] [stderr] 262 | assert_eq!(mt[(0, 3)], 0.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/math/matrix.rs:263:9 [INFO] [stderr] | [INFO] [stderr] 263 | assert_eq!(mt[(3, 0)], 42.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math/matrix.rs:263:9 [INFO] [stderr] | [INFO] [stderr] 263 | assert_eq!(mt[(3, 0)], 42.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/math/matrix.rs:280:9 [INFO] [stderr] | [INFO] [stderr] 280 | assert_eq!(m[(1, 2)], 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math/matrix.rs:280:9 [INFO] [stderr] | [INFO] [stderr] 280 | assert_eq!(m[(1, 2)], 0.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/math/matrix.rs:282:9 [INFO] [stderr] | [INFO] [stderr] 282 | assert_eq!(m[(1, 2)], 42.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math/matrix.rs:282:9 [INFO] [stderr] | [INFO] [stderr] 282 | assert_eq!(m[(1, 2)], 42.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/math/matrix.rs:283:9 [INFO] [stderr] | [INFO] [stderr] 283 | assert_eq!(m[(2, 1)], 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math/matrix.rs:283:9 [INFO] [stderr] | [INFO] [stderr] 283 | assert_eq!(m[(2, 1)], 0.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] warning: the function has a cyclomatic complexity of 80 [INFO] [stderr] --> src/scenefile/primitive.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | / fn sphere<'a, 'b>(input: &'a [u8], scene: &'b SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] 18 | | let mut result = Sphere::default(); [INFO] [stderr] 19 | | let mut m = Material::default(); [INFO] [stderr] 20 | | let mut xform = None; [INFO] [stderr] ... | [INFO] [stderr] 37 | | }) [INFO] [stderr] 38 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/math/vector.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | / fn ne(&self, other: &Vector) -> bool { [INFO] [stderr] 91 | | self.x != other.x || self.y != other.y || self.z != other.z [INFO] [stderr] 92 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:120:25 [INFO] [stderr] | [INFO] [stderr] 120 | let v = other as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 159 | vec_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:129:25 [INFO] [stderr] | [INFO] [stderr] 129 | let v = self as f64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 159 | vec_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:120:25 [INFO] [stderr] | [INFO] [stderr] 120 | let v = other as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 159 | vec_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:129:25 [INFO] [stderr] | [INFO] [stderr] 129 | let v = self as f64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 159 | vec_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:120:25 [INFO] [stderr] | [INFO] [stderr] 120 | let v = other as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 159 | vec_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:129:25 [INFO] [stderr] | [INFO] [stderr] 129 | let v = self as f64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 159 | vec_mul_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [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] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/math/vector.rs:144:31 [INFO] [stderr] | [INFO] [stderr] 144 | vector(self.x * v, self.y * v, self.z * v) [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/math/vector.rs:144:43 [INFO] [stderr] | [INFO] [stderr] 144 | vector(self.x * v, self.y * v, self.z * v) [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/math/vector.rs:144:55 [INFO] [stderr] | [INFO] [stderr] 144 | vector(self.x * v, self.y * v, self.z * v) [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/math/vector.rs:153:32 [INFO] [stderr] | [INFO] [stderr] 153 | vector(other.x * v, other.y * v, other.z * v) [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/math/vector.rs:153:45 [INFO] [stderr] | [INFO] [stderr] 153 | vector(other.x * v, other.y * v, other.z * v) [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/math/vector.rs:153:58 [INFO] [stderr] | [INFO] [stderr] 153 | vector(other.x * v, other.y * v, other.z * v) [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:143:31 [INFO] [stderr] | [INFO] [stderr] 143 | let v = 1.0 / (other as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:152:31 [INFO] [stderr] | [INFO] [stderr] 152 | let v = 1.0 / (self as f64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:143:31 [INFO] [stderr] | [INFO] [stderr] 143 | let v = 1.0 / (other as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:152:31 [INFO] [stderr] | [INFO] [stderr] 152 | let v = 1.0 / (self as f64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:143:31 [INFO] [stderr] | [INFO] [stderr] 143 | let v = 1.0 / (other as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/math/vector.rs:152:31 [INFO] [stderr] | [INFO] [stderr] 152 | let v = 1.0 / (self as f64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 160 | vec_div_impl!(usize isize i32 u32 i64 u64 f32 f64); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/math/vector.rs:226:9 [INFO] [stderr] | [INFO] [stderr] 226 | assert_eq!(32.0, a.dot(b)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math/vector.rs:226:9 [INFO] [stderr] | [INFO] [stderr] 226 | assert_eq!(32.0, a.dot(b)) [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/math/vector.rs:231:9 [INFO] [stderr] | [INFO] [stderr] 231 | assert_eq!((Vector { x: 1.0, y: 0.0, z: 0.0}).length(), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math/vector.rs:231:9 [INFO] [stderr] | [INFO] [stderr] 231 | assert_eq!((Vector { x: 1.0, y: 0.0, z: 0.0}).length(), 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/math/vector.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | assert_eq!((Vector { x: 0.0, y: 1.0, z: 0.0}).length(), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math/vector.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | assert_eq!((Vector { x: 0.0, y: 1.0, z: 0.0}).length(), 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/math/vector.rs:233:9 [INFO] [stderr] | [INFO] [stderr] 233 | assert_eq!((Vector { x: 0.0, y: 0.0, z: 1.0}).length(), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math/vector.rs:233:9 [INFO] [stderr] | [INFO] [stderr] 233 | assert_eq!((Vector { x: 0.0, y: 0.0, z: 1.0}).length(), 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/math/vector.rs:236:9 [INFO] [stderr] | [INFO] [stderr] 236 | assert_eq!((Vector { x: 1.0, y: 1.0, z: 1.0}).length(), x.sqrt()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math/vector.rs:236:9 [INFO] [stderr] | [INFO] [stderr] 236 | assert_eq!((Vector { x: 1.0, y: 1.0, z: 1.0}).length(), x.sqrt()); [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/math/vector.rs:298:9 [INFO] [stderr] | [INFO] [stderr] 298 | assert_eq!(p.x, 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math/vector.rs:298:9 [INFO] [stderr] | [INFO] [stderr] 298 | assert_eq!(p.x, 2.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/math/vector.rs:299:9 [INFO] [stderr] | [INFO] [stderr] 299 | assert_eq!(p.y, 4.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math/vector.rs:299:9 [INFO] [stderr] | [INFO] [stderr] 299 | assert_eq!(p.y, 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: strict comparison of f32 or f64 [INFO] [stderr] --> src/math/vector.rs:300:9 [INFO] [stderr] | [INFO] [stderr] 300 | assert_eq!(p.z, 6.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/math/vector.rs:300:9 [INFO] [stderr] | [INFO] [stderr] 300 | assert_eq!(p.z, 6.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] warning: the function has a cyclomatic complexity of 80 [INFO] [stderr] --> src/scenefile/primitive.rs:40:1 [INFO] [stderr] | [INFO] [stderr] 40 | / fn _box<'a, 'b>(input: &'a [u8], scene: &'b SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] 41 | | let mut b = AxisAlignedBox::default(); [INFO] [stderr] 42 | | let mut m = Material::default(); [INFO] [stderr] 43 | | let mut xform = None; [INFO] [stderr] ... | [INFO] [stderr] 57 | | rval.map(|_| as_object(_Box::from(b), m, xform)) [INFO] [stderr] 58 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:81:41 [INFO] [stderr] | [INFO] [stderr] 81 | Angle::new(self.get() * (other as f64)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 118 | angle_mul_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:90:28 [INFO] [stderr] | [INFO] [stderr] 90 | Angle::new((self as f64) * other.get()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 118 | angle_mul_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:81:41 [INFO] [stderr] | [INFO] [stderr] 81 | Angle::new(self.get() * (other as f64)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 118 | angle_mul_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:90:28 [INFO] [stderr] | [INFO] [stderr] 90 | Angle::new((self as f64) * other.get()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 118 | angle_mul_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:103:41 [INFO] [stderr] | [INFO] [stderr] 103 | Angle::new(self.get() / (other as f64)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 119 | angle_div_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:112:28 [INFO] [stderr] | [INFO] [stderr] 112 | Angle::new((self as f64) / other.get()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 119 | angle_div_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:103:41 [INFO] [stderr] | [INFO] [stderr] 103 | Angle::new(self.get() / (other as f64)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(other)` [INFO] [stderr] ... [INFO] [stderr] 119 | angle_div_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/units/angle.rs:112:28 [INFO] [stderr] | [INFO] [stderr] 112 | Angle::new((self as f64) / other.get()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 119 | angle_div_impl!(isize usize i32 i64 f32 f64); [INFO] [stderr] | --------------------------------------------- in this macro invocation [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] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/units/angle.rs:182:43 [INFO] [stderr] | [INFO] [stderr] 182 | assert!(floats_are_close(z.sin(), 0.70710678118, 1e-10)); [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::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/units/angle.rs:194:43 [INFO] [stderr] | [INFO] [stderr] 194 | assert!(floats_are_close(z.cos(), 0.70710678118, 1e-10)); [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] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/units/angle.rs:228:43 [INFO] [stderr] | [INFO] [stderr] 228 | assert!(floats_are_close(z.sin(), 0.70710678118, 1e-10)); [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] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/units/angle.rs:240:43 [INFO] [stderr] | [INFO] [stderr] 240 | assert!(floats_are_close(z.cos(), 0.70710678118, 1e-10)); [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] error: this `if` has identical blocks [INFO] [stderr] --> src/primitive/aabb.rs:49:33 [INFO] [stderr] | [INFO] [stderr] 49 | } else if t_min > t_max { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 50 | | // Ray does not intersect box [INFO] [stderr] 51 | | None [INFO] [stderr] 52 | | } else { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/primitive/aabb.rs:44:24 [INFO] [stderr] | [INFO] [stderr] 44 | if t_max < 0.0 { [INFO] [stderr] | ________________________^ [INFO] [stderr] 45 | | // ray intersects box if extended infinitely, but the whole box [INFO] [stderr] 46 | | // is behind the ray origin, which doesn't count [INFO] [stderr] 47 | | //error!("Should never happen"); [INFO] [stderr] 48 | | None [INFO] [stderr] 49 | | } else if t_min > t_max { [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 80 [INFO] [stderr] --> src/scenefile/primitive.rs:60:1 [INFO] [stderr] | [INFO] [stderr] 60 | / fn plane<'a, 'b>(input: &'a [u8], scene: &'b SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] 61 | | let mut p = Plane::default(); [INFO] [stderr] 62 | | let mut m = Material::default(); [INFO] [stderr] 63 | | let mut xform = None; [INFO] [stderr] ... | [INFO] [stderr] 78 | | rval.map(|_| as_object(p, m, xform)) [INFO] [stderr] 79 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/primitive/union.rs:39:28 [INFO] [stderr] | [INFO] [stderr] 39 | Some(ref t) => t.as_ref().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*t.as_ref()` [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] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/primitive/object.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn as_light<'a>(&'a self) -> Option<&'a Light> { [INFO] [stderr] 29 | | self.primitive.as_light() [INFO] [stderr] 30 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 64 [INFO] [stderr] --> src/scenefile/primitive.rs:85:1 [INFO] [stderr] | [INFO] [stderr] 85 | / fn union<'a, 'b>(input: &'a [u8], state: &'b mut SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] 86 | | use std::cell::RefCell; [INFO] [stderr] 87 | | [INFO] [stderr] 88 | | let mut u = Union::default(); [INFO] [stderr] ... | [INFO] [stderr] 108 | | rval.map(|_| as_object(u, Material::default(), xform)) [INFO] [stderr] 109 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/primitive/sphere.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / fn ne(&self, other: &Sphere) -> bool { [INFO] [stderr] 38 | | self.centre != other.centre || self.radius != other.radius [INFO] [stderr] 39 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/primitive/sphere.rs:116:16 [INFO] [stderr] | [INFO] [stderr] 116 | if let Some(_) = s.intersects(r) { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 117 | | panic!("Ray intersects") [INFO] [stderr] 118 | | } [INFO] [stderr] | |_________- help: try this: `if s.intersects(r).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/scenefile/primitive.rs:126:49 [INFO] [stderr] | [INFO] [stderr] 126 | many0!(input, map!(call!(primitive, state), |p| Arc::new(p))) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Arc::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/transform.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | / fn translate<'a>(input: &'a [u8]) -> IResult<&'a [u8], Transform> { [INFO] [stderr] 8 | | named_value(input, "translate", vector_literal, [INFO] [stderr] 9 | | | Vector {x, y, z} | { [INFO] [stderr] 10 | | Transform::identity().translate(x, y, z) [INFO] [stderr] 11 | | }) [INFO] [stderr] 12 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/transform.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | / fn rotate<'a>(input: &'a [u8]) -> IResult<&'a [u8], Transform> { [INFO] [stderr] 15 | | named_value(input, "rotate", vector_literal, [INFO] [stderr] 16 | | | Vector {x, y, z} | { [INFO] [stderr] 17 | | Transform::identity().rotate(degrees(x).radians(), [INFO] [stderr] ... | [INFO] [stderr] 20 | | }) [INFO] [stderr] 21 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/transform.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | / fn scale<'a>(input: &'a [u8]) -> IResult<&'a [u8], Transform> { [INFO] [stderr] 24 | | named_value(input, "scale", vector_literal, [INFO] [stderr] 25 | | | Vector { x, y, z } | { [INFO] [stderr] 26 | | Transform::identity().scale(x, y, z) [INFO] [stderr] 27 | | }) [INFO] [stderr] 28 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/transform.rs:30:1 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn transform<'a>(input: &'a [u8]) -> IResult<&'a [u8], Transform> { [INFO] [stderr] 31 | | let mut result = Transform::identity(); [INFO] [stderr] 32 | | let rval = { [INFO] [stderr] 33 | | block!(input, separated_list!(comma, [INFO] [stderr] ... | [INFO] [stderr] 41 | | rval.map(|_| result) [INFO] [stderr] 42 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 44 [INFO] [stderr] --> src/scenefile/transform.rs:30:1 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn transform<'a>(input: &'a [u8]) -> IResult<&'a [u8], Transform> { [INFO] [stderr] 31 | | let mut result = Transform::identity(); [INFO] [stderr] 32 | | let rval = { [INFO] [stderr] 33 | | block!(input, separated_list!(comma, [INFO] [stderr] ... | [INFO] [stderr] 41 | | rval.map(|_| result) [INFO] [stderr] 42 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/material.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | / pub fn sample<'a>(&'a self, p: Point) -> (Colour, &'a Finish) { [INFO] [stderr] 45 | | match self.pigment { [INFO] [stderr] 46 | | Pigment::Solid(c) => (c, &self.finish) [INFO] [stderr] 47 | | } [INFO] [stderr] 48 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/mod.rs:31:1 [INFO] [stderr] | [INFO] [stderr] 31 | / fn scene_file<'a>(input: &'a [u8]) -> IResult<&'a [u8], Scene> { [INFO] [stderr] 32 | | let mut state = SceneState::default(); [INFO] [stderr] 33 | | [INFO] [stderr] 34 | | let (text, cam) = camera(input, &state) [INFO] [stderr] ... | [INFO] [stderr] 42 | | }) [INFO] [stderr] 43 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scene.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | / pub fn lights<'a>(&'a self) -> Vec { [INFO] [stderr] 50 | | struct LightVisitor { [INFO] [stderr] 51 | | transform_stack: Vec, [INFO] [stderr] 52 | | lights: Vec [INFO] [stderr] ... | [INFO] [stderr] 85 | | return visitor.lights; [INFO] [stderr] 86 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/scene.rs:57:28 [INFO] [stderr] | [INFO] [stderr] 57 | let head = self.transform_stack.last().unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.transform_stack.last().unwrap()` [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] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/scene.rs:71:36 [INFO] [stderr] | [INFO] [stderr] 71 | transform: t.clone(), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*t` [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] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/render.rs:101:1 [INFO] [stderr] | [INFO] [stderr] 101 | / fn closest_intersecting_object<'a>(r: Ray, scene: &'a Scene) -> Option> { [INFO] [stderr] 102 | | use std::f64; [INFO] [stderr] 103 | | [INFO] [stderr] 104 | | let mut min_dist = f64::INFINITY; [INFO] [stderr] ... | [INFO] [stderr] 122 | | }) [INFO] [stderr] 123 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/render.rs:154:26 [INFO] [stderr] | [INFO] [stderr] 154 | lights: &Vec) -> Colour { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[LightInfo]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/render.rs:209:51 [INFO] [stderr] | [INFO] [stderr] 209 | fn trace(inbound_ray: Ray, scene: &Scene, lights: &Vec) -> Colour { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[LightInfo]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/scenefile/constructs.rs:101:14 [INFO] [stderr] | [INFO] [stderr] 101 | .map(|value| storefn(value)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `storefn` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | / match img.save(args.output_file) { [INFO] [stderr] 67 | | Ok(_) => {}, [INFO] [stderr] 68 | | Err(_) => {} [INFO] [stderr] 69 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(_) = img.save(args.output_file) {}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] error: aborting due to 8 previous errors [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/scenefile/constructs.rs:163:34 [INFO] [stderr] | [INFO] [stderr] 163 | transform: transform.map(|t| Box::new(t)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Box::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/scenefile/constructs.rs:180:9 [INFO] [stderr] | [INFO] [stderr] 180 | assert_eq!(f, 42.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/scenefile/constructs.rs:180:9 [INFO] [stderr] | [INFO] [stderr] 180 | assert_eq!(f, 42.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: Could not compile `raygun`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: the function has a cyclomatic complexity of 80 [INFO] [stderr] --> src/scenefile/camera.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | / pub fn camera<'a>(input: &'a [u8], state: &SceneState) -> IResult<&'a [u8], Camera> { [INFO] [stderr] 13 | | let mut loc = point(0.0, 0.0, 0.0); [INFO] [stderr] 14 | | let mut target = point(0.0, 0.0, 0.0); [INFO] [stderr] 15 | | let mut sky = point(0.0, 1.0, 0.0); [INFO] [stderr] ... | [INFO] [stderr] 48 | | }) [INFO] [stderr] 49 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 50 [INFO] [stderr] --> src/scenefile/lights.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn point_light<'a>(input: &'a [u8], scene: &SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] 12 | | let mut result = PointLight::default(); [INFO] [stderr] 13 | | [INFO] [stderr] 14 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 30 | | None)) [INFO] [stderr] 31 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/material/pigment.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / fn solid_pigment<'a>(input: &'a [u8]) -> IResult<&'a [u8], Pigment> { [INFO] [stderr] 9 | | let mut result = Pigment::default(); [INFO] [stderr] 10 | | [INFO] [stderr] 11 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 20 | | rval.map(|_| result) [INFO] [stderr] 21 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 34 [INFO] [stderr] --> src/scenefile/material/pigment.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / fn solid_pigment<'a>(input: &'a [u8]) -> IResult<&'a [u8], Pigment> { [INFO] [stderr] 9 | | let mut result = Pigment::default(); [INFO] [stderr] 10 | | [INFO] [stderr] 11 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 20 | | rval.map(|_| result) [INFO] [stderr] 21 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/material/pigment.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | / pub fn pigment<'a>(input: &'a [u8]) -> IResult<&'a [u8], Pigment> { [INFO] [stderr] 24 | | ws!(input, alt!(solid_pigment)) [INFO] [stderr] 25 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/material/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn finish<'a>(input: &'a [u8]) -> IResult<&'a [u8], Finish> { [INFO] [stderr] 10 | | let mut result = Finish::default(); [INFO] [stderr] 11 | | [INFO] [stderr] 12 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 71 [INFO] [stderr] --> src/scenefile/material/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn finish<'a>(input: &'a [u8]) -> IResult<&'a [u8], Finish> { [INFO] [stderr] 10 | | let mut result = Finish::default(); [INFO] [stderr] 11 | | [INFO] [stderr] 12 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/material/mod.rs:44:1 [INFO] [stderr] | [INFO] [stderr] 44 | / pub fn material<'a>(input: &'a [u8]) -> IResult<&'a [u8], Material> { [INFO] [stderr] 45 | | let mut result = Material::default(); [INFO] [stderr] 46 | | [INFO] [stderr] 47 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 64 | | } [INFO] [stderr] 65 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 47 [INFO] [stderr] --> src/scenefile/material/mod.rs:44:1 [INFO] [stderr] | [INFO] [stderr] 44 | / pub fn material<'a>(input: &'a [u8]) -> IResult<&'a [u8], Material> { [INFO] [stderr] 45 | | let mut result = Material::default(); [INFO] [stderr] 46 | | [INFO] [stderr] 47 | | let rval = { [INFO] [stderr] ... | [INFO] [stderr] 64 | | } [INFO] [stderr] 65 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 80 [INFO] [stderr] --> src/scenefile/primitive.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | / fn sphere<'a, 'b>(input: &'a [u8], scene: &'b SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] 18 | | let mut result = Sphere::default(); [INFO] [stderr] 19 | | let mut m = Material::default(); [INFO] [stderr] 20 | | let mut xform = None; [INFO] [stderr] ... | [INFO] [stderr] 37 | | }) [INFO] [stderr] 38 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 80 [INFO] [stderr] --> src/scenefile/primitive.rs:40:1 [INFO] [stderr] | [INFO] [stderr] 40 | / fn _box<'a, 'b>(input: &'a [u8], scene: &'b SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] 41 | | let mut b = AxisAlignedBox::default(); [INFO] [stderr] 42 | | let mut m = Material::default(); [INFO] [stderr] 43 | | let mut xform = None; [INFO] [stderr] ... | [INFO] [stderr] 57 | | rval.map(|_| as_object(_Box::from(b), m, xform)) [INFO] [stderr] 58 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 80 [INFO] [stderr] --> src/scenefile/primitive.rs:60:1 [INFO] [stderr] | [INFO] [stderr] 60 | / fn plane<'a, 'b>(input: &'a [u8], scene: &'b SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] 61 | | let mut p = Plane::default(); [INFO] [stderr] 62 | | let mut m = Material::default(); [INFO] [stderr] 63 | | let mut xform = None; [INFO] [stderr] ... | [INFO] [stderr] 78 | | rval.map(|_| as_object(p, m, xform)) [INFO] [stderr] 79 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 64 [INFO] [stderr] --> src/scenefile/primitive.rs:85:1 [INFO] [stderr] | [INFO] [stderr] 85 | / fn union<'a, 'b>(input: &'a [u8], state: &'b mut SceneState) -> IResult<&'a [u8], Object> { [INFO] [stderr] 86 | | use std::cell::RefCell; [INFO] [stderr] 87 | | [INFO] [stderr] 88 | | let mut u = Union::default(); [INFO] [stderr] ... | [INFO] [stderr] 108 | | rval.map(|_| as_object(u, Material::default(), xform)) [INFO] [stderr] 109 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/scenefile/primitive.rs:126:49 [INFO] [stderr] | [INFO] [stderr] 126 | many0!(input, map!(call!(primitive, state), |p| Arc::new(p))) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Arc::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/scenefile/primitive.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | assert_eq!(s.radius, 1.234); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/scenefile/primitive.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | assert_eq!(s.radius, 1.234); [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/scenefile/primitive.rs:163:9 [INFO] [stderr] | [INFO] [stderr] 163 | assert_eq!(s.radius, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/scenefile/primitive.rs:163:9 [INFO] [stderr] | [INFO] [stderr] 163 | assert_eq!(s.radius, 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] warning: The function/method `_box` doesn't need a mutable reference [INFO] [stderr] --> src/scenefile/primitive.rs:177:29 [INFO] [stderr] | [INFO] [stderr] 177 | &mut state).unwrap(); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/transform.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | / fn translate<'a>(input: &'a [u8]) -> IResult<&'a [u8], Transform> { [INFO] [stderr] 8 | | named_value(input, "translate", vector_literal, [INFO] [stderr] 9 | | | Vector {x, y, z} | { [INFO] [stderr] 10 | | Transform::identity().translate(x, y, z) [INFO] [stderr] 11 | | }) [INFO] [stderr] 12 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/transform.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | / fn rotate<'a>(input: &'a [u8]) -> IResult<&'a [u8], Transform> { [INFO] [stderr] 15 | | named_value(input, "rotate", vector_literal, [INFO] [stderr] 16 | | | Vector {x, y, z} | { [INFO] [stderr] 17 | | Transform::identity().rotate(degrees(x).radians(), [INFO] [stderr] ... | [INFO] [stderr] 20 | | }) [INFO] [stderr] 21 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/transform.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | / fn scale<'a>(input: &'a [u8]) -> IResult<&'a [u8], Transform> { [INFO] [stderr] 24 | | named_value(input, "scale", vector_literal, [INFO] [stderr] 25 | | | Vector { x, y, z } | { [INFO] [stderr] 26 | | Transform::identity().scale(x, y, z) [INFO] [stderr] 27 | | }) [INFO] [stderr] 28 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/transform.rs:30:1 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn transform<'a>(input: &'a [u8]) -> IResult<&'a [u8], Transform> { [INFO] [stderr] 31 | | let mut result = Transform::identity(); [INFO] [stderr] 32 | | let rval = { [INFO] [stderr] 33 | | block!(input, separated_list!(comma, [INFO] [stderr] ... | [INFO] [stderr] 41 | | rval.map(|_| result) [INFO] [stderr] 42 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 44 [INFO] [stderr] --> src/scenefile/transform.rs:30:1 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn transform<'a>(input: &'a [u8]) -> IResult<&'a [u8], Transform> { [INFO] [stderr] 31 | | let mut result = Transform::identity(); [INFO] [stderr] 32 | | let rval = { [INFO] [stderr] 33 | | block!(input, separated_list!(comma, [INFO] [stderr] ... | [INFO] [stderr] 41 | | rval.map(|_| result) [INFO] [stderr] 42 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scenefile/mod.rs:31:1 [INFO] [stderr] | [INFO] [stderr] 31 | / fn scene_file<'a>(input: &'a [u8]) -> IResult<&'a [u8], Scene> { [INFO] [stderr] 32 | | let mut state = SceneState::default(); [INFO] [stderr] 33 | | [INFO] [stderr] 34 | | let (text, cam) = camera(input, &state) [INFO] [stderr] ... | [INFO] [stderr] 42 | | }) [INFO] [stderr] 43 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/scenefile/mod.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | super::load_scene("Hello"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/scenefile/mod.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | super::load_scene("scenes/example.rg"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/render.rs:101:1 [INFO] [stderr] | [INFO] [stderr] 101 | / fn closest_intersecting_object<'a>(r: Ray, scene: &'a Scene) -> Option> { [INFO] [stderr] 102 | | use std::f64; [INFO] [stderr] 103 | | [INFO] [stderr] 104 | | let mut min_dist = f64::INFINITY; [INFO] [stderr] ... | [INFO] [stderr] 122 | | }) [INFO] [stderr] 123 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/render.rs:154:26 [INFO] [stderr] | [INFO] [stderr] 154 | lights: &Vec) -> Colour { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[LightInfo]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/render.rs:209:51 [INFO] [stderr] | [INFO] [stderr] 209 | fn trace(inbound_ray: Ray, scene: &Scene, lights: &Vec) -> Colour { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[LightInfo]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: aborting due to 28 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `raygun`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "466ec673b2acee0c4e8486812d084df73237663f73c83c55df7ed1ebd7c34b66"` [INFO] running `"docker" "rm" "-f" "466ec673b2acee0c4e8486812d084df73237663f73c83c55df7ed1ebd7c34b66"` [INFO] [stdout] 466ec673b2acee0c4e8486812d084df73237663f73c83c55df7ed1ebd7c34b66