[INFO] cloning repository https://github.com/Jardynq/imaginary-playpen
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Jardynq/imaginary-playpen" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJardynq%2Fimaginary-playpen", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJardynq%2Fimaginary-playpen'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 67be93a65516429aa148b8bb9626488afac0486c
[INFO] testing Jardynq/imaginary-playpen against 1.85.0 for beta-1.86-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJardynq%2Fimaginary-playpen" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/Jardynq/imaginary-playpen on toolchain 1.85.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.85.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/Jardynq/imaginary-playpen
[INFO] finished tweaking git repo https://github.com/Jardynq/imaginary-playpen
[INFO] tweaked toml for git repo https://github.com/Jardynq/imaginary-playpen written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/Jardynq/imaginary-playpen 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" "+1.85.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Found `debug_assertions` in `target.'cfg(...)'.dependencies`. This value is not supported for selecting dependencies and will not work as expected. To learn more visit https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#platform-specific-dependencies
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded cfg-if v0.1.10
[INFO] [stderr]   Downloaded memory_units v0.4.0
[INFO] [stderr]   Downloaded wee_alloc v0.4.5
[INFO] [stderr]   Downloaded gloo-timers v0.2.1
[INFO] [stderr]   Downloaded wasm-bindgen-test-macro v0.3.18
[INFO] [stderr]   Downloaded proc-macro-nested v0.1.6
[INFO] [stderr]   Downloaded futures-macro v0.3.5
[INFO] [stderr]   Downloaded wasm-bindgen-test v0.3.18
[INFO] [stderr]   Downloaded serde_bytes v0.11.5
[INFO] [stderr]   Downloaded futures-channel v0.3.5
[INFO] [stderr]   Downloaded pin-project-internal v0.4.23
[INFO] [stderr]   Downloaded gloo-events v0.1.1
[INFO] [stderr]   Downloaded unicode-xid v0.2.1
[INFO] [stderr]   Downloaded gloo-console-timer v0.1.0
[INFO] [stderr]   Downloaded wasm-bindgen-futures v0.4.18
[INFO] [stderr]   Downloaded futures-executor v0.3.5
[INFO] [stderr]   Downloaded console_log v0.2.0
[INFO] [stderr]   Downloaded futures v0.3.5
[INFO] [stderr]   Downloaded derive_more v0.99.11
[INFO] [stderr]   Downloaded pin-project v0.4.23
[INFO] [stderr]   Downloaded js-sys v0.3.45
[INFO] [stderr]   Downloaded proc-macro2 v1.0.24
[INFO] [stderr]   Downloaded bumpalo v3.4.0
[INFO] [stderr]   Downloaded futures-util v0.3.5
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.68
[INFO] [stderr]   Downloaded syn v1.0.45
[INFO] [stderr]   Downloaded gloo v0.2.1
[INFO] [stderr]   Downloaded serde v1.0.117
[INFO] [stderr]   Downloaded log v0.4.11
[INFO] [stderr]   Downloaded quote v1.0.7
[INFO] [stderr]   Downloaded futures-io v0.3.5
[INFO] [stderr]   Downloaded once_cell v1.4.1
[INFO] [stderr]   Downloaded serde_derive v1.0.117
[INFO] [stderr]   Downloaded futures-core v0.3.5
[INFO] [stderr]   Downloaded futures-sink v0.3.5
[INFO] [stderr]   Downloaded futures-task v0.3.5
[INFO] [stderr]   Downloaded libc v0.2.77
[INFO] [stderr]   Downloaded memchr v2.3.3
[INFO] [stderr]   Downloaded pin-utils v0.1.0
[INFO] [stderr]   Downloaded proc-macro-hack v0.5.18
[INFO] [stderr]   Downloaded slab v0.4.2
[INFO] [stderr]   Downloaded gloo-file v0.1.0
[INFO] [stderr]   Downloaded scoped-tls v1.0.0
[INFO] [stderr]   Downloaded console_error_panic_hook v0.1.6
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.68
[INFO] [stderr]   Downloaded web-sys v0.3.45
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.68
[INFO] [stderr]   Downloaded wasm-bindgen-backend v0.2.68
[INFO] [stderr]   Downloaded lazy_static v1.4.0
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.68
[INFO] [stderr]   Downloaded winapi v0.3.9
[INFO] [stderr]   Downloaded winapi-x86_64-pc-windows-gnu v0.4.0
[INFO] [stderr]   Downloaded winapi-i686-pc-windows-gnu v0.4.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+1.85.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 37ad8b5fb1f6de6f79a595dfccfa8a72fd45706639c6b5c2c925053c3ba4ebfd
[INFO] running `Command { std: "docker" "start" "-a" "37ad8b5fb1f6de6f79a595dfccfa8a72fd45706639c6b5c2c925053c3ba4ebfd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "37ad8b5fb1f6de6f79a595dfccfa8a72fd45706639c6b5c2c925053c3ba4ebfd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "37ad8b5fb1f6de6f79a595dfccfa8a72fd45706639c6b5c2c925053c3ba4ebfd", kill_on_drop: false }`
[INFO] [stdout] 37ad8b5fb1f6de6f79a595dfccfa8a72fd45706639c6b5c2c925053c3ba4ebfd
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+1.85.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f860a2af6d44e9599c23ead58cd63788d7cd6e497894720b5c799b99dccb4e9a
[INFO] running `Command { std: "docker" "start" "-a" "f860a2af6d44e9599c23ead58cd63788d7cd6e497894720b5c799b99dccb4e9a", kill_on_drop: false }`
[INFO] [stderr] warning: Found `debug_assertions` in `target.'cfg(...)'.dependencies`. This value is not supported for selecting dependencies and will not work as expected. To learn more visit https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#platform-specific-dependencies
[INFO] [stderr]    Compiling proc-macro2 v1.0.24
[INFO] [stderr]    Compiling unicode-xid v0.2.1
[INFO] [stderr]    Compiling syn v1.0.45
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.68
[INFO] [stderr]    Compiling log v0.4.11
[INFO] [stderr]    Compiling cfg-if v0.1.10
[INFO] [stderr]    Compiling bumpalo v3.4.0
[INFO] [stderr]    Compiling lazy_static v1.4.0
[INFO] [stderr]    Compiling wasm-bindgen v0.2.68
[INFO] [stderr]    Compiling pin-project-internal v0.4.23
[INFO] [stderr]    Compiling memchr v2.3.3
[INFO] [stderr]    Compiling proc-macro-nested v0.1.6
[INFO] [stderr]    Compiling once_cell v1.4.1
[INFO] [stderr]    Compiling futures-core v0.3.5
[INFO] [stderr]    Compiling futures-sink v0.3.5
[INFO] [stderr]    Compiling proc-macro-hack v0.5.18
[INFO] [stderr]    Compiling serde_derive v1.0.117
[INFO] [stderr]    Compiling futures-channel v0.3.5
[INFO] [stderr]    Compiling futures-task v0.3.5
[INFO] [stderr]    Compiling serde v1.0.117
[INFO] [stderr]    Compiling futures-io v0.3.5
[INFO] [stderr]    Compiling slab v0.4.2
[INFO] [stderr]    Compiling quote v1.0.7
[INFO] [stderr]    Compiling wasm-bindgen-backend v0.2.68
[INFO] [stderr]    Compiling futures-macro v0.3.5
[INFO] [stderr]    Compiling macro_derive v0.1.0 (/opt/rustwide/workdir/macro_derive)
[INFO] [stderr]    Compiling derive_more v0.99.11
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.68
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.68
[INFO] [stderr]    Compiling pin-project v0.4.23
[INFO] [stderr]    Compiling futures-util v0.3.5
[INFO] [stderr]    Compiling js-sys v0.3.45
[INFO] [stderr]    Compiling console_error_panic_hook v0.1.6
[INFO] [stderr]    Compiling futures-executor v0.3.5
[INFO] [stderr]    Compiling futures v0.3.5
[INFO] [stderr]    Compiling web-sys v0.3.45
[INFO] [stderr]    Compiling serde_bytes v0.11.5
[INFO] [stderr]    Compiling gloo-events v0.1.1
[INFO] [stderr]    Compiling gloo-console-timer v0.1.0
[INFO] [stderr]    Compiling gloo-timers v0.2.1
[INFO] [stderr]    Compiling console_log v0.2.0
[INFO] [stderr]    Compiling gloo-file v0.1.0
[INFO] [stderr]    Compiling gloo v0.2.1
[INFO] [stderr]    Compiling imaginary-playpen v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused macro definition: `log_info`
[INFO] [stdout]   --> src/utils.rs:75:14
[INFO] [stdout]    |
[INFO] [stdout] 75 | macro_rules! log_info {
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_macros)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, and `trace`
[INFO] [stdout]  --> src/input.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{ trace, debug, info, warn, error };
[INFO] [stdout]   |            ^^^^^  ^^^^^              ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wasm_bindgen::prelude::*`
[INFO] [stdout]  --> src/input.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use wasm_bindgen::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `console`
[INFO] [stdout]   --> src/input.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     console,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `complex::*`
[INFO] [stdout]  --> src/math/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use complex::*;
[INFO] [stdout]   |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `interpreter::*`
[INFO] [stdout]  --> src/math/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use interpreter::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `info`, and `trace`
[INFO] [stdout]  --> src/javascript.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{ trace, debug, info, warn, error };
[INFO] [stdout]   |            ^^^^^  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Element`, `HtmlElement`, and `Node`
[INFO] [stdout]  --> src/javascript.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 |     Window, Document, Element, HtmlElement, Node, 
[INFO] [stdout]   |                       ^^^^^^^  ^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `macro_derive::*`
[INFO] [stdout]   --> src/lib.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use macro_derive::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::debug`
[INFO] [stdout]   --> src/lib.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use log::debug;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::trace`
[INFO] [stdout]   --> src/lib.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use log::trace;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Document`, `Element`, `HtmlCanvasElement`, `HtmlDivElement`, `HtmlElement`, `HtmlParagraphElement`, `Navigator`, `Node`, and `Window`
[INFO] [stdout]   --> src/lib.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     Window, Document, Element, HtmlElement, Node, 
[INFO] [stdout]    |     ^^^^^^  ^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^  ^^^^
[INFO] [stdout] 28 |     Navigator,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     HtmlDivElement, HtmlParagraphElement, HtmlImageElement,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 33 |     HtmlCanvasElement, HtmlVideoElement,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:289:28
[INFO] [stdout]     |
[INFO] [stdout] 289 |                 let time = (js.time_now() / 1000.0);
[INFO] [stdout]     |                            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 289 -                 let time = (js.time_now() / 1000.0);
[INFO] [stdout] 289 +                 let time = js.time_now() / 1000.0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]   --> src/canvas.rs:14:28
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn set_size(&self, size: (Option<i32>, Option<i32>)) {
[INFO] [stdout]    |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `renderer`
[INFO] [stdout]   --> src/canvas.rs:22:19
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn render(renderer: Option<Box<dyn FnMut(&Self)>>) {
[INFO] [stdout]    |                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_renderer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/math/interpreter.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             _ => Complex::zero(),
[INFO] [stdout]     |             - matches any value
[INFO] [stdout] ...
[INFO] [stdout] 154 |             Syntax::Variable(name) => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/math/interpreter.rs:160:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             _ => Complex::zero(),
[INFO] [stdout]     |             - matches any value
[INFO] [stdout] ...
[INFO] [stdout] 160 |             Syntax::Function(name) => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/math/interpreter.rs:160:30
[INFO] [stdout]     |
[INFO] [stdout] 160 |             Syntax::Function(name) => {
[INFO] [stdout]     |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/lib.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let mut js = Javascript::default();
[INFO] [stdout]    |             ----^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `print_webgl_error`
[INFO] [stdout]    --> src/lib.rs:130:17
[INFO] [stdout]     |
[INFO] [stdout] 130 |             let print_webgl_error = |context: &WebGl2| {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_print_webgl_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `video_width`
[INFO] [stdout]    --> src/lib.rs:191:22
[INFO] [stdout]     |
[INFO] [stdout] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stdout]     |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `video_height`
[INFO] [stdout]    --> src/lib.rs:191:39
[INFO] [stdout]     |
[INFO] [stdout] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stdout]     |                                       ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `freeze_x`
[INFO] [stdout]    --> src/lib.rs:262:22
[INFO] [stdout]     |
[INFO] [stdout] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stdout]     |                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_freeze_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `freeze_y`
[INFO] [stdout]    --> src/lib.rs:262:36
[INFO] [stdout]     |
[INFO] [stdout] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stdout]     |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_freeze_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `freeze_state`
[INFO] [stdout]    --> src/lib.rs:263:21
[INFO] [stdout]     |
[INFO] [stdout] 263 |             let mut freeze_state = 0; // 0 none, 1 freeze x, 2 freeze y 
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_freeze_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error`
[INFO] [stdout]    --> src/lib.rs:223:75
[INFO] [stdout]     |
[INFO] [stdout] 223 | ...                   let temp_error = Closure::wrap(Box::new(move |error: JsValue| {
[INFO] [stdout]     |                                                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req_token`
[INFO] [stdout]    --> src/lib.rs:279:21
[INFO] [stdout]     |
[INFO] [stdout] 279 |                 let req_token = req_anim_frame(self_loop.borrow().as_ref().unwrap());
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_req_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value captured by `delta_time` is never read
[INFO] [stdout]    --> src/lib.rs:281:17
[INFO] [stdout]     |
[INFO] [stdout] 281 |                 delta_time = (current_frametime - last_frametime) / 1000.0;
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: did you mean to capture by reference instead?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `elapsed`
[INFO] [stdout]    --> src/lib.rs:278:73
[INFO] [stdout]     |
[INFO] [stdout] 278 |             *main_loop.borrow_mut() = Some(Closure::wrap(Box::new(move |elapsed: f64| {
[INFO] [stdout]     |                                                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_elapsed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:191:18
[INFO] [stdout]     |
[INFO] [stdout] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stdout]     |                  ----^^^^^^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:191:35
[INFO] [stdout]     |
[INFO] [stdout] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stdout]     |                                   ----^^^^^^^^^^^^
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:262:18
[INFO] [stdout]     |
[INFO] [stdout] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stdout]     |                  ----^^^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:262:32
[INFO] [stdout]     |
[INFO] [stdout] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stdout]     |                                ----^^^^^^^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:263:17
[INFO] [stdout]     |
[INFO] [stdout] 263 |             let mut freeze_state = 0; // 0 none, 1 freeze x, 2 freeze y 
[INFO] [stdout]     |                 ----^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:553:22
[INFO] [stdout]     |
[INFO] [stdout] 553 |     pub fn terminate(mut self) {
[INFO] [stdout]     |                      ----^^^^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/lib.rs:575:23
[INFO] [stdout]     |
[INFO] [stdout] 575 |         Err(error) => unsafe { console::error_1(&JsValue::from_str(&error.to_string())) },
[INFO] [stdout]     |                       ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error`
[INFO] [stdout]    --> src/lib.rs:716:22
[INFO] [stdout]     |
[INFO] [stdout] 716 |                 Some(error) => error!("{}", expr.pretty_error()),
[INFO] [stdout]     |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:722:9
[INFO] [stdout]     |
[INFO] [stdout] 722 |     let mut nodes = expr.serialize::<Variable, Function>();
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `custom_framerate` is never read
[INFO] [stdout]   --> src/lib.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct Application {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     custom_framerate: (bool, f64),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Right`, `Middle`, `Back`, and `Forward` are never constructed
[INFO] [stdout]   --> src/input.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum MouseButton {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 22 |     Left    = 0,
[INFO] [stdout] 23 |     Right   = 1,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 24 |     Middle  = 2,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 25 |     Back    = 3,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 26 |     Forward = 4,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MouseButton` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `temp` is never read
[INFO] [stdout]   --> src/input.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct Handler {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 93 |     temp: EventHandler,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unhook` is never used
[INFO] [stdout]    --> src/input.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl Handler {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn unhook(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/input.rs:331:12
[INFO] [stdout]     |
[INFO] [stdout] 330 | impl Handler {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 331 |     pub fn pointer(&self) -> (f64, f64) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     pub fn pointer_delta(&self) -> (f64, f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn wheel(&self) -> (f64, f64, f64) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub fn wheel_delta(&self) -> (f64, f64, f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn key(&self, code: &str) -> State {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn vkey_active(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     pub fn vkey_inactive(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 387 |     pub fn vkey_pressed(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 390 |     pub fn vkey_held(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     pub fn vkey_released(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub fn button(&self, button: MouseButton) -> State {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn vbutton_active(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 425 |     pub fn vbutton_inactive(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     pub fn vbutton_pressed(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub fn vbutton_held(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 434 |     pub fn vbutton_released(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `target`, `inner`, and `listeners` are never read
[INFO] [stdout]    --> src/input.rs:444:5
[INFO] [stdout]     |
[INFO] [stdout] 443 | struct EventHandler {
[INFO] [stdout]     |        ------------ fields in this struct
[INFO] [stdout] 444 |     target: Option<EventTarget>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 445 |     inner: Arc<Mutex<(Option<Event>, bool)>>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 446 |     listeners: Vec<Option<EventListener>>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EventHandler` has a derived impl for the trait `Default`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/input.rs:449:8
[INFO] [stdout]     |
[INFO] [stdout] 448 | impl EventHandler {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 449 |     fn new(target: &EventTarget) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     fn hook(&mut self, event_type: &str, forget: bool) -> Option<usize> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     fn unhook(&mut self, index: usize) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     fn unhook_all(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 490 |     fn handle(&mut self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     fn get<EventType: AsRef<Event> + JsCast>(&self) -> (Option<EventType>, bool) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 503 |     fn get_target(&self) -> Option<EventTarget> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unbind` is never used
[INFO] [stdout]    --> src/shader.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 26  | impl Shader {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn unbind(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unbind` is never used
[INFO] [stdout]    --> src/shader.rs:223:12
[INFO] [stdout]     |
[INFO] [stdout] 203 | impl VertexArray {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn unbind(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unbind` is never used
[INFO] [stdout]    --> src/shader.rs:310:12
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl UniformBufferObject {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn unbind(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MappedBuffer` is never constructed
[INFO] [stdout]    --> src/shader.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | struct MappedBuffer {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Canvas` is never constructed
[INFO] [stdout]  --> src/canvas.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct Canvas {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `set_size`, `render`, and `render_post` are never used
[INFO] [stdout]   --> src/canvas.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Canvas {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn set_size(&self, size: (Option<i32>, Option<i32>)) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn render(renderer: Option<Box<dyn FnMut(&Self)>>) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn render_post() {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `real`, `imaginary`, `zero`, `infinity`, and `nan` are never used
[INFO] [stdout]   --> src/math/complex.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 9  | impl Complex {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn real(value: f64) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn imaginary(value: f64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn zero() -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn infinity() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn nan() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/math/complex.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Complex {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn is_zero(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn is_nan(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn is_infinite(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn is_finite(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn is_normal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn is_real(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn is_imaginary(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/math/complex.rs:60:12
[INFO] [stdout]     |
[INFO] [stdout] 59  | impl Complex {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 60  |     pub fn abs(&self) -> f64 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 63  |     pub fn arg(&self) -> f64 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 67  |     pub fn fract(self) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73  |     pub fn sign(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80  |     pub fn dot(self, other: Self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn conjugate(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93  |     pub fn sqrt(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn exp(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn exp_m1(self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn log(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn pow(self, exponent: Self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/math/complex.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 150 | impl Complex {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 151 |     pub fn sin(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn asin(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn cos(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn acos(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn tan(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn atan(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn cot(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn acot(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn sec(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn asec(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn csc(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn acsc(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_string_phasor`, `to_string_polar`, and `to_string_exponential` are never used
[INFO] [stdout]    --> src/math/complex.rs:400:12
[INFO] [stdout]     |
[INFO] [stdout] 399 | impl Complex {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 400 |     pub fn to_string_phasor(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 405 |     pub fn to_string_polar(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn to_string_exponential(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cos_m1` and `log_hypot` are never used
[INFO] [stdout]  --> src/math/extended.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Extended {
[INFO] [stdout]   |           -------- methods in this trait
[INFO] [stdout] 2 |     fn cos_m1(self) -> Self;
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 3 |     fn log_hypot(self, other: Self) -> Self;
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sanitize_input` is never used
[INFO] [stdout]  --> src/math/interpreter.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn sanitize_input(input: &str) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `None`, `Exit`, `Evaluate`, `SetVariable`, and `RemoveVariable` are never constructed
[INFO] [stdout]   --> src/math/interpreter.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum ReplCommand {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 23 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 24 |     Exit,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 25 |     Evaluate,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 26 |     SetVariable(String, Complex),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 27 |     RemoveVariable(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ReplCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Intepreter` is never constructed
[INFO] [stdout]   --> src/math/interpreter.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct Intepreter {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/math/interpreter.rs:34:12
[INFO] [stdout]     |
[INFO] [stdout] 33  | impl Intepreter {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 34  |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42  |     pub fn repl_handler<F: Fn(Expression) -> Vec<ReplCommand>>(&mut self, handler: F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn repl(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn set_variable(&mut self, name: &str, value: Complex) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95  |     pub fn evaluate(&self, expr: &Expression) -> Complex {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn evaluate_node_left(&self, node: &Node) -> Complex {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn evaluate_node_right(&self, node: &Node) -> Complex {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn evaluate_node(&self, node: &Node) -> Complex {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]    --> src/math/parser.rs:479:12
[INFO] [stdout]     |
[INFO] [stdout] 451 | impl Node {
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 479 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]    --> src/math/parser.rs:568:12
[INFO] [stdout]     |
[INFO] [stdout] 534 | impl Expression {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 568 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `syntax`, `keyword`, and `value` are never read
[INFO] [stdout]   --> src/math/serializer.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct NodeData {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub syntax: u16,                    // offset 6, size 2
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 33 |     // Pack keyword identifier into hi
[INFO] [stdout] 34 |     pub keyword: u16,                   // offset 4, size 2
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 35 |
[INFO] [stdout] 36 |     pub value: (f32, f32),              // offset 8, size 8
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NodeData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `body` is never read
[INFO] [stdout]   --> src/javascript.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Javascript {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     body:       Option<HtmlBodyElement>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Javascript` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset`, `get_canvas_bitmap`, and `get_canvas_webgl` are never used
[INFO] [stdout]    --> src/javascript.rs:29:12
[INFO] [stdout]     |
[INFO] [stdout] 28  | impl Javascript {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 29  |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn get_canvas_bitmap(&mut self, query: &str) -> Option<(HtmlCanvasElement, ImageBitmapRenderingContext)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn get_canvas_webgl(&mut self, query: &str) -> Option<(HtmlCanvasElement, WebGlRenderingContext)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `body` is never used
[INFO] [stdout]    --> src/javascript.rs:175:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl Javascript {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn body(&mut self) -> Option<HtmlBodyElement> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/lib.rs:83:13
[INFO] [stdout]    |
[INFO] [stdout] 83 |             w_canvas.style().set_property("width", "400");
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 83 |             let _ = w_canvas.style().set_property("width", "400");
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/lib.rs:84:13
[INFO] [stdout]    |
[INFO] [stdout] 84 |             w_canvas.style().set_property("height", "400");
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 84 |             let _ = w_canvas.style().set_property("height", "400");
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static is discouraged
[INFO] [stdout]    --> src/lib.rs:154:32
[INFO] [stdout]     |
[INFO] [stdout] 154 |             let ubo = unsafe { global_ubo.as_ref().unwrap().clone() };
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Promise` that must be used
[INFO] [stdout]    --> src/lib.rs:227:29
[INFO] [stdout]     |
[INFO] [stdout] 227 | ...                   media.then(&temp_callback).catch(&temp_error);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 227 |                             let _ = media.then(&temp_callback).catch(&temp_error);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static is discouraged
[INFO] [stdout]    --> src/lib.rs:466:55
[INFO] [stdout]     |
[INFO] [stdout] 466 |                     w_shader.uniform1i("nodes_count", global_nodes_count.as_ref().unwrap().get() as i32);
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `global_ubo` should have an upper case name
[INFO] [stdout]    --> src/lib.rs:702:12
[INFO] [stdout]     |
[INFO] [stdout] 702 | static mut global_ubo: Option<std::sync::Arc<shader::UniformBufferObject>> = None;
[INFO] [stdout]     |            ^^^^^^^^^^ help: convert the identifier to upper case: `GLOBAL_UBO`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `global_nodes_count` should have an upper case name
[INFO] [stdout]    --> src/lib.rs:703:12
[INFO] [stdout]     |
[INFO] [stdout] 703 | static mut global_nodes_count: Option<std::sync::Arc<std::cell::Cell<usize>>> = None;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `GLOBAL_NODES_COUNT`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static is discouraged
[INFO] [stdout]    --> src/lib.rs:726:9
[INFO] [stdout]     |
[INFO] [stdout] 726 |         global_ubo.as_ref().unwrap().set_data(&nodes);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static is discouraged
[INFO] [stdout]    --> src/lib.rs:733:9
[INFO] [stdout]     |
[INFO] [stdout] 733 |         global_nodes_count.as_ref().unwrap().set(nodes.len());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serializer::*`
[INFO] [stdout]   --> src/math/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use serializer::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `macro_derive::*`
[INFO] [stdout]  --> src/bin.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use macro_derive::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `x` should have an upper camel case name
[INFO] [stdout]   --> src/bin.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     x,
[INFO] [stdout]    |     ^ help: convert the identifier to upper camel case (notice the capitalization): `X`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `sin` should have an upper camel case name
[INFO] [stdout]   --> src/bin.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     sin,
[INFO] [stdout]    |     ^^^ help: convert the identifier to upper camel case (notice the capitalization): `Sin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `cos` should have an upper camel case name
[INFO] [stdout]   --> src/bin.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     cos,
[INFO] [stdout]    |     ^^^ help: convert the identifier to upper camel case (notice the capitalization): `Cos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/math/interpreter.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             _ => Complex::zero(),
[INFO] [stdout]     |             - matches any value
[INFO] [stdout] ...
[INFO] [stdout] 154 |             Syntax::Variable(name) => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/math/interpreter.rs:160:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             _ => Complex::zero(),
[INFO] [stdout]     |             - matches any value
[INFO] [stdout] ...
[INFO] [stdout] 160 |             Syntax::Function(name) => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/math/interpreter.rs:160:30
[INFO] [stdout]     |
[INFO] [stdout] 160 |             Syntax::Function(name) => {
[INFO] [stdout]     |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input1`
[INFO] [stdout]   --> src/bin.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 |     let input1 = "(.395         +56__2_i ) + 7 ^ (3 * 5 + 5)";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input2`
[INFO] [stdout]   --> src/bin.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let input2 = "++++++(.2+++6)";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input3`
[INFO] [stdout]   --> src/bin.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 |     let input3 = "x y + 7";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input5`
[INFO] [stdout]   --> src/bin.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let input5 = "---5(2+8) + 5awd - x(8)";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input5`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input6`
[INFO] [stdout]   --> src/bin.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let input6 = "16^(1/2)";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input6`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input7`
[INFO] [stdout]   --> src/bin.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 64 |     let input7 = "cos(  1 + \n 5+7)* 23    9 2. ";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input7`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input8`
[INFO] [stdout]   --> src/bin.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |     let input8 = "2.|-.3| + |2|";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input9`
[INFO] [stdout]   --> src/bin.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let input9 = "(2)+|-3|(10)";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input9`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input10`
[INFO] [stdout]   --> src/bin.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |     let input10 = "0+8)24"; // TODO: Returns after ')'
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input10`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input11`
[INFO] [stdout]   --> src/bin.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let input11 = "(10 + 6.2i) * 2";
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input11`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]   --> src/bin.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 |     intep.repl_handler(|expr| {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `x` is never constructed
[INFO] [stdout]   --> src/bin.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | enum Variable {
[INFO] [stdout]    |      -------- variant in this enum
[INFO] [stdout] 11 |     x,
[INFO] [stdout]    |     ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Variable` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `sin` and `cos` are never constructed
[INFO] [stdout]   --> src/bin.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | enum Function {
[INFO] [stdout]    |      -------- variants in this enum
[INFO] [stdout] 25 |     sin,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 26 |     cos,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Function` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `infinity` and `nan` are never used
[INFO] [stdout]   --> src/math/complex.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 9  | impl Complex {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn infinity() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn nan() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_nan`, `is_infinite`, `is_finite`, `is_normal`, and `is_imaginary` are never used
[INFO] [stdout]   --> src/math/complex.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Complex {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn is_nan(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn is_infinite(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn is_finite(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn is_normal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn is_imaginary(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/math/complex.rs:67:12
[INFO] [stdout]     |
[INFO] [stdout] 59  | impl Complex {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 67  |     pub fn fract(self) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73  |     pub fn sign(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80  |     pub fn dot(self, other: Self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn conjugate(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93  |     pub fn sqrt(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn exp(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn exp_m1(self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/math/complex.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 150 | impl Complex {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn asin(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn acos(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn atan(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn cot(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn acot(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn sec(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn asec(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn csc(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn acsc(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `cos_m1` is never used
[INFO] [stdout]  --> src/math/extended.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Extended {
[INFO] [stdout]   |           -------- method in this trait
[INFO] [stdout] 2 |     fn cos_m1(self) -> Self;
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `None`, `Exit`, `SetVariable`, and `RemoveVariable` are never constructed
[INFO] [stdout]   --> src/math/interpreter.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum ReplCommand {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 23 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 24 |     Exit,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 25 |     Evaluate,
[INFO] [stdout] 26 |     SetVariable(String, Complex),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 27 |     RemoveVariable(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ReplCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `repl` is never used
[INFO] [stdout]   --> src/math/interpreter.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Intepreter {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn repl(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]    --> src/math/parser.rs:479:12
[INFO] [stdout]     |
[INFO] [stdout] 451 | impl Node {
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 479 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `syntax`, `keyword`, and `value` are never read
[INFO] [stdout]   --> src/math/serializer.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct NodeData {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub syntax: u16,                    // offset 6, size 2
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 33 |     // Pack keyword identifier into hi
[INFO] [stdout] 34 |     pub keyword: u16,                   // offset 4, size 2
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 35 |
[INFO] [stdout] 36 |     pub value: (f32, f32),              // offset 8, size 8
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NodeData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `serialize` is never used
[INFO] [stdout]    --> src/math/serializer.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl Expression {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 129 |     pub fn serialize<V: KeywordType, F: KeywordType>(&self) -> Vec<NodeData> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 43.78s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: console_log v0.2.0, wasm-bindgen v0.2.68
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 7`
[INFO] running `Command { std: "docker" "inspect" "f860a2af6d44e9599c23ead58cd63788d7cd6e497894720b5c799b99dccb4e9a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f860a2af6d44e9599c23ead58cd63788d7cd6e497894720b5c799b99dccb4e9a", kill_on_drop: false }`
[INFO] [stdout] f860a2af6d44e9599c23ead58cd63788d7cd6e497894720b5c799b99dccb4e9a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+1.85.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5ff45d787d1646797228169d4811e92827e399633a026046135550c83e7984ca
[INFO] running `Command { std: "docker" "start" "-a" "5ff45d787d1646797228169d4811e92827e399633a026046135550c83e7984ca", kill_on_drop: false }`
[INFO] [stderr] warning: Found `debug_assertions` in `target.'cfg(...)'.dependencies`. This value is not supported for selecting dependencies and will not work as expected. To learn more visit https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#platform-specific-dependencies
[INFO] [stderr]    Compiling wasm-bindgen-futures v0.4.18
[INFO] [stderr]    Compiling wasm-bindgen-test-macro v0.3.18
[INFO] [stderr]    Compiling scoped-tls v1.0.0
[INFO] [stdout] warning: unused macro definition: `log_info`
[INFO] [stdout]   --> src/utils.rs:75:14
[INFO] [stdout]    |
[INFO] [stdout] 75 | macro_rules! log_info {
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_macros)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, and `trace`
[INFO] [stdout]  --> src/input.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{ trace, debug, info, warn, error };
[INFO] [stdout]   |            ^^^^^  ^^^^^              ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wasm_bindgen::prelude::*`
[INFO] [stdout]  --> src/input.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use wasm_bindgen::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `console`
[INFO] [stdout]   --> src/input.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     console,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `complex::*`
[INFO] [stdout]  --> src/math/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use complex::*;
[INFO] [stdout]   |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `interpreter::*`
[INFO] [stdout]  --> src/math/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use interpreter::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `info`, and `trace`
[INFO] [stdout]  --> src/javascript.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{ trace, debug, info, warn, error };
[INFO] [stdout]   |            ^^^^^  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Element`, `HtmlElement`, and `Node`
[INFO] [stdout]  --> src/javascript.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 |     Window, Document, Element, HtmlElement, Node, 
[INFO] [stdout]   |                       ^^^^^^^  ^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `macro_derive::*`
[INFO] [stdout]   --> src/lib.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use macro_derive::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::debug`
[INFO] [stdout]   --> src/lib.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use log::debug;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::trace`
[INFO] [stdout]   --> src/lib.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use log::trace;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Document`, `Element`, `HtmlCanvasElement`, `HtmlDivElement`, `HtmlElement`, `HtmlParagraphElement`, `Navigator`, `Node`, and `Window`
[INFO] [stdout]   --> src/lib.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     Window, Document, Element, HtmlElement, Node, 
[INFO] [stdout]    |     ^^^^^^  ^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^  ^^^^
[INFO] [stdout] 28 |     Navigator,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     HtmlDivElement, HtmlParagraphElement, HtmlImageElement,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 33 |     HtmlCanvasElement, HtmlVideoElement,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:289:28
[INFO] [stdout]     |
[INFO] [stdout] 289 |                 let time = (js.time_now() / 1000.0);
[INFO] [stdout]     |                            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 289 -                 let time = (js.time_now() / 1000.0);
[INFO] [stdout] 289 +                 let time = js.time_now() / 1000.0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]   --> src/canvas.rs:14:28
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn set_size(&self, size: (Option<i32>, Option<i32>)) {
[INFO] [stdout]    |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `renderer`
[INFO] [stdout]   --> src/canvas.rs:22:19
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn render(renderer: Option<Box<dyn FnMut(&Self)>>) {
[INFO] [stdout]    |                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_renderer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/math/interpreter.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             _ => Complex::zero(),
[INFO] [stdout]     |             - matches any value
[INFO] [stdout] ...
[INFO] [stdout] 154 |             Syntax::Variable(name) => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/math/interpreter.rs:160:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             _ => Complex::zero(),
[INFO] [stdout]     |             - matches any value
[INFO] [stdout] ...
[INFO] [stdout] 160 |             Syntax::Function(name) => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/math/interpreter.rs:160:30
[INFO] [stdout]     |
[INFO] [stdout] 160 |             Syntax::Function(name) => {
[INFO] [stdout]     |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/lib.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let mut js = Javascript::default();
[INFO] [stdout]    |             ----^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `print_webgl_error`
[INFO] [stdout]    --> src/lib.rs:130:17
[INFO] [stdout]     |
[INFO] [stdout] 130 |             let print_webgl_error = |context: &WebGl2| {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_print_webgl_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `video_width`
[INFO] [stdout]    --> src/lib.rs:191:22
[INFO] [stdout]     |
[INFO] [stdout] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stdout]     |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `video_height`
[INFO] [stdout]    --> src/lib.rs:191:39
[INFO] [stdout]     |
[INFO] [stdout] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stdout]     |                                       ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `freeze_x`
[INFO] [stdout]    --> src/lib.rs:262:22
[INFO] [stdout]     |
[INFO] [stdout] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stdout]     |                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_freeze_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `freeze_y`
[INFO] [stdout]    --> src/lib.rs:262:36
[INFO] [stdout]     |
[INFO] [stdout] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stdout]     |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_freeze_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `freeze_state`
[INFO] [stdout]    --> src/lib.rs:263:21
[INFO] [stdout]     |
[INFO] [stdout] 263 |             let mut freeze_state = 0; // 0 none, 1 freeze x, 2 freeze y 
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_freeze_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error`
[INFO] [stdout]    --> src/lib.rs:223:75
[INFO] [stdout]     |
[INFO] [stdout] 223 | ...                   let temp_error = Closure::wrap(Box::new(move |error: JsValue| {
[INFO] [stdout]     |                                                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req_token`
[INFO] [stdout]    --> src/lib.rs:279:21
[INFO] [stdout]     |
[INFO] [stdout] 279 |                 let req_token = req_anim_frame(self_loop.borrow().as_ref().unwrap());
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_req_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value captured by `delta_time` is never read
[INFO] [stdout]    --> src/lib.rs:281:17
[INFO] [stdout]     |
[INFO] [stdout] 281 |                 delta_time = (current_frametime - last_frametime) / 1000.0;
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: did you mean to capture by reference instead?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `elapsed`
[INFO] [stdout]    --> src/lib.rs:278:73
[INFO] [stdout]     |
[INFO] [stdout] 278 |             *main_loop.borrow_mut() = Some(Closure::wrap(Box::new(move |elapsed: f64| {
[INFO] [stdout]     |                                                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_elapsed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:191:18
[INFO] [stdout]     |
[INFO] [stdout] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stdout]     |                  ----^^^^^^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:191:35
[INFO] [stdout]     |
[INFO] [stdout] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stdout]     |                                   ----^^^^^^^^^^^^
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:262:18
[INFO] [stdout]     |
[INFO] [stdout] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stdout]     |                  ----^^^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:262:32
[INFO] [stdout]     |
[INFO] [stdout] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stdout]     |                                ----^^^^^^^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:263:17
[INFO] [stdout]     |
[INFO] [stdout] 263 |             let mut freeze_state = 0; // 0 none, 1 freeze x, 2 freeze y 
[INFO] [stdout]     |                 ----^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:553:22
[INFO] [stdout]     |
[INFO] [stdout] 553 |     pub fn terminate(mut self) {
[INFO] [stdout]     |                      ----^^^^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/lib.rs:575:23
[INFO] [stdout]     |
[INFO] [stdout] 575 |         Err(error) => unsafe { console::error_1(&JsValue::from_str(&error.to_string())) },
[INFO] [stdout]     |                       ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error`
[INFO] [stdout]    --> src/lib.rs:716:22
[INFO] [stdout]     |
[INFO] [stdout] 716 |                 Some(error) => error!("{}", expr.pretty_error()),
[INFO] [stdout]     |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:722:9
[INFO] [stdout]     |
[INFO] [stdout] 722 |     let mut nodes = expr.serialize::<Variable, Function>();
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `custom_framerate` is never read
[INFO] [stdout]   --> src/lib.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct Application {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     custom_framerate: (bool, f64),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Right`, `Middle`, `Back`, and `Forward` are never constructed
[INFO] [stdout]   --> src/input.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum MouseButton {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 22 |     Left    = 0,
[INFO] [stdout] 23 |     Right   = 1,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 24 |     Middle  = 2,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 25 |     Back    = 3,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 26 |     Forward = 4,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MouseButton` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `temp` is never read
[INFO] [stdout]   --> src/input.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct Handler {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 93 |     temp: EventHandler,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unhook` is never used
[INFO] [stdout]    --> src/input.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl Handler {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn unhook(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/input.rs:331:12
[INFO] [stdout]     |
[INFO] [stdout] 330 | impl Handler {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 331 |     pub fn pointer(&self) -> (f64, f64) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     pub fn pointer_delta(&self) -> (f64, f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn wheel(&self) -> (f64, f64, f64) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub fn wheel_delta(&self) -> (f64, f64, f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn key(&self, code: &str) -> State {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn vkey_active(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     pub fn vkey_inactive(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 387 |     pub fn vkey_pressed(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 390 |     pub fn vkey_held(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     pub fn vkey_released(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub fn button(&self, button: MouseButton) -> State {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn vbutton_active(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 425 |     pub fn vbutton_inactive(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     pub fn vbutton_pressed(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub fn vbutton_held(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 434 |     pub fn vbutton_released(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `target`, `inner`, and `listeners` are never read
[INFO] [stdout]    --> src/input.rs:444:5
[INFO] [stdout]     |
[INFO] [stdout] 443 | struct EventHandler {
[INFO] [stdout]     |        ------------ fields in this struct
[INFO] [stdout] 444 |     target: Option<EventTarget>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 445 |     inner: Arc<Mutex<(Option<Event>, bool)>>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 446 |     listeners: Vec<Option<EventListener>>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EventHandler` has a derived impl for the trait `Default`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/input.rs:449:8
[INFO] [stdout]     |
[INFO] [stdout] 448 | impl EventHandler {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 449 |     fn new(target: &EventTarget) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     fn hook(&mut self, event_type: &str, forget: bool) -> Option<usize> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     fn unhook(&mut self, index: usize) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     fn unhook_all(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 490 |     fn handle(&mut self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     fn get<EventType: AsRef<Event> + JsCast>(&self) -> (Option<EventType>, bool) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 503 |     fn get_target(&self) -> Option<EventTarget> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unbind` is never used
[INFO] [stdout]    --> src/shader.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 26  | impl Shader {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn unbind(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unbind` is never used
[INFO] [stdout]    --> src/shader.rs:223:12
[INFO] [stdout]     |
[INFO] [stdout] 203 | impl VertexArray {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn unbind(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unbind` is never used
[INFO] [stdout]    --> src/shader.rs:310:12
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl UniformBufferObject {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn unbind(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MappedBuffer` is never constructed
[INFO] [stdout]    --> src/shader.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | struct MappedBuffer {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Canvas` is never constructed
[INFO] [stdout]  --> src/canvas.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct Canvas {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `set_size`, `render`, and `render_post` are never used
[INFO] [stdout]   --> src/canvas.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Canvas {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn set_size(&self, size: (Option<i32>, Option<i32>)) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn render(renderer: Option<Box<dyn FnMut(&Self)>>) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn render_post() {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `real`, `imaginary`, `zero`, `infinity`, and `nan` are never used
[INFO] [stdout]   --> src/math/complex.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 9  | impl Complex {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn real(value: f64) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn imaginary(value: f64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn zero() -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn infinity() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn nan() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/math/complex.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Complex {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn is_zero(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn is_nan(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn is_infinite(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn is_finite(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn is_normal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn is_real(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn is_imaginary(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/math/complex.rs:60:12
[INFO] [stdout]     |
[INFO] [stdout] 59  | impl Complex {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 60  |     pub fn abs(&self) -> f64 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 63  |     pub fn arg(&self) -> f64 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 67  |     pub fn fract(self) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73  |     pub fn sign(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80  |     pub fn dot(self, other: Self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn conjugate(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93  |     pub fn sqrt(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn exp(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn exp_m1(self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn log(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn pow(self, exponent: Self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/math/complex.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 150 | impl Complex {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 151 |     pub fn sin(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn asin(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn cos(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn acos(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn tan(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn atan(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn cot(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn acot(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn sec(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn asec(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn csc(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn acsc(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_string_phasor`, `to_string_polar`, and `to_string_exponential` are never used
[INFO] [stdout]    --> src/math/complex.rs:400:12
[INFO] [stdout]     |
[INFO] [stdout] 399 | impl Complex {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 400 |     pub fn to_string_phasor(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 405 |     pub fn to_string_polar(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn to_string_exponential(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cos_m1` and `log_hypot` are never used
[INFO] [stdout]  --> src/math/extended.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Extended {
[INFO] [stdout]   |           -------- methods in this trait
[INFO] [stdout] 2 |     fn cos_m1(self) -> Self;
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 3 |     fn log_hypot(self, other: Self) -> Self;
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sanitize_input` is never used
[INFO] [stdout]  --> src/math/interpreter.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn sanitize_input(input: &str) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `None`, `Exit`, `Evaluate`, `SetVariable`, and `RemoveVariable` are never constructed
[INFO] [stdout]   --> src/math/interpreter.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum ReplCommand {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 23 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 24 |     Exit,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 25 |     Evaluate,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 26 |     SetVariable(String, Complex),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 27 |     RemoveVariable(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ReplCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Intepreter` is never constructed
[INFO] [stdout]   --> src/math/interpreter.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct Intepreter {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/math/interpreter.rs:34:12
[INFO] [stdout]     |
[INFO] [stdout] 33  | impl Intepreter {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 34  |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42  |     pub fn repl_handler<F: Fn(Expression) -> Vec<ReplCommand>>(&mut self, handler: F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn repl(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn set_variable(&mut self, name: &str, value: Complex) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95  |     pub fn evaluate(&self, expr: &Expression) -> Complex {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn evaluate_node_left(&self, node: &Node) -> Complex {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn evaluate_node_right(&self, node: &Node) -> Complex {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn evaluate_node(&self, node: &Node) -> Complex {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]    --> src/math/parser.rs:479:12
[INFO] [stdout]     |
[INFO] [stdout] 451 | impl Node {
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 479 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]    --> src/math/parser.rs:568:12
[INFO] [stdout]     |
[INFO] [stdout] 534 | impl Expression {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 568 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `syntax`, `keyword`, and `value` are never read
[INFO] [stdout]   --> src/math/serializer.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct NodeData {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub syntax: u16,                    // offset 6, size 2
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 33 |     // Pack keyword identifier into hi
[INFO] [stdout] 34 |     pub keyword: u16,                   // offset 4, size 2
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 35 |
[INFO] [stdout] 36 |     pub value: (f32, f32),              // offset 8, size 8
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NodeData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `body` is never read
[INFO] [stdout]   --> src/javascript.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Javascript {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     body:       Option<HtmlBodyElement>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Javascript` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset`, `get_canvas_bitmap`, and `get_canvas_webgl` are never used
[INFO] [stdout]    --> src/javascript.rs:29:12
[INFO] [stdout]     |
[INFO] [stdout] 28  | impl Javascript {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 29  |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn get_canvas_bitmap(&mut self, query: &str) -> Option<(HtmlCanvasElement, ImageBitmapRenderingContext)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn get_canvas_webgl(&mut self, query: &str) -> Option<(HtmlCanvasElement, WebGlRenderingContext)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `body` is never used
[INFO] [stdout]    --> src/javascript.rs:175:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl Javascript {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn body(&mut self) -> Option<HtmlBodyElement> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/lib.rs:83:13
[INFO] [stdout]    |
[INFO] [stdout] 83 |             w_canvas.style().set_property("width", "400");
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 83 |             let _ = w_canvas.style().set_property("width", "400");
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/lib.rs:84:13
[INFO] [stdout]    |
[INFO] [stdout] 84 |             w_canvas.style().set_property("height", "400");
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 84 |             let _ = w_canvas.style().set_property("height", "400");
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static is discouraged
[INFO] [stdout]    --> src/lib.rs:154:32
[INFO] [stdout]     |
[INFO] [stdout] 154 |             let ubo = unsafe { global_ubo.as_ref().unwrap().clone() };
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Promise` that must be used
[INFO] [stdout]    --> src/lib.rs:227:29
[INFO] [stdout]     |
[INFO] [stdout] 227 | ...                   media.then(&temp_callback).catch(&temp_error);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 227 |                             let _ = media.then(&temp_callback).catch(&temp_error);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static is discouraged
[INFO] [stdout]    --> src/lib.rs:466:55
[INFO] [stdout]     |
[INFO] [stdout] 466 |                     w_shader.uniform1i("nodes_count", global_nodes_count.as_ref().unwrap().get() as i32);
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `global_ubo` should have an upper case name
[INFO] [stdout]    --> src/lib.rs:702:12
[INFO] [stdout]     |
[INFO] [stdout] 702 | static mut global_ubo: Option<std::sync::Arc<shader::UniformBufferObject>> = None;
[INFO] [stdout]     |            ^^^^^^^^^^ help: convert the identifier to upper case: `GLOBAL_UBO`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `global_nodes_count` should have an upper case name
[INFO] [stdout]    --> src/lib.rs:703:12
[INFO] [stdout]     |
[INFO] [stdout] 703 | static mut global_nodes_count: Option<std::sync::Arc<std::cell::Cell<usize>>> = None;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `GLOBAL_NODES_COUNT`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static is discouraged
[INFO] [stdout]    --> src/lib.rs:726:9
[INFO] [stdout]     |
[INFO] [stdout] 726 |         global_ubo.as_ref().unwrap().set_data(&nodes);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static is discouraged
[INFO] [stdout]    --> src/lib.rs:733:9
[INFO] [stdout]     |
[INFO] [stdout] 733 |         global_nodes_count.as_ref().unwrap().set(nodes.len());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling wasm-bindgen-test v0.3.18
[INFO] [stderr]    Compiling imaginary-playpen v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `serializer::*`
[INFO] [stdout]   --> src/math/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use serializer::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `macro_derive::*`
[INFO] [stdout]  --> src/bin.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use macro_derive::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `x` should have an upper camel case name
[INFO] [stdout]   --> src/bin.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     x,
[INFO] [stdout]    |     ^ help: convert the identifier to upper camel case (notice the capitalization): `X`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `sin` should have an upper camel case name
[INFO] [stdout]   --> src/bin.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     sin,
[INFO] [stdout]    |     ^^^ help: convert the identifier to upper camel case (notice the capitalization): `Sin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `cos` should have an upper camel case name
[INFO] [stdout]   --> src/bin.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     cos,
[INFO] [stdout]    |     ^^^ help: convert the identifier to upper camel case (notice the capitalization): `Cos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `log_info`
[INFO] [stdout]   --> src/utils.rs:75:14
[INFO] [stdout]    |
[INFO] [stdout] 75 | macro_rules! log_info {
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_macros)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, and `trace`
[INFO] [stdout]  --> src/input.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{ trace, debug, info, warn, error };
[INFO] [stdout]   |            ^^^^^  ^^^^^              ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wasm_bindgen::prelude::*`
[INFO] [stdout]  --> src/input.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use wasm_bindgen::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `console`
[INFO] [stdout]   --> src/input.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     console,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `complex::*`
[INFO] [stdout]  --> src/math/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use complex::*;
[INFO] [stdout]   |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `interpreter::*`
[INFO] [stdout]  --> src/math/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use interpreter::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `info`, and `trace`
[INFO] [stdout]  --> src/javascript.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{ trace, debug, info, warn, error };
[INFO] [stdout]   |            ^^^^^  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Element`, `HtmlElement`, and `Node`
[INFO] [stdout]  --> src/javascript.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 |     Window, Document, Element, HtmlElement, Node, 
[INFO] [stdout]   |                       ^^^^^^^  ^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `macro_derive::*`
[INFO] [stdout]   --> src/lib.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use macro_derive::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::debug`
[INFO] [stdout]   --> src/lib.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use log::debug;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::trace`
[INFO] [stdout]   --> src/lib.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use log::trace;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Document`, `Element`, `HtmlCanvasElement`, `HtmlDivElement`, `HtmlElement`, `HtmlParagraphElement`, `Navigator`, `Node`, and `Window`
[INFO] [stdout]   --> src/lib.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     Window, Document, Element, HtmlElement, Node, 
[INFO] [stdout]    |     ^^^^^^  ^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^  ^^^^
[INFO] [stdout] 28 |     Navigator,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     HtmlDivElement, HtmlParagraphElement, HtmlImageElement,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 33 |     HtmlCanvasElement, HtmlVideoElement,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:289:28
[INFO] [stdout]     |
[INFO] [stdout] 289 |                 let time = (js.time_now() / 1000.0);
[INFO] [stdout]     |                            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 289 -                 let time = (js.time_now() / 1000.0);
[INFO] [stdout] 289 +                 let time = js.time_now() / 1000.0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/math/interpreter.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             _ => Complex::zero(),
[INFO] [stdout]     |             - matches any value
[INFO] [stdout] ...
[INFO] [stdout] 154 |             Syntax::Variable(name) => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/math/interpreter.rs:160:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             _ => Complex::zero(),
[INFO] [stdout]     |             - matches any value
[INFO] [stdout] ...
[INFO] [stdout] 160 |             Syntax::Function(name) => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/math/interpreter.rs:160:30
[INFO] [stdout]     |
[INFO] [stdout] 160 |             Syntax::Function(name) => {
[INFO] [stdout]     |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input1`
[INFO] [stdout]   --> src/bin.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 |     let input1 = "(.395         +56__2_i ) + 7 ^ (3 * 5 + 5)";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input2`
[INFO] [stdout]   --> src/bin.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let input2 = "++++++(.2+++6)";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input3`
[INFO] [stdout]   --> src/bin.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 |     let input3 = "x y + 7";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input5`
[INFO] [stdout]   --> src/bin.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let input5 = "---5(2+8) + 5awd - x(8)";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input5`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input6`
[INFO] [stdout]   --> src/bin.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let input6 = "16^(1/2)";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input6`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input7`
[INFO] [stdout]   --> src/bin.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 64 |     let input7 = "cos(  1 + \n 5+7)* 23    9 2. ";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input7`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input8`
[INFO] [stdout]   --> src/bin.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |     let input8 = "2.|-.3| + |2|";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input9`
[INFO] [stdout]   --> src/bin.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let input9 = "(2)+|-3|(10)";
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input9`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input10`
[INFO] [stdout]   --> src/bin.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |     let input10 = "0+8)24"; // TODO: Returns after ')'
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input10`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input11`
[INFO] [stdout]   --> src/bin.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let input11 = "(10 + 6.2i) * 2";
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input11`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]   --> src/bin.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 |     intep.repl_handler(|expr| {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `x` is never constructed
[INFO] [stdout]   --> src/bin.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | enum Variable {
[INFO] [stdout]    |      -------- variant in this enum
[INFO] [stdout] 11 |     x,
[INFO] [stdout]    |     ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Variable` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `sin` and `cos` are never constructed
[INFO] [stdout]   --> src/bin.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | enum Function {
[INFO] [stdout]    |      -------- variants in this enum
[INFO] [stdout] 25 |     sin,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 26 |     cos,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Function` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `infinity` and `nan` are never used
[INFO] [stdout]   --> src/math/complex.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 9  | impl Complex {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn infinity() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn nan() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_nan`, `is_infinite`, `is_finite`, `is_normal`, and `is_imaginary` are never used
[INFO] [stdout]   --> src/math/complex.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Complex {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn is_nan(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn is_infinite(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn is_finite(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn is_normal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn is_imaginary(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/math/complex.rs:67:12
[INFO] [stdout]     |
[INFO] [stdout] 59  | impl Complex {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 67  |     pub fn fract(self) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73  |     pub fn sign(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80  |     pub fn dot(self, other: Self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn conjugate(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93  |     pub fn sqrt(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn exp(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn exp_m1(self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/math/complex.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 150 | impl Complex {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn asin(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn acos(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn atan(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn cot(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn acot(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn sec(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn asec(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn csc(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn acsc(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `cos_m1` is never used
[INFO] [stdout]  --> src/math/extended.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Extended {
[INFO] [stdout]   |           -------- method in this trait
[INFO] [stdout] 2 |     fn cos_m1(self) -> Self;
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `None`, `Exit`, `SetVariable`, and `RemoveVariable` are never constructed
[INFO] [stdout]   --> src/math/interpreter.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum ReplCommand {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 23 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 24 |     Exit,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 25 |     Evaluate,
[INFO] [stdout] 26 |     SetVariable(String, Complex),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 27 |     RemoveVariable(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ReplCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `repl` is never used
[INFO] [stdout]   --> src/math/interpreter.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Intepreter {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn repl(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]    --> src/math/parser.rs:479:12
[INFO] [stdout]     |
[INFO] [stdout] 451 | impl Node {
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 479 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `syntax`, `keyword`, and `value` are never read
[INFO] [stdout]   --> src/math/serializer.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct NodeData {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub syntax: u16,                    // offset 6, size 2
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 33 |     // Pack keyword identifier into hi
[INFO] [stdout] 34 |     pub keyword: u16,                   // offset 4, size 2
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 35 |
[INFO] [stdout] 36 |     pub value: (f32, f32),              // offset 8, size 8
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NodeData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `serialize` is never used
[INFO] [stdout]    --> src/math/serializer.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl Expression {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 129 |     pub fn serialize<V: KeywordType, F: KeywordType>(&self) -> Vec<NodeData> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]   --> src/canvas.rs:14:28
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn set_size(&self, size: (Option<i32>, Option<i32>)) {
[INFO] [stdout]    |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `renderer`
[INFO] [stdout]   --> src/canvas.rs:22:19
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn render(renderer: Option<Box<dyn FnMut(&Self)>>) {
[INFO] [stdout]    |                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_renderer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/math/interpreter.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             _ => Complex::zero(),
[INFO] [stdout]     |             - matches any value
[INFO] [stdout] ...
[INFO] [stdout] 154 |             Syntax::Variable(name) => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/math/interpreter.rs:160:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             _ => Complex::zero(),
[INFO] [stdout]     |             - matches any value
[INFO] [stdout] ...
[INFO] [stdout] 160 |             Syntax::Function(name) => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/math/interpreter.rs:160:30
[INFO] [stdout]     |
[INFO] [stdout] 160 |             Syntax::Function(name) => {
[INFO] [stdout]     |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/lib.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let mut js = Javascript::default();
[INFO] [stdout]    |             ----^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `print_webgl_error`
[INFO] [stdout]    --> src/lib.rs:130:17
[INFO] [stdout]     |
[INFO] [stdout] 130 |             let print_webgl_error = |context: &WebGl2| {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_print_webgl_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `video_width`
[INFO] [stdout]    --> src/lib.rs:191:22
[INFO] [stdout]     |
[INFO] [stdout] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stdout]     |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `video_height`
[INFO] [stdout]    --> src/lib.rs:191:39
[INFO] [stdout]     |
[INFO] [stdout] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stdout]     |                                       ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `freeze_x`
[INFO] [stdout]    --> src/lib.rs:262:22
[INFO] [stdout]     |
[INFO] [stdout] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stdout]     |                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_freeze_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `freeze_y`
[INFO] [stdout]    --> src/lib.rs:262:36
[INFO] [stdout]     |
[INFO] [stdout] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stdout]     |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_freeze_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `freeze_state`
[INFO] [stdout]    --> src/lib.rs:263:21
[INFO] [stdout]     |
[INFO] [stdout] 263 |             let mut freeze_state = 0; // 0 none, 1 freeze x, 2 freeze y 
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_freeze_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error`
[INFO] [stdout]    --> src/lib.rs:223:75
[INFO] [stdout]     |
[INFO] [stdout] 223 | ...                   let temp_error = Closure::wrap(Box::new(move |error: JsValue| {
[INFO] [stdout]     |                                                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req_token`
[INFO] [stdout]    --> src/lib.rs:279:21
[INFO] [stdout]     |
[INFO] [stdout] 279 |                 let req_token = req_anim_frame(self_loop.borrow().as_ref().unwrap());
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_req_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value captured by `delta_time` is never read
[INFO] [stdout]    --> src/lib.rs:281:17
[INFO] [stdout]     |
[INFO] [stdout] 281 |                 delta_time = (current_frametime - last_frametime) / 1000.0;
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: did you mean to capture by reference instead?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `elapsed`
[INFO] [stdout]    --> src/lib.rs:278:73
[INFO] [stdout]     |
[INFO] [stdout] 278 |             *main_loop.borrow_mut() = Some(Closure::wrap(Box::new(move |elapsed: f64| {
[INFO] [stdout]     |                                                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_elapsed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:191:18
[INFO] [stdout]     |
[INFO] [stdout] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stdout]     |                  ----^^^^^^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:191:35
[INFO] [stdout]     |
[INFO] [stdout] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stdout]     |                                   ----^^^^^^^^^^^^
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:262:18
[INFO] [stdout]     |
[INFO] [stdout] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stdout]     |                  ----^^^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:262:32
[INFO] [stdout]     |
[INFO] [stdout] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stdout]     |                                ----^^^^^^^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:263:17
[INFO] [stdout]     |
[INFO] [stdout] 263 |             let mut freeze_state = 0; // 0 none, 1 freeze x, 2 freeze y 
[INFO] [stdout]     |                 ----^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:553:22
[INFO] [stdout]     |
[INFO] [stdout] 553 |     pub fn terminate(mut self) {
[INFO] [stdout]     |                      ----^^^^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/lib.rs:575:23
[INFO] [stdout]     |
[INFO] [stdout] 575 |         Err(error) => unsafe { console::error_1(&JsValue::from_str(&error.to_string())) },
[INFO] [stdout]     |                       ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error`
[INFO] [stdout]    --> src/lib.rs:716:22
[INFO] [stdout]     |
[INFO] [stdout] 716 |                 Some(error) => error!("{}", expr.pretty_error()),
[INFO] [stdout]     |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:722:9
[INFO] [stdout]     |
[INFO] [stdout] 722 |     let mut nodes = expr.serialize::<Variable, Function>();
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `custom_framerate` is never read
[INFO] [stdout]   --> src/lib.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct Application {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     custom_framerate: (bool, f64),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Right`, `Middle`, `Back`, and `Forward` are never constructed
[INFO] [stdout]   --> src/input.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum MouseButton {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 22 |     Left    = 0,
[INFO] [stdout] 23 |     Right   = 1,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 24 |     Middle  = 2,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 25 |     Back    = 3,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 26 |     Forward = 4,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MouseButton` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `temp` is never read
[INFO] [stdout]   --> src/input.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct Handler {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 93 |     temp: EventHandler,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unhook` is never used
[INFO] [stdout]    --> src/input.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl Handler {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn unhook(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/input.rs:331:12
[INFO] [stdout]     |
[INFO] [stdout] 330 | impl Handler {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 331 |     pub fn pointer(&self) -> (f64, f64) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     pub fn pointer_delta(&self) -> (f64, f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn wheel(&self) -> (f64, f64, f64) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub fn wheel_delta(&self) -> (f64, f64, f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn key(&self, code: &str) -> State {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn vkey_active(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     pub fn vkey_inactive(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 387 |     pub fn vkey_pressed(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 390 |     pub fn vkey_held(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     pub fn vkey_released(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub fn button(&self, button: MouseButton) -> State {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn vbutton_active(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 425 |     pub fn vbutton_inactive(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     pub fn vbutton_pressed(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub fn vbutton_held(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 434 |     pub fn vbutton_released(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `target`, `inner`, and `listeners` are never read
[INFO] [stdout]    --> src/input.rs:444:5
[INFO] [stdout]     |
[INFO] [stdout] 443 | struct EventHandler {
[INFO] [stdout]     |        ------------ fields in this struct
[INFO] [stdout] 444 |     target: Option<EventTarget>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 445 |     inner: Arc<Mutex<(Option<Event>, bool)>>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 446 |     listeners: Vec<Option<EventListener>>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EventHandler` has a derived impl for the trait `Default`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/input.rs:449:8
[INFO] [stdout]     |
[INFO] [stdout] 448 | impl EventHandler {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 449 |     fn new(target: &EventTarget) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     fn hook(&mut self, event_type: &str, forget: bool) -> Option<usize> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     fn unhook(&mut self, index: usize) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     fn unhook_all(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 490 |     fn handle(&mut self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     fn get<EventType: AsRef<Event> + JsCast>(&self) -> (Option<EventType>, bool) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 503 |     fn get_target(&self) -> Option<EventTarget> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unbind` is never used
[INFO] [stdout]    --> src/shader.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 26  | impl Shader {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn unbind(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unbind` is never used
[INFO] [stdout]    --> src/shader.rs:223:12
[INFO] [stdout]     |
[INFO] [stdout] 203 | impl VertexArray {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn unbind(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unbind` is never used
[INFO] [stdout]    --> src/shader.rs:310:12
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl UniformBufferObject {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn unbind(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MappedBuffer` is never constructed
[INFO] [stdout]    --> src/shader.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | struct MappedBuffer {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Canvas` is never constructed
[INFO] [stdout]  --> src/canvas.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct Canvas {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `set_size`, `render`, and `render_post` are never used
[INFO] [stdout]   --> src/canvas.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Canvas {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn set_size(&self, size: (Option<i32>, Option<i32>)) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn render(renderer: Option<Box<dyn FnMut(&Self)>>) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn render_post() {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `real`, `imaginary`, `zero`, `infinity`, and `nan` are never used
[INFO] [stdout]   --> src/math/complex.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 9  | impl Complex {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn real(value: f64) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn imaginary(value: f64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn zero() -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn infinity() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn nan() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/math/complex.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Complex {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] 35 |     pub fn is_zero(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn is_nan(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn is_infinite(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn is_finite(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn is_normal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn is_real(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn is_imaginary(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/math/complex.rs:60:12
[INFO] [stdout]     |
[INFO] [stdout] 59  | impl Complex {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 60  |     pub fn abs(&self) -> f64 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 63  |     pub fn arg(&self) -> f64 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 67  |     pub fn fract(self) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73  |     pub fn sign(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80  |     pub fn dot(self, other: Self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn conjugate(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93  |     pub fn sqrt(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn exp(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn exp_m1(self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn log(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn pow(self, exponent: Self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/math/complex.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 150 | impl Complex {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 151 |     pub fn sin(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn asin(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn cos(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn acos(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn tan(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn atan(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn cot(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn acot(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn sec(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn asec(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn csc(self) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn acsc(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_string_phasor`, `to_string_polar`, and `to_string_exponential` are never used
[INFO] [stdout]    --> src/math/complex.rs:400:12
[INFO] [stdout]     |
[INFO] [stdout] 399 | impl Complex {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 400 |     pub fn to_string_phasor(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 405 |     pub fn to_string_polar(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn to_string_exponential(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cos_m1` and `log_hypot` are never used
[INFO] [stdout]  --> src/math/extended.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Extended {
[INFO] [stdout]   |           -------- methods in this trait
[INFO] [stdout] 2 |     fn cos_m1(self) -> Self;
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 3 |     fn log_hypot(self, other: Self) -> Self;
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sanitize_input` is never used
[INFO] [stdout]  --> src/math/interpreter.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn sanitize_input(input: &str) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `None`, `Exit`, `Evaluate`, `SetVariable`, and `RemoveVariable` are never constructed
[INFO] [stdout]   --> src/math/interpreter.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum ReplCommand {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 23 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 24 |     Exit,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 25 |     Evaluate,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 26 |     SetVariable(String, Complex),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 27 |     RemoveVariable(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ReplCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Intepreter` is never constructed
[INFO] [stdout]   --> src/math/interpreter.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct Intepreter {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/math/interpreter.rs:34:12
[INFO] [stdout]     |
[INFO] [stdout] 33  | impl Intepreter {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 34  |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42  |     pub fn repl_handler<F: Fn(Expression) -> Vec<ReplCommand>>(&mut self, handler: F) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn repl(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn set_variable(&mut self, name: &str, value: Complex) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95  |     pub fn evaluate(&self, expr: &Expression) -> Complex {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn evaluate_node_left(&self, node: &Node) -> Complex {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn evaluate_node_right(&self, node: &Node) -> Complex {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn evaluate_node(&self, node: &Node) -> Complex {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]    --> src/math/parser.rs:479:12
[INFO] [stdout]     |
[INFO] [stdout] 451 | impl Node {
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 479 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]    --> src/math/parser.rs:568:12
[INFO] [stdout]     |
[INFO] [stdout] 534 | impl Expression {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 568 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `syntax`, `keyword`, and `value` are never read
[INFO] [stdout]   --> src/math/serializer.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct NodeData {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub syntax: u16,                    // offset 6, size 2
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 33 |     // Pack keyword identifier into hi
[INFO] [stdout] 34 |     pub keyword: u16,                   // offset 4, size 2
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 35 |
[INFO] [stdout] 36 |     pub value: (f32, f32),              // offset 8, size 8
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NodeData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `body` is never read
[INFO] [stdout]   --> src/javascript.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Javascript {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     body:       Option<HtmlBodyElement>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Javascript` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset`, `get_canvas_bitmap`, and `get_canvas_webgl` are never used
[INFO] [stdout]    --> src/javascript.rs:29:12
[INFO] [stdout]     |
[INFO] [stdout] 28  | impl Javascript {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 29  |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn get_canvas_bitmap(&mut self, query: &str) -> Option<(HtmlCanvasElement, ImageBitmapRenderingContext)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn get_canvas_webgl(&mut self, query: &str) -> Option<(HtmlCanvasElement, WebGlRenderingContext)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `body` is never used
[INFO] [stdout]    --> src/javascript.rs:175:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl Javascript {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn body(&mut self) -> Option<HtmlBodyElement> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/lib.rs:83:13
[INFO] [stdout]    |
[INFO] [stdout] 83 |             w_canvas.style().set_property("width", "400");
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 83 |             let _ = w_canvas.style().set_property("width", "400");
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/lib.rs:84:13
[INFO] [stdout]    |
[INFO] [stdout] 84 |             w_canvas.style().set_property("height", "400");
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 84 |             let _ = w_canvas.style().set_property("height", "400");
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static is discouraged
[INFO] [stdout]    --> src/lib.rs:154:32
[INFO] [stdout]     |
[INFO] [stdout] 154 |             let ubo = unsafe { global_ubo.as_ref().unwrap().clone() };
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Promise` that must be used
[INFO] [stdout]    --> src/lib.rs:227:29
[INFO] [stdout]     |
[INFO] [stdout] 227 | ...                   media.then(&temp_callback).catch(&temp_error);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 227 |                             let _ = media.then(&temp_callback).catch(&temp_error);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static is discouraged
[INFO] [stdout]    --> src/lib.rs:466:55
[INFO] [stdout]     |
[INFO] [stdout] 466 |                     w_shader.uniform1i("nodes_count", global_nodes_count.as_ref().unwrap().get() as i32);
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `global_ubo` should have an upper case name
[INFO] [stdout]    --> src/lib.rs:702:12
[INFO] [stdout]     |
[INFO] [stdout] 702 | static mut global_ubo: Option<std::sync::Arc<shader::UniformBufferObject>> = None;
[INFO] [stdout]     |            ^^^^^^^^^^ help: convert the identifier to upper case: `GLOBAL_UBO`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `global_nodes_count` should have an upper case name
[INFO] [stdout]    --> src/lib.rs:703:12
[INFO] [stdout]     |
[INFO] [stdout] 703 | static mut global_nodes_count: Option<std::sync::Arc<std::cell::Cell<usize>>> = None;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `GLOBAL_NODES_COUNT`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static is discouraged
[INFO] [stdout]    --> src/lib.rs:726:9
[INFO] [stdout]     |
[INFO] [stdout] 726 |         global_ubo.as_ref().unwrap().set_data(&nodes);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static is discouraged
[INFO] [stdout]    --> src/lib.rs:733:9
[INFO] [stdout]     |
[INFO] [stdout] 733 |         global_nodes_count.as_ref().unwrap().set(nodes.len());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 2.24s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: console_log v0.2.0, wasm-bindgen v0.2.68
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 7`
[INFO] running `Command { std: "docker" "inspect" "5ff45d787d1646797228169d4811e92827e399633a026046135550c83e7984ca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5ff45d787d1646797228169d4811e92827e399633a026046135550c83e7984ca", kill_on_drop: false }`
[INFO] [stdout] 5ff45d787d1646797228169d4811e92827e399633a026046135550c83e7984ca
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+1.85.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] df657e1a60ff30b1b177e448d9d6e48248c4b03705aad403b7f4414c75584a83
[INFO] running `Command { std: "docker" "start" "-a" "df657e1a60ff30b1b177e448d9d6e48248c4b03705aad403b7f4414c75584a83", kill_on_drop: false }`
[INFO] [stderr] warning: Found `debug_assertions` in `target.'cfg(...)'.dependencies`. This value is not supported for selecting dependencies and will not work as expected. To learn more visit https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#platform-specific-dependencies
[INFO] [stderr] warning: unused macro definition: `log_info`
[INFO] [stderr]   --> src/utils.rs:75:14
[INFO] [stderr]    |
[INFO] [stderr] 75 | macro_rules! log_info {
[INFO] [stderr]    |              ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_macros)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `debug`, `error`, and `trace`
[INFO] [stderr]  --> src/input.rs:2:12
[INFO] [stderr]   |
[INFO] [stderr] 2 | use log::{ trace, debug, info, warn, error };
[INFO] [stderr]   |            ^^^^^  ^^^^^              ^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `wasm_bindgen::prelude::*`
[INFO] [stderr]  --> src/input.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 | use wasm_bindgen::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `console`
[INFO] [stderr]   --> src/input.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 13 |     console,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `complex::*`
[INFO] [stderr]  --> src/math/mod.rs:7:9
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub use complex::*;
[INFO] [stderr]   |         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `interpreter::*`
[INFO] [stderr]  --> src/math/mod.rs:9:9
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub use interpreter::*;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `debug`, `info`, and `trace`
[INFO] [stderr]  --> src/javascript.rs:2:12
[INFO] [stderr]   |
[INFO] [stderr] 2 | use log::{ trace, debug, info, warn, error };
[INFO] [stderr]   |            ^^^^^  ^^^^^  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Element`, `HtmlElement`, and `Node`
[INFO] [stderr]  --> src/javascript.rs:6:23
[INFO] [stderr]   |
[INFO] [stderr] 6 |     Window, Document, Element, HtmlElement, Node, 
[INFO] [stderr]   |                       ^^^^^^^  ^^^^^^^^^^^  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `macro_derive::*`
[INFO] [stderr]   --> src/lib.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | use macro_derive::*;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `log::debug`
[INFO] [stderr]   --> src/lib.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 19 | use log::debug;
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `log::trace`
[INFO] [stderr]   --> src/lib.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use log::trace;
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Document`, `Element`, `HtmlCanvasElement`, `HtmlDivElement`, `HtmlElement`, `HtmlParagraphElement`, `Navigator`, `Node`, and `Window`
[INFO] [stderr]   --> src/lib.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr] 27 |     Window, Document, Element, HtmlElement, Node, 
[INFO] [stderr]    |     ^^^^^^  ^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^  ^^^^
[INFO] [stderr] 28 |     Navigator,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 32 |     HtmlDivElement, HtmlParagraphElement, HtmlImageElement,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 33 |     HtmlCanvasElement, HtmlVideoElement,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]    --> src/lib.rs:289:28
[INFO] [stderr]     |
[INFO] [stderr] 289 |                 let time = (js.time_now() / 1000.0);
[INFO] [stderr]     |                            ^                      ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 289 -                 let time = (js.time_now() / 1000.0);
[INFO] [stderr] 289 +                 let time = js.time_now() / 1000.0;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `size`
[INFO] [stderr]   --> src/canvas.rs:14:28
[INFO] [stderr]    |
[INFO] [stderr] 14 |     pub fn set_size(&self, size: (Option<i32>, Option<i32>)) {
[INFO] [stderr]    |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `renderer`
[INFO] [stderr]   --> src/canvas.rs:22:19
[INFO] [stderr]    |
[INFO] [stderr] 22 |     pub fn render(renderer: Option<Box<dyn FnMut(&Self)>>) {
[INFO] [stderr]    |                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_renderer`
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/math/interpreter.rs:154:13
[INFO] [stderr]     |
[INFO] [stderr] 151 |             _ => Complex::zero(),
[INFO] [stderr]     |             - matches any value
[INFO] [stderr] ...
[INFO] [stderr] 154 |             Syntax::Variable(name) => {
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/math/interpreter.rs:160:13
[INFO] [stderr]     |
[INFO] [stderr] 151 |             _ => Complex::zero(),
[INFO] [stderr]     |             - matches any value
[INFO] [stderr] ...
[INFO] [stderr] 160 |             Syntax::Function(name) => {
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `name`
[INFO] [stderr]    --> src/math/interpreter.rs:160:30
[INFO] [stderr]     |
[INFO] [stderr] 160 |             Syntax::Function(name) => {
[INFO] [stderr]     |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/lib.rs:60:13
[INFO] [stderr]    |
[INFO] [stderr] 60 |         let mut js = Javascript::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: unused variable: `print_webgl_error`
[INFO] [stderr]    --> src/lib.rs:130:17
[INFO] [stderr]     |
[INFO] [stderr] 130 |             let print_webgl_error = |context: &WebGl2| {
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_print_webgl_error`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `video_width`
[INFO] [stderr]    --> src/lib.rs:191:22
[INFO] [stderr]     |
[INFO] [stderr] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stderr]     |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_width`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `video_height`
[INFO] [stderr]    --> src/lib.rs:191:39
[INFO] [stderr]     |
[INFO] [stderr] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stderr]     |                                       ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_height`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `freeze_x`
[INFO] [stderr]    --> src/lib.rs:262:22
[INFO] [stderr]     |
[INFO] [stderr] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stderr]     |                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_freeze_x`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `freeze_y`
[INFO] [stderr]    --> src/lib.rs:262:36
[INFO] [stderr]     |
[INFO] [stderr] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stderr]     |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_freeze_y`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `freeze_state`
[INFO] [stderr]    --> src/lib.rs:263:21
[INFO] [stderr]     |
[INFO] [stderr] 263 |             let mut freeze_state = 0; // 0 none, 1 freeze x, 2 freeze y 
[INFO] [stderr]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_freeze_state`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `error`
[INFO] [stderr]    --> src/lib.rs:223:75
[INFO] [stderr]     |
[INFO] [stderr] 223 | ...                   let temp_error = Closure::wrap(Box::new(move |error: JsValue| {
[INFO] [stderr]     |                                                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req_token`
[INFO] [stderr]    --> src/lib.rs:279:21
[INFO] [stderr]     |
[INFO] [stderr] 279 |                 let req_token = req_anim_frame(self_loop.borrow().as_ref().unwrap());
[INFO] [stderr]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_req_token`
[INFO] [stderr] 
[INFO] [stderr] warning: value captured by `delta_time` is never read
[INFO] [stderr]    --> src/lib.rs:281:17
[INFO] [stderr]     |
[INFO] [stderr] 281 |                 delta_time = (current_frametime - last_frametime) / 1000.0;
[INFO] [stderr]     |                 ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: did you mean to capture by reference instead?
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `elapsed`
[INFO] [stderr]    --> src/lib.rs:278:73
[INFO] [stderr]     |
[INFO] [stderr] 278 |             *main_loop.borrow_mut() = Some(Closure::wrap(Box::new(move |elapsed: f64| {
[INFO] [stderr]     |                                                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_elapsed`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/lib.rs:191:18
[INFO] [stderr]     |
[INFO] [stderr] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stderr]     |                  ----^^^^^^^^^^^
[INFO] [stderr]     |                  |
[INFO] [stderr]     |                  help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/lib.rs:191:35
[INFO] [stderr]     |
[INFO] [stderr] 191 |             let (mut video_width, mut video_height) = (0.0, 0.0);
[INFO] [stderr]     |                                   ----^^^^^^^^^^^^
[INFO] [stderr]     |                                   |
[INFO] [stderr]     |                                   help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/lib.rs:262:18
[INFO] [stderr]     |
[INFO] [stderr] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stderr]     |                  ----^^^^^^^^
[INFO] [stderr]     |                  |
[INFO] [stderr]     |                  help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/lib.rs:262:32
[INFO] [stderr]     |
[INFO] [stderr] 262 |             let (mut freeze_x, mut freeze_y) = (0.0, 0.0);
[INFO] [stderr]     |                                ----^^^^^^^^
[INFO] [stderr]     |                                |
[INFO] [stderr]     |                                help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/lib.rs:263:17
[INFO] [stderr]     |
[INFO] [stderr] 263 |             let mut freeze_state = 0; // 0 none, 1 freeze x, 2 freeze y 
[INFO] [stderr]     |                 ----^^^^^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/lib.rs:553:22
[INFO] [stderr]     |
[INFO] [stderr] 553 |     pub fn terminate(mut self) {
[INFO] [stderr]     |                      ----^^^^
[INFO] [stderr]     |                      |
[INFO] [stderr]     |                      help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/lib.rs:575:23
[INFO] [stderr]     |
[INFO] [stderr] 575 |         Err(error) => unsafe { console::error_1(&JsValue::from_str(&error.to_string())) },
[INFO] [stderr]     |                       ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `error`
[INFO] [stderr]    --> src/lib.rs:716:22
[INFO] [stderr]     |
[INFO] [stderr] 716 |                 Some(error) => error!("{}", expr.pretty_error()),
[INFO] [stderr]     |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/lib.rs:722:9
[INFO] [stderr]     |
[INFO] [stderr] 722 |     let mut nodes = expr.serialize::<Variable, Function>();
[INFO] [stderr]     |         ----^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: field `custom_framerate` is never read
[INFO] [stderr]   --> src/lib.rs:55:5
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub struct Application {
[INFO] [stderr]    |            ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 55 |     custom_framerate: (bool, f64),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Right`, `Middle`, `Back`, and `Forward` are never constructed
[INFO] [stderr]   --> src/input.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub enum MouseButton {
[INFO] [stderr]    |          ----------- variants in this enum
[INFO] [stderr] 22 |     Left    = 0,
[INFO] [stderr] 23 |     Right   = 1,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 24 |     Middle  = 2,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 25 |     Back    = 3,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 26 |     Forward = 4,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `MouseButton` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `temp` is never read
[INFO] [stderr]   --> src/input.rs:93:5
[INFO] [stderr]    |
[INFO] [stderr] 81 | pub struct Handler {
[INFO] [stderr]    |            ------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 93 |     temp: EventHandler,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `unhook` is never used
[INFO] [stderr]    --> src/input.rs:163:12
[INFO] [stderr]     |
[INFO] [stderr] 110 | impl Handler {
[INFO] [stderr]     | ------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 163 |     pub fn unhook(&mut self) {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/input.rs:331:12
[INFO] [stderr]     |
[INFO] [stderr] 330 | impl Handler {
[INFO] [stderr]     | ------------ methods in this implementation
[INFO] [stderr] 331 |     pub fn pointer(&self) -> (f64, f64) {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 344 |     pub fn pointer_delta(&self) -> (f64, f64) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 347 |     pub fn wheel(&self) -> (f64, f64, f64) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 350 |     pub fn wheel_delta(&self) -> (f64, f64, f64) {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 357 |     pub fn key(&self, code: &str) -> State {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 369 |     pub fn vkey_active(&self, code: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 384 |     pub fn vkey_inactive(&self, code: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 387 |     pub fn vkey_pressed(&self, code: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 390 |     pub fn vkey_held(&self, code: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 393 |     pub fn vkey_released(&self, code: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 398 |     pub fn button(&self, button: MouseButton) -> State {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 410 |     pub fn vbutton_active(&self, button: MouseButton) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 425 |     pub fn vbutton_inactive(&self, button: MouseButton) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 428 |     pub fn vbutton_pressed(&self, button: MouseButton) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 431 |     pub fn vbutton_held(&self, button: MouseButton) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 434 |     pub fn vbutton_released(&self, button: MouseButton) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `target`, `inner`, and `listeners` are never read
[INFO] [stderr]    --> src/input.rs:444:5
[INFO] [stderr]     |
[INFO] [stderr] 443 | struct EventHandler {
[INFO] [stderr]     |        ------------ fields in this struct
[INFO] [stderr] 444 |     target: Option<EventTarget>,
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr] 445 |     inner: Arc<Mutex<(Option<Event>, bool)>>,
[INFO] [stderr]     |     ^^^^^
[INFO] [stderr] 446 |     listeners: Vec<Option<EventListener>>,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `EventHandler` has a derived impl for the trait `Default`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/input.rs:449:8
[INFO] [stderr]     |
[INFO] [stderr] 448 | impl EventHandler {
[INFO] [stderr]     | ----------------- associated items in this implementation
[INFO] [stderr] 449 |     fn new(target: &EventTarget) -> Self {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 457 |     fn hook(&mut self, event_type: &str, forget: bool) -> Option<usize> {
[INFO] [stderr]     |        ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 480 |     fn unhook(&mut self, index: usize) {
[INFO] [stderr]     |        ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 486 |     fn unhook_all(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 490 |     fn handle(&mut self) {
[INFO] [stderr]     |        ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 493 |     fn get<EventType: AsRef<Event> + JsCast>(&self) -> (Option<EventType>, bool) {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 503 |     fn get_target(&self) -> Option<EventTarget> {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `unbind` is never used
[INFO] [stderr]    --> src/shader.rs:108:12
[INFO] [stderr]     |
[INFO] [stderr] 26  | impl Shader {
[INFO] [stderr]     | ----------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 108 |     pub fn unbind(&self) {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `unbind` is never used
[INFO] [stderr]    --> src/shader.rs:223:12
[INFO] [stderr]     |
[INFO] [stderr] 203 | impl VertexArray {
[INFO] [stderr]     | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 223 |     pub fn unbind(&self) {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `unbind` is never used
[INFO] [stderr]    --> src/shader.rs:310:12
[INFO] [stderr]     |
[INFO] [stderr] 290 | impl UniformBufferObject {
[INFO] [stderr]     | ------------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 310 |     pub fn unbind(&self) {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MappedBuffer` is never constructed
[INFO] [stderr]    --> src/shader.rs:339:8
[INFO] [stderr]     |
[INFO] [stderr] 339 | struct MappedBuffer {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Canvas` is never constructed
[INFO] [stderr]  --> src/canvas.rs:8:8
[INFO] [stderr]   |
[INFO] [stderr] 8 | struct Canvas {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `set_size`, `render`, and `render_post` are never used
[INFO] [stderr]   --> src/canvas.rs:14:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | impl Canvas {
[INFO] [stderr]    | ----------- associated items in this implementation
[INFO] [stderr] 14 |     pub fn set_size(&self, size: (Option<i32>, Option<i32>)) {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 22 |     pub fn render(renderer: Option<Box<dyn FnMut(&Self)>>) {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 25 |     pub fn render_post() {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `real`, `imaginary`, `zero`, `infinity`, and `nan` are never used
[INFO] [stderr]   --> src/math/complex.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 9  | impl Complex {
[INFO] [stderr]    | ------------ associated functions in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 16 |     pub fn real(value: f64) -> Self {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 19 |     pub fn imaginary(value: f64) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 22 |     pub fn zero() -> Self {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 25 |     pub fn infinity() -> Self {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 28 |     pub fn nan() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]   --> src/math/complex.rs:35:12
[INFO] [stderr]    |
[INFO] [stderr] 34 | impl Complex {
[INFO] [stderr]    | ------------ methods in this implementation
[INFO] [stderr] 35 |     pub fn is_zero(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 38 |     pub fn is_nan(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 41 |     pub fn is_infinite(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 44 |     pub fn is_finite(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 47 |     pub fn is_normal(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 50 |     pub fn is_real(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 53 |     pub fn is_imaginary(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/math/complex.rs:60:12
[INFO] [stderr]     |
[INFO] [stderr] 59  | impl Complex {
[INFO] [stderr]     | ------------ methods in this implementation
[INFO] [stderr] 60  |     pub fn abs(&self) -> f64 {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 63  |     pub fn arg(&self) -> f64 {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 67  |     pub fn fract(self) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 73  |     pub fn sign(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 80  |     pub fn dot(self, other: Self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 86  |     pub fn conjugate(self) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 93  |     pub fn sqrt(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 104 |     pub fn exp(self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 111 |     pub fn exp_m1(self) -> Self {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 117 |     pub fn log(self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 124 |     pub fn pow(self, exponent: Self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/math/complex.rs:151:12
[INFO] [stderr]     |
[INFO] [stderr] 150 | impl Complex {
[INFO] [stderr]     | ------------ methods in this implementation
[INFO] [stderr] 151 |     pub fn sin(self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 157 |     pub fn asin(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 173 |     pub fn cos(self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 179 |     pub fn acos(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 195 |     pub fn tan(self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 204 |     pub fn atan(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 226 |     pub fn cot(self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 235 |     pub fn acot(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 254 |     pub fn sec(self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 261 |     pub fn asec(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 280 |     pub fn csc(self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 287 |     pub fn acsc(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `to_string_phasor`, `to_string_polar`, and `to_string_exponential` are never used
[INFO] [stderr]    --> src/math/complex.rs:400:12
[INFO] [stderr]     |
[INFO] [stderr] 399 | impl Complex {
[INFO] [stderr]     | ------------ methods in this implementation
[INFO] [stderr] 400 |     pub fn to_string_phasor(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 405 |     pub fn to_string_polar(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 410 |     pub fn to_string_exponential(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `cos_m1` and `log_hypot` are never used
[INFO] [stderr]  --> src/math/extended.rs:2:8
[INFO] [stderr]   |
[INFO] [stderr] 1 | pub trait Extended {
[INFO] [stderr]   |           -------- methods in this trait
[INFO] [stderr] 2 |     fn cos_m1(self) -> Self;
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 3 |     fn log_hypot(self, other: Self) -> Self;
[INFO] [stderr]   |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `sanitize_input` is never used
[INFO] [stderr]  --> src/math/interpreter.rs:9:8
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub fn sanitize_input(input: &str) -> String {
[INFO] [stderr]   |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `None`, `Exit`, `Evaluate`, `SetVariable`, and `RemoveVariable` are never constructed
[INFO] [stderr]   --> src/math/interpreter.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub enum ReplCommand {
[INFO] [stderr]    |          ----------- variants in this enum
[INFO] [stderr] 23 |     None,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 24 |     Exit,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 25 |     Evaluate,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 26 |     SetVariable(String, Complex),
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 27 |     RemoveVariable(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ReplCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Intepreter` is never constructed
[INFO] [stderr]   --> src/math/interpreter.rs:29:12
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub struct Intepreter {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/math/interpreter.rs:34:12
[INFO] [stderr]     |
[INFO] [stderr] 33  | impl Intepreter {
[INFO] [stderr]     | --------------- associated items in this implementation
[INFO] [stderr] 34  |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 42  |     pub fn repl_handler<F: Fn(Expression) -> Vec<ReplCommand>>(&mut self, handler: F) {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 81  |     pub fn repl(&mut self) {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 86  |     pub fn set_variable(&mut self, name: &str, value: Complex) {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 95  |     pub fn evaluate(&self, expr: &Expression) -> Complex {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 101 |     fn evaluate_node_left(&self, node: &Node) -> Complex {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 107 |     fn evaluate_node_right(&self, node: &Node) -> Complex {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 113 |     fn evaluate_node(&self, node: &Node) -> Complex {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `empty` is never used
[INFO] [stderr]    --> src/math/parser.rs:479:12
[INFO] [stderr]     |
[INFO] [stderr] 451 | impl Node {
[INFO] [stderr]     | --------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 479 |     pub fn empty() -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_valid` is never used
[INFO] [stderr]    --> src/math/parser.rs:568:12
[INFO] [stderr]     |
[INFO] [stderr] 534 | impl Expression {
[INFO] [stderr]     | --------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 568 |     pub fn is_valid(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `syntax`, `keyword`, and `value` are never read
[INFO] [stderr]   --> src/math/serializer.rs:32:9
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub struct NodeData {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 32 |     pub syntax: u16,                    // offset 6, size 2
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr] 33 |     // Pack keyword identifier into hi
[INFO] [stderr] 34 |     pub keyword: u16,                   // offset 4, size 2
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr] 35 |
[INFO] [stderr] 36 |     pub value: (f32, f32),              // offset 8, size 8
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `NodeData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `body` is never read
[INFO] [stderr]   --> src/javascript.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub struct Javascript {
[INFO] [stderr]    |            ---------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 23 |     body:       Option<HtmlBodyElement>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Javascript` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `reset`, `get_canvas_bitmap`, and `get_canvas_webgl` are never used
[INFO] [stderr]    --> src/javascript.rs:29:12
[INFO] [stderr]     |
[INFO] [stderr] 28  | impl Javascript {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] 29  |     pub fn reset(&mut self) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 114 |     pub fn get_canvas_bitmap(&mut self, query: &str) -> Option<(HtmlCanvasElement, ImageBitmapRenderingContext)> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 117 |     pub fn get_canvas_webgl(&mut self, query: &str) -> Option<(HtmlCanvasElement, WebGlRenderingContext)> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `body` is never used
[INFO] [stderr]    --> src/javascript.rs:175:12
[INFO] [stderr]     |
[INFO] [stderr] 135 | impl Javascript {
[INFO] [stderr]     | --------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 175 |     pub fn body(&mut self) -> Option<HtmlBodyElement> {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/lib.rs:83:13
[INFO] [stderr]    |
[INFO] [stderr] 83 |             w_canvas.style().set_property("width", "400");
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 83 |             let _ = w_canvas.style().set_property("width", "400");
[INFO] [stderr]    |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/lib.rs:84:13
[INFO] [stderr]    |
[INFO] [stderr] 84 |             w_canvas.style().set_property("height", "400");
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 84 |             let _ = w_canvas.style().set_property("height", "400");
[INFO] [stderr]    |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static is discouraged
[INFO] [stderr]    --> src/lib.rs:154:32
[INFO] [stderr]     |
[INFO] [stderr] 154 |             let ubo = unsafe { global_ubo.as_ref().unwrap().clone() };
[INFO] [stderr]     |                                ^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: `#[warn(static_mut_refs)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Promise` that must be used
[INFO] [stderr]    --> src/lib.rs:227:29
[INFO] [stderr]     |
[INFO] [stderr] 227 | ...                   media.then(&temp_callback).catch(&temp_error);
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 227 |                             let _ = media.then(&temp_callback).catch(&temp_error);
[INFO] [stderr]     |                             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static is discouraged
[INFO] [stderr]    --> src/lib.rs:466:55
[INFO] [stderr]     |
[INFO] [stderr] 466 |                     w_shader.uniform1i("nodes_count", global_nodes_count.as_ref().unwrap().get() as i32);
[INFO] [stderr]     |                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: static variable `global_ubo` should have an upper case name
[INFO] [stderr]    --> src/lib.rs:702:12
[INFO] [stderr]     |
[INFO] [stderr] 702 | static mut global_ubo: Option<std::sync::Arc<shader::UniformBufferObject>> = None;
[INFO] [stderr]     |            ^^^^^^^^^^ help: convert the identifier to upper case: `GLOBAL_UBO`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: static variable `global_nodes_count` should have an upper case name
[INFO] [stderr]    --> src/lib.rs:703:12
[INFO] [stderr]     |
[INFO] [stderr] 703 | static mut global_nodes_count: Option<std::sync::Arc<std::cell::Cell<usize>>> = None;
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `GLOBAL_NODES_COUNT`
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static is discouraged
[INFO] [stderr]    --> src/lib.rs:726:9
[INFO] [stderr]     |
[INFO] [stderr] 726 |         global_ubo.as_ref().unwrap().set_data(&nodes);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static is discouraged
[INFO] [stderr]    --> src/lib.rs:733:9
[INFO] [stderr]     |
[INFO] [stderr] 733 |         global_nodes_count.as_ref().unwrap().set(nodes.len());
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: `imaginary-playpen` (lib) generated 76 warnings (run `cargo fix --lib -p imaginary-playpen` to apply 20 suggestions)
[INFO] [stderr] warning: unused import: `serializer::*`
[INFO] [stderr]   --> src/math/mod.rs:11:9
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub use serializer::*;
[INFO] [stderr]    |         ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `macro_derive::*`
[INFO] [stderr]  --> src/bin.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use macro_derive::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `x` should have an upper camel case name
[INFO] [stderr]   --> src/bin.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 |     x,
[INFO] [stderr]    |     ^ help: convert the identifier to upper camel case (notice the capitalization): `X`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variant `sin` should have an upper camel case name
[INFO] [stderr]   --> src/bin.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 |     sin,
[INFO] [stderr]    |     ^^^ help: convert the identifier to upper camel case (notice the capitalization): `Sin`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `cos` should have an upper camel case name
[INFO] [stderr]   --> src/bin.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 26 |     cos,
[INFO] [stderr]    |     ^^^ help: convert the identifier to upper camel case (notice the capitalization): `Cos`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `name`
[INFO] [stderr]    --> src/math/interpreter.rs:160:30
[INFO] [stderr]     |
[INFO] [stderr] 160 |             Syntax::Function(name) => {
[INFO] [stderr]     |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `input1`
[INFO] [stderr]   --> src/bin.rs:59:9
[INFO] [stderr]    |
[INFO] [stderr] 59 |     let input1 = "(.395         +56__2_i ) + 7 ^ (3 * 5 + 5)";
[INFO] [stderr]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input1`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `input2`
[INFO] [stderr]   --> src/bin.rs:60:9
[INFO] [stderr]    |
[INFO] [stderr] 60 |     let input2 = "++++++(.2+++6)";
[INFO] [stderr]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input2`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `input3`
[INFO] [stderr]   --> src/bin.rs:61:9
[INFO] [stderr]    |
[INFO] [stderr] 61 |     let input3 = "x y + 7";
[INFO] [stderr]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input3`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `input5`
[INFO] [stderr]   --> src/bin.rs:62:9
[INFO] [stderr]    |
[INFO] [stderr] 62 |     let input5 = "---5(2+8) + 5awd - x(8)";
[INFO] [stderr]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input5`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `input6`
[INFO] [stderr]   --> src/bin.rs:63:9
[INFO] [stderr]    |
[INFO] [stderr] 63 |     let input6 = "16^(1/2)";
[INFO] [stderr]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input6`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `input7`
[INFO] [stderr]   --> src/bin.rs:64:9
[INFO] [stderr]    |
[INFO] [stderr] 64 |     let input7 = "cos(  1 + \n 5+7)* 23    9 2. ";
[INFO] [stderr]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input7`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `input8`
[INFO] [stderr]   --> src/bin.rs:65:9
[INFO] [stderr]    |
[INFO] [stderr] 65 |     let input8 = "2.|-.3| + |2|";
[INFO] [stderr]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input8`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `input9`
[INFO] [stderr]   --> src/bin.rs:66:9
[INFO] [stderr]    |
[INFO] [stderr] 66 |     let input9 = "(2)+|-3|(10)";
[INFO] [stderr]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_input9`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `input10`
[INFO] [stderr]   --> src/bin.rs:67:9
[INFO] [stderr]    |
[INFO] [stderr] 67 |     let input10 = "0+8)24"; // TODO: Returns after ')'
[INFO] [stderr]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input10`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `input11`
[INFO] [stderr]   --> src/bin.rs:68:9
[INFO] [stderr]    |
[INFO] [stderr] 68 |     let input11 = "(10 + 6.2i) * 2";
[INFO] [stderr]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input11`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `expr`
[INFO] [stderr]   --> src/bin.rs:86:25
[INFO] [stderr]    |
[INFO] [stderr] 86 |     intep.repl_handler(|expr| {
[INFO] [stderr]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `x` is never constructed
[INFO] [stderr]   --> src/bin.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | enum Variable {
[INFO] [stderr]    |      -------- variant in this enum
[INFO] [stderr] 11 |     x,
[INFO] [stderr]    |     ^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Variable` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variants `sin` and `cos` are never constructed
[INFO] [stderr]   --> src/bin.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 24 | enum Function {
[INFO] [stderr]    |      -------- variants in this enum
[INFO] [stderr] 25 |     sin,
[INFO] [stderr]    |     ^^^
[INFO] [stderr] 26 |     cos,
[INFO] [stderr]    |     ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Function` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `infinity` and `nan` are never used
[INFO] [stderr]   --> src/math/complex.rs:25:12
[INFO] [stderr]    |
[INFO] [stderr] 9  | impl Complex {
[INFO] [stderr]    | ------------ associated functions in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 25 |     pub fn infinity() -> Self {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 28 |     pub fn nan() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_nan`, `is_infinite`, `is_finite`, `is_normal`, and `is_imaginary` are never used
[INFO] [stderr]   --> src/math/complex.rs:38:12
[INFO] [stderr]    |
[INFO] [stderr] 34 | impl Complex {
[INFO] [stderr]    | ------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 38 |     pub fn is_nan(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 41 |     pub fn is_infinite(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 44 |     pub fn is_finite(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 47 |     pub fn is_normal(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 53 |     pub fn is_imaginary(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/math/complex.rs:67:12
[INFO] [stderr]     |
[INFO] [stderr] 59  | impl Complex {
[INFO] [stderr]     | ------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 67  |     pub fn fract(self) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 73  |     pub fn sign(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 80  |     pub fn dot(self, other: Self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 86  |     pub fn conjugate(self) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 93  |     pub fn sqrt(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 104 |     pub fn exp(self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 111 |     pub fn exp_m1(self) -> Self {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/math/complex.rs:157:12
[INFO] [stderr]     |
[INFO] [stderr] 150 | impl Complex {
[INFO] [stderr]     | ------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 157 |     pub fn asin(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 179 |     pub fn acos(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 204 |     pub fn atan(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 226 |     pub fn cot(self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 235 |     pub fn acot(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 254 |     pub fn sec(self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 261 |     pub fn asec(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 280 |     pub fn csc(self) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 287 |     pub fn acsc(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `cos_m1` is never used
[INFO] [stderr]  --> src/math/extended.rs:2:8
[INFO] [stderr]   |
[INFO] [stderr] 1 | pub trait Extended {
[INFO] [stderr]   |           -------- method in this trait
[INFO] [stderr] 2 |     fn cos_m1(self) -> Self;
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `None`, `Exit`, `SetVariable`, and `RemoveVariable` are never constructed
[INFO] [stderr]   --> src/math/interpreter.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub enum ReplCommand {
[INFO] [stderr]    |          ----------- variants in this enum
[INFO] [stderr] 23 |     None,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 24 |     Exit,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 25 |     Evaluate,
[INFO] [stderr] 26 |     SetVariable(String, Complex),
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 27 |     RemoveVariable(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ReplCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `repl` is never used
[INFO] [stderr]   --> src/math/interpreter.rs:81:12
[INFO] [stderr]    |
[INFO] [stderr] 33 | impl Intepreter {
[INFO] [stderr]    | --------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 81 |     pub fn repl(&mut self) {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `serialize` is never used
[INFO] [stderr]    --> src/math/serializer.rs:129:12
[INFO] [stderr]     |
[INFO] [stderr] 128 | impl Expression {
[INFO] [stderr]     | --------------- method in this implementation
[INFO] [stderr] 129 |     pub fn serialize<V: KeywordType, F: KeywordType>(&self) -> Vec<NodeData> {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `imaginary-playpen` (bin "binary" test) generated 31 warnings (4 duplicates) (run `cargo fix --bin "binary" --tests` to apply 2 suggestions)
[INFO] [stderr] warning: `imaginary-playpen` (lib test) generated 76 warnings (76 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: console_log v0.2.0, wasm-bindgen v0.2.68
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 7`
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/imaginary_playpen-4ace365ee537d371)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin.rs (/opt/rustwide/target/debug/deps/binary-7f63da6143f4985e)
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stderr]    Doc-tests imaginary_playpen
[INFO] [stdout] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]    --> src/lib.rs:289:28
[INFO] [stderr]     |
[INFO] [stderr] 289 |                 let time = (js.time_now() / 1000.0);
[INFO] [stderr]     |                            ^                      ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 289 -                 let time = (js.time_now() / 1000.0);
[INFO] [stderr] 289 +                 let time = js.time_now() / 1000.0;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "df657e1a60ff30b1b177e448d9d6e48248c4b03705aad403b7f4414c75584a83", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "df657e1a60ff30b1b177e448d9d6e48248c4b03705aad403b7f4414c75584a83", kill_on_drop: false }`
[INFO] [stdout] df657e1a60ff30b1b177e448d9d6e48248c4b03705aad403b7f4414c75584a83
