[INFO] cloning repository https://github.com/myuon/ruyt
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/myuon/ruyt" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmyuon%2Fruyt", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmyuon%2Fruyt'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1dd48a002d701164c9b97b0af739d8a2d810487d
[INFO] checking myuon/ruyt against try#dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e for pr-153721
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmyuon%2Fruyt" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/myuon/ruyt
[INFO] finished tweaking git repo https://github.com/myuon/ruyt
[INFO] tweaked toml for git repo https://github.com/myuon/ruyt written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/myuon/ruyt on toolchain dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/myuon/ruyt already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3e793bdf10248eb2ddbd6b0faebed8155c11b4589982e2893733958d93e8d540" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 4445816a3e8521bd4bf514488362419b9fc32f491e95bb0f07d777315c0df9ea
[INFO] running `Command { std: "docker" "start" "4445816a3e8521bd4bf514488362419b9fc32f491e95bb0f07d777315c0df9ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4445816a3e8521bd4bf514488362419b9fc32f491e95bb0f07d777315c0df9ea" "/opt/rustwide/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4445816a3e8521bd4bf514488362419b9fc32f491e95bb0f07d777315c0df9ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4445816a3e8521bd4bf514488362419b9fc32f491e95bb0f07d777315c0df9ea" "/opt/rustwide/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking libc v0.2.42
[INFO] [stderr]     Checking rand_core v0.2.1
[INFO] [stderr]     Checking rand v0.5.4
[INFO] [stderr]     Checking ruyt v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:53:19
[INFO] [stdout]    |
[INFO] [stdout] 53 |     renderer: Box<Fn(i32,i32) -> Color>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 53 |     renderer: Box<dyn Fn(i32,i32) -> Color>,
[INFO] [stdout]    |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/vector.rs:64:26
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub fn map(self, f: &Fn(f32) -> f32) -> V3 {
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub fn map(self, f: &dyn Fn(f32) -> f32) -> V3 {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]    --> src/figures.rs:128:25
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn pdf_value(&self, o: V3, v: V3U) -> f32 {
[INFO] [stdout]     |                         ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]    --> src/figures.rs:128:32
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn pdf_value(&self, o: V3, v: V3U) -> f32 {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]    --> src/figures.rs:132:22
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn random(&self, o: V3) -> V3 {
[INFO] [stdout]     |                      ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:186:28
[INFO] [stdout]     |
[INFO] [stdout] 186 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:186:37
[INFO] [stdout]     |
[INFO] [stdout] 186 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/figures.rs:195:18
[INFO] [stdout]     |
[INFO] [stdout] 195 |             Some(rec) => {
[INFO] [stdout]     |                  ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:243:28
[INFO] [stdout]     |
[INFO] [stdout] 243 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:243:37
[INFO] [stdout]     |
[INFO] [stdout] 243 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:282:28
[INFO] [stdout]     |
[INFO] [stdout] 282 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:282:37
[INFO] [stdout]     |
[INFO] [stdout] 282 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:321:28
[INFO] [stdout]     |
[INFO] [stdout] 321 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:321:37
[INFO] [stdout]     |
[INFO] [stdout] 321 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:391:28
[INFO] [stdout]     |
[INFO] [stdout] 391 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:391:37
[INFO] [stdout]     |
[INFO] [stdout] 391 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:502:28
[INFO] [stdout]     |
[INFO] [stdout] 502 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:502:37
[INFO] [stdout]     |
[INFO] [stdout] 502 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/figures.rs:515:13
[INFO] [stdout]     |
[INFO] [stdout] 515 |         let db = false;
[INFO] [stdout]     |             ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:633:28
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:633:37
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fs`
[INFO] [stdout]    --> src/figures.rs:763:30
[INFO] [stdout]     |
[INFO] [stdout] 763 |             Figures::Figures(fs) => unimplemented!(),
[INFO] [stdout]     |                              ^^ help: if this is intentional, prefix it with an underscore: `_fs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]   --> src/textures.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn value(&self, u: f32, v: f32, point: &V3) -> V3 {
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/textures.rs:20:29
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn value(&self, u: f32, v: f32, point: &V3) -> V3 {
[INFO] [stdout]    |                             ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point`
[INFO] [stdout]   --> src/textures.rs:20:37
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn value(&self, u: f32, v: f32, point: &V3) -> V3 {
[INFO] [stdout]    |                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_point`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ray_in`
[INFO] [stdout]   --> src/materials.rs:17:30
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn scattering_pdf(&self, ray_in: &Ray, hit_record: &HitRecord, scattered: &Ray) -> f32 {
[INFO] [stdout]    |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_ray_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hit_record`
[INFO] [stdout]   --> src/materials.rs:17:44
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn scattering_pdf(&self, ray_in: &Ray, hit_record: &HitRecord, scattered: &Ray) -> f32 {
[INFO] [stdout]    |                                            ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hit_record`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scattered`
[INFO] [stdout]   --> src/materials.rs:17:68
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn scattering_pdf(&self, ray_in: &Ray, hit_record: &HitRecord, scattered: &Ray) -> f32 {
[INFO] [stdout]    |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scattered`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]   --> src/materials.rs:21:23
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn emitted(&self, u: f32, v: f32, point: &V3) -> V3 {
[INFO] [stdout]    |                       ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/materials.rs:21:31
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn emitted(&self, u: f32, v: f32, point: &V3) -> V3 {
[INFO] [stdout]    |                               ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point`
[INFO] [stdout]   --> src/materials.rs:21:39
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn emitted(&self, u: f32, v: f32, point: &V3) -> V3 {
[INFO] [stdout]    |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_point`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ray_in`
[INFO] [stdout]   --> src/materials.rs:48:30
[INFO] [stdout]    |
[INFO] [stdout] 48 |     fn scattering_pdf(&self, ray_in: &Ray, hit_record: &HitRecord, scattered: &Ray) -> f32 {
[INFO] [stdout]    |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_ray_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:53:19
[INFO] [stdout]    |
[INFO] [stdout] 53 |     renderer: Box<Fn(i32,i32) -> Color>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 53 |     renderer: Box<dyn Fn(i32,i32) -> Color>,
[INFO] [stdout]    |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `XYRect` is more private than the item `figures::Figures::XYRect::0`
[INFO] [stdout]    --> src/figures.rs:641:12
[INFO] [stdout]     |
[INFO] [stdout] 641 |     XYRect(XYRect),
[INFO] [stdout]     |            ^^^^^^ field `figures::Figures::XYRect::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `XYRect` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:213:1
[INFO] [stdout]     |
[INFO] [stdout] 213 | struct XYRect {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `YZRect` is more private than the item `figures::Figures::YZRect::0`
[INFO] [stdout]    --> src/figures.rs:642:12
[INFO] [stdout]     |
[INFO] [stdout] 642 |     YZRect(YZRect),
[INFO] [stdout]     |            ^^^^^^ field `figures::Figures::YZRect::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `YZRect` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:252:1
[INFO] [stdout]     |
[INFO] [stdout] 252 | struct YZRect {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `XZRect` is more private than the item `figures::Figures::XZRect::0`
[INFO] [stdout]    --> src/figures.rs:643:12
[INFO] [stdout]     |
[INFO] [stdout] 643 |     XZRect(XZRect),
[INFO] [stdout]     |            ^^^^^^ field `figures::Figures::XZRect::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `XZRect` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:291:1
[INFO] [stdout]     |
[INFO] [stdout] 291 | struct XZRect {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `FlipNormals` is more private than the item `figures::Figures::FlipNormals::0`
[INFO] [stdout]    --> src/figures.rs:644:17
[INFO] [stdout]     |
[INFO] [stdout] 644 |     FlipNormals(FlipNormals),
[INFO] [stdout]     |                 ^^^^^^^^^^^ field `figures::Figures::FlipNormals::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `FlipNormals` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:345:1
[INFO] [stdout]     |
[INFO] [stdout] 345 | struct FlipNormals {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Cuboid` is more private than the item `figures::Figures::Cuboid::0`
[INFO] [stdout]    --> src/figures.rs:645:12
[INFO] [stdout]     |
[INFO] [stdout] 645 |     Cuboid(Cuboid),
[INFO] [stdout]     |            ^^^^^^ field `figures::Figures::Cuboid::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Cuboid` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:363:1
[INFO] [stdout]     |
[INFO] [stdout] 363 | struct Cuboid {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Translate` is more private than the item `figures::Figures::Translate::0`
[INFO] [stdout]    --> src/figures.rs:646:15
[INFO] [stdout]     |
[INFO] [stdout] 646 |     Translate(Translate),
[INFO] [stdout]     |               ^^^^^^^^^ field `figures::Figures::Translate::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Translate` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:400:1
[INFO] [stdout]     |
[INFO] [stdout] 400 | struct Translate {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RotateY` is more private than the item `figures::Figures::RotateY::0`
[INFO] [stdout]    --> src/figures.rs:647:13
[INFO] [stdout]     |
[INFO] [stdout] 647 |     RotateY(RotateY),
[INFO] [stdout]     |             ^^^^^^^ field `figures::Figures::RotateY::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RotateY` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:426:1
[INFO] [stdout]     |
[INFO] [stdout] 426 | struct RotateY {
[INFO] [stdout]     | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ConstantMedium` is more private than the item `figures::Figures::ConstantMedium::0`
[INFO] [stdout]    --> src/figures.rs:648:20
[INFO] [stdout]     |
[INFO] [stdout] 648 |     ConstantMedium(ConstantMedium),
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^ field `figures::Figures::ConstantMedium::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `ConstantMedium` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:508:1
[INFO] [stdout]     |
[INFO] [stdout] 508 | struct ConstantMedium {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `BvhNode` is more private than the item `figures::Figures::BvhNode::0`
[INFO] [stdout]    --> src/figures.rs:650:13
[INFO] [stdout]     |
[INFO] [stdout] 650 |     BvhNode(BvhNode),
[INFO] [stdout]     |             ^^^^^^^ field `figures::Figures::BvhNode::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `BvhNode` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:556:1
[INFO] [stdout]     |
[INFO] [stdout] 556 | struct BvhNode {
[INFO] [stdout]     | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SolidTexture` is more private than the item `textures::Textures::Solid::0`
[INFO] [stdout]    --> src/textures.rs:168:11
[INFO] [stdout]     |
[INFO] [stdout] 168 |     Solid(SolidTexture),
[INFO] [stdout]     |           ^^^^^^^^^^^^ field `textures::Textures::Solid::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `SolidTexture` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/textures.rs:7:1
[INFO] [stdout]     |
[INFO] [stdout]   7 | struct SolidTexture {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `CheckerTexture` is more private than the item `textures::Textures::Checker::0`
[INFO] [stdout]    --> src/textures.rs:169:13
[INFO] [stdout]     |
[INFO] [stdout] 169 |     Checker(CheckerTexture),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ field `textures::Textures::Checker::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `CheckerTexture` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/textures.rs:25:1
[INFO] [stdout]     |
[INFO] [stdout]  25 | struct CheckerTexture {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `NoiseTexture` is more private than the item `textures::Textures::Noise::0`
[INFO] [stdout]    --> src/textures.rs:170:11
[INFO] [stdout]     |
[INFO] [stdout] 170 |     Noise(NoiseTexture),
[INFO] [stdout]     |           ^^^^^^^^^^^^ field `textures::Textures::Noise::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `NoiseTexture` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/textures.rs:147:1
[INFO] [stdout]     |
[INFO] [stdout] 147 | struct NoiseTexture {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `DiffuseLight` is more private than the item `materials::Materials::DiffuseLight::0`
[INFO] [stdout]    --> src/materials.rs:164:18
[INFO] [stdout]     |
[INFO] [stdout] 164 |     DiffuseLight(DiffuseLight),
[INFO] [stdout]     |                  ^^^^^^^^^^^^ field `materials::Materials::DiffuseLight::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `DiffuseLight` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/materials.rs:141:1
[INFO] [stdout]     |
[INFO] [stdout] 141 | struct DiffuseLight {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_random_scene` is never used
[INFO] [stdout]    --> src/main.rs:171:4
[INFO] [stdout]     |
[INFO] [stdout] 171 | fn create_random_scene() -> Scene {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_nextweek_scene` is never used
[INFO] [stdout]    --> src/main.rs:249:4
[INFO] [stdout]     |
[INFO] [stdout] 249 | fn create_nextweek_scene() -> Scene {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `u` and `v` are never used
[INFO] [stdout]   --> src/figures.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl Onb {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn u(&self) -> V3 {
[INFO] [stdout]    |            ^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn v(&self) -> V3 {
[INFO] [stdout]    |            ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `surround` is never used
[INFO] [stdout]    --> src/figures.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl Aabb {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn surround(&self, other: &Aabb) -> Aabb {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `box_x_compare`, `box_y_compare`, and `box_z_compare` are never used
[INFO] [stdout]    --> src/figures.rs:563:8
[INFO] [stdout]     |
[INFO] [stdout] 562 | impl BvhNode {
[INFO] [stdout]     | ------------ associated functions in this implementation
[INFO] [stdout] 563 |     fn new(mut figures: Vec<Figures>, time0: f32, time1: f32) -> BvhNode {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 596 |     fn box_x_compare(left: &Figures, right: &Figures) -> ::std::cmp::Ordering {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 600 |     fn box_y_compare(left: &Figures, right: &Figures) -> ::std::cmp::Ordering {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 604 |     fn box_z_compare(left: &Figures, right: &Figures) -> ::std::cmp::Ordering {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ConstantMedium` and `BvhNode` are never constructed
[INFO] [stdout]    --> src/figures.rs:648:5
[INFO] [stdout]     |
[INFO] [stdout] 639 | pub enum Figures {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 648 |     ConstantMedium(ConstantMedium),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 649 |     Figures(Vec<Figures>),
[INFO] [stdout] 650 |     BvhNode(BvhNode),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Figures` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `constant_medium` and `bvh_node` are never used
[INFO] [stdout]    --> src/figures.rs:712:12
[INFO] [stdout]     |
[INFO] [stdout] 653 | impl Figures {
[INFO] [stdout]     | ------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 712 |     pub fn constant_medium(density: f32, boundary: Figures) -> Figures {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 719 |     pub fn bvh_node(figures: Vec<Figures>, time0: f32, time1: f32) -> Figures {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/textures.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl CheckerTexture {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 31 |     fn new(odd: Textures, even: Textures) -> CheckerTexture {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `perlin_generate`, `permute`, and `perlin_generate_perm` are never used
[INFO] [stdout]   --> src/textures.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | impl Perlin {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout] 58 |     fn new() -> Perlin {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     fn perlin_generate() -> Vec<V3> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     fn permute(vec: &mut Vec<u8>, n: usize) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     fn perlin_generate_perm() -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/textures.rs:153:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl NoiseTexture {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 153 |     fn new(scaler: f32) -> NoiseTexture {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Checker` and `Noise` are never constructed
[INFO] [stdout]    --> src/textures.rs:169:5
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub enum Textures {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 168 |     Solid(SolidTexture),
[INFO] [stdout] 169 |     Checker(CheckerTexture),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 170 |     Noise(NoiseTexture),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `checker` and `noise` are never used
[INFO] [stdout]    --> src/textures.rs:178:12
[INFO] [stdout]     |
[INFO] [stdout] 173 | impl Textures {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub fn checker(even: Textures, odd: Textures) -> Textures {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn noise(scaler: f32) -> Textures {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OnbPdf` is never constructed
[INFO] [stdout]   --> src/pdf.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct OnbPdf {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/pdf.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl OnbPdf {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 15 |     pub fn new(vec: &V3) -> OnbPdf {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MixPdf` is never constructed
[INFO] [stdout]    --> src/pdf.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub enum Pdfs {
[INFO] [stdout]     |          ---- variant in this enum
[INFO] [stdout] 119 |     MixPdf(MixPdf),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Pdfs` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Metal` is never constructed
[INFO] [stdout]    --> src/materials.rs:162:5
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub enum Materials {
[INFO] [stdout]     |          --------- variant in this enum
[INFO] [stdout] 161 |     Lambertian(Lambertian),
[INFO] [stdout] 162 |     Metal(Metal),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `metal` is never used
[INFO] [stdout]    --> src/materials.rs:174:12
[INFO] [stdout]     |
[INFO] [stdout] 167 | impl Materials {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn metal(albedo: V3, fuzz: f32) -> Materials {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_V3` should have a snake case name
[INFO] [stdout]    --> src/vector.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout] 136 |     pub fn as_V3(self) -> V3 {
[INFO] [stdout]     |            ^^^^^ help: convert the identifier to snake case (notice the capitalization): `as_v3`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `invD` should have a snake case name
[INFO] [stdout]   --> src/figures.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let invD = 1.0 / ray.direction.x();
[INFO] [stdout]    |             ^^^^ help: convert the identifier to snake case: `inv_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `invD` should have a snake case name
[INFO] [stdout]   --> src/figures.rs:75:13
[INFO] [stdout]    |
[INFO] [stdout] 75 |         let invD = 1.0 / ray.direction.y();
[INFO] [stdout]    |             ^^^^ help: convert the identifier to snake case: `inv_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `invD` should have a snake case name
[INFO] [stdout]   --> src/figures.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |         let invD = 1.0 / ray.direction.z();
[INFO] [stdout]    |             ^^^^ help: convert the identifier to snake case: `inv_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/vector.rs:64:26
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub fn map(self, f: &Fn(f32) -> f32) -> V3 {
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub fn map(self, f: &dyn Fn(f32) -> f32) -> V3 {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]    --> src/figures.rs:128:25
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn pdf_value(&self, o: V3, v: V3U) -> f32 {
[INFO] [stdout]     |                         ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]    --> src/figures.rs:128:32
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn pdf_value(&self, o: V3, v: V3U) -> f32 {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]    --> src/figures.rs:132:22
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn random(&self, o: V3) -> V3 {
[INFO] [stdout]     |                      ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:186:28
[INFO] [stdout]     |
[INFO] [stdout] 186 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:186:37
[INFO] [stdout]     |
[INFO] [stdout] 186 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/figures.rs:195:18
[INFO] [stdout]     |
[INFO] [stdout] 195 |             Some(rec) => {
[INFO] [stdout]     |                  ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:243:28
[INFO] [stdout]     |
[INFO] [stdout] 243 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:243:37
[INFO] [stdout]     |
[INFO] [stdout] 243 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:282:28
[INFO] [stdout]     |
[INFO] [stdout] 282 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:282:37
[INFO] [stdout]     |
[INFO] [stdout] 282 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:321:28
[INFO] [stdout]     |
[INFO] [stdout] 321 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:321:37
[INFO] [stdout]     |
[INFO] [stdout] 321 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:391:28
[INFO] [stdout]     |
[INFO] [stdout] 391 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:391:37
[INFO] [stdout]     |
[INFO] [stdout] 391 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:502:28
[INFO] [stdout]     |
[INFO] [stdout] 502 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:502:37
[INFO] [stdout]     |
[INFO] [stdout] 502 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/figures.rs:515:13
[INFO] [stdout]     |
[INFO] [stdout] 515 |         let db = false;
[INFO] [stdout]     |             ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/figures.rs:633:28
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/figures.rs:633:37
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fs`
[INFO] [stdout]    --> src/figures.rs:763:30
[INFO] [stdout]     |
[INFO] [stdout] 763 |             Figures::Figures(fs) => unimplemented!(),
[INFO] [stdout]     |                              ^^ help: if this is intentional, prefix it with an underscore: `_fs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]   --> src/textures.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn value(&self, u: f32, v: f32, point: &V3) -> V3 {
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/textures.rs:20:29
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn value(&self, u: f32, v: f32, point: &V3) -> V3 {
[INFO] [stdout]    |                             ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point`
[INFO] [stdout]   --> src/textures.rs:20:37
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn value(&self, u: f32, v: f32, point: &V3) -> V3 {
[INFO] [stdout]    |                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_point`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ray_in`
[INFO] [stdout]   --> src/materials.rs:17:30
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn scattering_pdf(&self, ray_in: &Ray, hit_record: &HitRecord, scattered: &Ray) -> f32 {
[INFO] [stdout]    |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_ray_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hit_record`
[INFO] [stdout]   --> src/materials.rs:17:44
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn scattering_pdf(&self, ray_in: &Ray, hit_record: &HitRecord, scattered: &Ray) -> f32 {
[INFO] [stdout]    |                                            ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hit_record`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scattered`
[INFO] [stdout]   --> src/materials.rs:17:68
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn scattering_pdf(&self, ray_in: &Ray, hit_record: &HitRecord, scattered: &Ray) -> f32 {
[INFO] [stdout]    |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scattered`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]   --> src/materials.rs:21:23
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn emitted(&self, u: f32, v: f32, point: &V3) -> V3 {
[INFO] [stdout]    |                       ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/materials.rs:21:31
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn emitted(&self, u: f32, v: f32, point: &V3) -> V3 {
[INFO] [stdout]    |                               ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point`
[INFO] [stdout]   --> src/materials.rs:21:39
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn emitted(&self, u: f32, v: f32, point: &V3) -> V3 {
[INFO] [stdout]    |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_point`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ray_in`
[INFO] [stdout]   --> src/materials.rs:48:30
[INFO] [stdout]    |
[INFO] [stdout] 48 |     fn scattering_pdf(&self, ray_in: &Ray, hit_record: &HitRecord, scattered: &Ray) -> f32 {
[INFO] [stdout]    |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_ray_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `XYRect` is more private than the item `figures::Figures::XYRect::0`
[INFO] [stdout]    --> src/figures.rs:641:12
[INFO] [stdout]     |
[INFO] [stdout] 641 |     XYRect(XYRect),
[INFO] [stdout]     |            ^^^^^^ field `figures::Figures::XYRect::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `XYRect` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:213:1
[INFO] [stdout]     |
[INFO] [stdout] 213 | struct XYRect {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `YZRect` is more private than the item `figures::Figures::YZRect::0`
[INFO] [stdout]    --> src/figures.rs:642:12
[INFO] [stdout]     |
[INFO] [stdout] 642 |     YZRect(YZRect),
[INFO] [stdout]     |            ^^^^^^ field `figures::Figures::YZRect::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `YZRect` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:252:1
[INFO] [stdout]     |
[INFO] [stdout] 252 | struct YZRect {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `XZRect` is more private than the item `figures::Figures::XZRect::0`
[INFO] [stdout]    --> src/figures.rs:643:12
[INFO] [stdout]     |
[INFO] [stdout] 643 |     XZRect(XZRect),
[INFO] [stdout]     |            ^^^^^^ field `figures::Figures::XZRect::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `XZRect` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:291:1
[INFO] [stdout]     |
[INFO] [stdout] 291 | struct XZRect {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `FlipNormals` is more private than the item `figures::Figures::FlipNormals::0`
[INFO] [stdout]    --> src/figures.rs:644:17
[INFO] [stdout]     |
[INFO] [stdout] 644 |     FlipNormals(FlipNormals),
[INFO] [stdout]     |                 ^^^^^^^^^^^ field `figures::Figures::FlipNormals::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `FlipNormals` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:345:1
[INFO] [stdout]     |
[INFO] [stdout] 345 | struct FlipNormals {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Cuboid` is more private than the item `figures::Figures::Cuboid::0`
[INFO] [stdout]    --> src/figures.rs:645:12
[INFO] [stdout]     |
[INFO] [stdout] 645 |     Cuboid(Cuboid),
[INFO] [stdout]     |            ^^^^^^ field `figures::Figures::Cuboid::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Cuboid` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:363:1
[INFO] [stdout]     |
[INFO] [stdout] 363 | struct Cuboid {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Translate` is more private than the item `figures::Figures::Translate::0`
[INFO] [stdout]    --> src/figures.rs:646:15
[INFO] [stdout]     |
[INFO] [stdout] 646 |     Translate(Translate),
[INFO] [stdout]     |               ^^^^^^^^^ field `figures::Figures::Translate::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `Translate` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:400:1
[INFO] [stdout]     |
[INFO] [stdout] 400 | struct Translate {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RotateY` is more private than the item `figures::Figures::RotateY::0`
[INFO] [stdout]    --> src/figures.rs:647:13
[INFO] [stdout]     |
[INFO] [stdout] 647 |     RotateY(RotateY),
[INFO] [stdout]     |             ^^^^^^^ field `figures::Figures::RotateY::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RotateY` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:426:1
[INFO] [stdout]     |
[INFO] [stdout] 426 | struct RotateY {
[INFO] [stdout]     | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ConstantMedium` is more private than the item `figures::Figures::ConstantMedium::0`
[INFO] [stdout]    --> src/figures.rs:648:20
[INFO] [stdout]     |
[INFO] [stdout] 648 |     ConstantMedium(ConstantMedium),
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^ field `figures::Figures::ConstantMedium::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `ConstantMedium` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:508:1
[INFO] [stdout]     |
[INFO] [stdout] 508 | struct ConstantMedium {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `BvhNode` is more private than the item `figures::Figures::BvhNode::0`
[INFO] [stdout]    --> src/figures.rs:650:13
[INFO] [stdout]     |
[INFO] [stdout] 650 |     BvhNode(BvhNode),
[INFO] [stdout]     |             ^^^^^^^ field `figures::Figures::BvhNode::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `BvhNode` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/figures.rs:556:1
[INFO] [stdout]     |
[INFO] [stdout] 556 | struct BvhNode {
[INFO] [stdout]     | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SolidTexture` is more private than the item `textures::Textures::Solid::0`
[INFO] [stdout]    --> src/textures.rs:168:11
[INFO] [stdout]     |
[INFO] [stdout] 168 |     Solid(SolidTexture),
[INFO] [stdout]     |           ^^^^^^^^^^^^ field `textures::Textures::Solid::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `SolidTexture` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/textures.rs:7:1
[INFO] [stdout]     |
[INFO] [stdout]   7 | struct SolidTexture {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `CheckerTexture` is more private than the item `textures::Textures::Checker::0`
[INFO] [stdout]    --> src/textures.rs:169:13
[INFO] [stdout]     |
[INFO] [stdout] 169 |     Checker(CheckerTexture),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ field `textures::Textures::Checker::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `CheckerTexture` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/textures.rs:25:1
[INFO] [stdout]     |
[INFO] [stdout]  25 | struct CheckerTexture {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `NoiseTexture` is more private than the item `textures::Textures::Noise::0`
[INFO] [stdout]    --> src/textures.rs:170:11
[INFO] [stdout]     |
[INFO] [stdout] 170 |     Noise(NoiseTexture),
[INFO] [stdout]     |           ^^^^^^^^^^^^ field `textures::Textures::Noise::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `NoiseTexture` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/textures.rs:147:1
[INFO] [stdout]     |
[INFO] [stdout] 147 | struct NoiseTexture {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `DiffuseLight` is more private than the item `materials::Materials::DiffuseLight::0`
[INFO] [stdout]    --> src/materials.rs:164:18
[INFO] [stdout]     |
[INFO] [stdout] 164 |     DiffuseLight(DiffuseLight),
[INFO] [stdout]     |                  ^^^^^^^^^^^^ field `materials::Materials::DiffuseLight::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `DiffuseLight` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/materials.rs:141:1
[INFO] [stdout]     |
[INFO] [stdout] 141 | struct DiffuseLight {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_random_scene` is never used
[INFO] [stdout]    --> src/main.rs:171:4
[INFO] [stdout]     |
[INFO] [stdout] 171 | fn create_random_scene() -> Scene {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_nextweek_scene` is never used
[INFO] [stdout]    --> src/main.rs:249:4
[INFO] [stdout]     |
[INFO] [stdout] 249 | fn create_nextweek_scene() -> Scene {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `u` and `v` are never used
[INFO] [stdout]   --> src/figures.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl Onb {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn u(&self) -> V3 {
[INFO] [stdout]    |            ^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn v(&self) -> V3 {
[INFO] [stdout]    |            ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `surround` is never used
[INFO] [stdout]    --> src/figures.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl Aabb {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn surround(&self, other: &Aabb) -> Aabb {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `box_x_compare`, `box_y_compare`, and `box_z_compare` are never used
[INFO] [stdout]    --> src/figures.rs:563:8
[INFO] [stdout]     |
[INFO] [stdout] 562 | impl BvhNode {
[INFO] [stdout]     | ------------ associated functions in this implementation
[INFO] [stdout] 563 |     fn new(mut figures: Vec<Figures>, time0: f32, time1: f32) -> BvhNode {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 596 |     fn box_x_compare(left: &Figures, right: &Figures) -> ::std::cmp::Ordering {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 600 |     fn box_y_compare(left: &Figures, right: &Figures) -> ::std::cmp::Ordering {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 604 |     fn box_z_compare(left: &Figures, right: &Figures) -> ::std::cmp::Ordering {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ConstantMedium` and `BvhNode` are never constructed
[INFO] [stdout]    --> src/figures.rs:648:5
[INFO] [stdout]     |
[INFO] [stdout] 639 | pub enum Figures {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 648 |     ConstantMedium(ConstantMedium),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 649 |     Figures(Vec<Figures>),
[INFO] [stdout] 650 |     BvhNode(BvhNode),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Figures` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `constant_medium` and `bvh_node` are never used
[INFO] [stdout]    --> src/figures.rs:712:12
[INFO] [stdout]     |
[INFO] [stdout] 653 | impl Figures {
[INFO] [stdout]     | ------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 712 |     pub fn constant_medium(density: f32, boundary: Figures) -> Figures {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 719 |     pub fn bvh_node(figures: Vec<Figures>, time0: f32, time1: f32) -> Figures {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/textures.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl CheckerTexture {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 31 |     fn new(odd: Textures, even: Textures) -> CheckerTexture {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `perlin_generate`, `permute`, and `perlin_generate_perm` are never used
[INFO] [stdout]   --> src/textures.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | impl Perlin {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout] 58 |     fn new() -> Perlin {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     fn perlin_generate() -> Vec<V3> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     fn permute(vec: &mut Vec<u8>, n: usize) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     fn perlin_generate_perm() -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/textures.rs:153:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl NoiseTexture {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 153 |     fn new(scaler: f32) -> NoiseTexture {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Checker` and `Noise` are never constructed
[INFO] [stdout]    --> src/textures.rs:169:5
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub enum Textures {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 168 |     Solid(SolidTexture),
[INFO] [stdout] 169 |     Checker(CheckerTexture),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 170 |     Noise(NoiseTexture),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `checker` and `noise` are never used
[INFO] [stdout]    --> src/textures.rs:178:12
[INFO] [stdout]     |
[INFO] [stdout] 173 | impl Textures {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub fn checker(even: Textures, odd: Textures) -> Textures {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn noise(scaler: f32) -> Textures {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OnbPdf` is never constructed
[INFO] [stdout]   --> src/pdf.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct OnbPdf {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/pdf.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl OnbPdf {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 15 |     pub fn new(vec: &V3) -> OnbPdf {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MixPdf` is never constructed
[INFO] [stdout]    --> src/pdf.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub enum Pdfs {
[INFO] [stdout]     |          ---- variant in this enum
[INFO] [stdout] 119 |     MixPdf(MixPdf),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Pdfs` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Metal` is never constructed
[INFO] [stdout]    --> src/materials.rs:162:5
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub enum Materials {
[INFO] [stdout]     |          --------- variant in this enum
[INFO] [stdout] 161 |     Lambertian(Lambertian),
[INFO] [stdout] 162 |     Metal(Metal),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `metal` is never used
[INFO] [stdout]    --> src/materials.rs:174:12
[INFO] [stdout]     |
[INFO] [stdout] 167 | impl Materials {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn metal(albedo: V3, fuzz: f32) -> Materials {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_V3` should have a snake case name
[INFO] [stdout]    --> src/vector.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout] 136 |     pub fn as_V3(self) -> V3 {
[INFO] [stdout]     |            ^^^^^ help: convert the identifier to snake case (notice the capitalization): `as_v3`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `invD` should have a snake case name
[INFO] [stdout]   --> src/figures.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let invD = 1.0 / ray.direction.x();
[INFO] [stdout]    |             ^^^^ help: convert the identifier to snake case: `inv_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `invD` should have a snake case name
[INFO] [stdout]   --> src/figures.rs:75:13
[INFO] [stdout]    |
[INFO] [stdout] 75 |         let invD = 1.0 / ray.direction.y();
[INFO] [stdout]    |             ^^^^ help: convert the identifier to snake case: `inv_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `invD` should have a snake case name
[INFO] [stdout]   --> src/figures.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |         let invD = 1.0 / ray.direction.z();
[INFO] [stdout]    |             ^^^^ help: convert the identifier to snake case: `inv_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.64s
[INFO] running `Command { std: "docker" "inspect" "4445816a3e8521bd4bf514488362419b9fc32f491e95bb0f07d777315c0df9ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4445816a3e8521bd4bf514488362419b9fc32f491e95bb0f07d777315c0df9ea", kill_on_drop: false }`
[INFO] [stdout] 4445816a3e8521bd4bf514488362419b9fc32f491e95bb0f07d777315c0df9ea
