[INFO] updating cached repository https://github.com/Valtis/RustNes
[INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune"`
[INFO] running `"git" "rev-parse" "HEAD"`
[INFO] [stdout] 836905877e12c5859cfc82be0fd03dc7beb0b771
[INFO] checking Valtis/RustNes against master#bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc for pr-70917
[INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FValtis%2FRustNes" "/workspace/builds/worker-2/source"`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/Valtis/RustNes on toolchain bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc
[INFO] running `"/workspace/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "read-manifest" "--manifest-path" "Cargo.toml"`
[INFO] started tweaking git repo https://github.com/Valtis/RustNes
[INFO] finished tweaking git repo https://github.com/Valtis/RustNes
[INFO] tweaked toml for git repo https://github.com/Valtis/RustNes written to /workspace/builds/worker-2/source/Cargo.toml
[INFO] crate git repo https://github.com/Valtis/RustNes already has a lockfile, it will not be regenerated
[INFO] running `"/workspace/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "fetch" "--locked" "--manifest-path" "Cargo.toml"`
[INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2/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" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "check" "--frozen" "--all" "--all-targets"`
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] [stdout] c9d678e945fca2b0c7a658ba5a9bedd6e3b795011b78d995348b9b59914eb634
[INFO] running `"docker" "start" "-a" "c9d678e945fca2b0c7a658ba5a9bedd6e3b795011b78d995348b9b59914eb634"`
[INFO] [stderr]     Checking libc v0.2.23
[INFO] [stderr]     Checking num-integer v0.1.34
[INFO] [stderr]     Checking num-iter v0.1.33
[INFO] [stderr]     Checking sdl2-sys v0.30.0
[INFO] [stderr]     Checking rand v0.3.15
[INFO] [stderr]     Checking time v0.1.37
[INFO] [stderr]     Checking num v0.1.37
[INFO] [stderr]     Checking sdl2 v0.30.0
[INFO] [stderr]     Checking nes v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead
[INFO] [stderr]   --> src/ppu/mod.rs:81:9
[INFO] [stderr]    |
[INFO] [stderr] 81 |         try!(write!(f, "{:?}", self.registers));
[INFO] [stderr]    |         ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AudioCallback`, `AudioDevice`
[INFO] [stderr]  --> src/console/mod.rs:6:25
[INFO] [stderr]   |
[INFO] [stderr] 6 | use self::sdl2::audio::{AudioCallback, AudioSpecDesired, AudioDevice, AudioQueue};
[INFO] [stderr]   |                         ^^^^^^^^^^^^^                    ^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::Duration`
[INFO] [stderr]  --> src/console/mod.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::time::Duration;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/console/mod.rs:94:51
[INFO] [stderr]    |
[INFO] [stderr] 94 |     let rom_mem = Rc::new(RefCell::new(rom as Box<Memory>));
[INFO] [stderr]    |                                                   ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/console/mod.rs:118:18
[INFO] [stderr]     |
[INFO] [stderr] 118 |         ) as Box<Memory>));
[INFO] [stderr]     |                  ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/pulse_channel.rs:63:50
[INFO] [stderr]    |
[INFO] [stderr] 63 |             let volume_envelope_divider_period = (0b0000_1111 & value);
[INFO] [stderr]    |                                                  ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/pulse_channel.rs:76:31
[INFO] [stderr]    |
[INFO] [stderr] 76 |             let shift_count = (0b0000_0111 & value);
[INFO] [stderr]    |                               ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/pulse_channel.rs:89:35
[INFO] [stderr]    |
[INFO] [stderr] 89 |             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stderr]    |                                   ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/triangle_channel.rs:33:34
[INFO] [stderr]    |
[INFO] [stderr] 33 |             let counter_reload = (0b0111_1111 & value);
[INFO] [stderr]    |                                  ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/triangle_channel.rs:43:35
[INFO] [stderr]    |
[INFO] [stderr] 43 |             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stderr]    |                                   ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/noise_channel.rs:38:41
[INFO] [stderr]    |
[INFO] [stderr] 38 |             let volume_divider_period = (0b0000_1111 & value);
[INFO] [stderr]    |                                         ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/noise_channel.rs:50:30
[INFO] [stderr]    |
[INFO] [stderr] 50 |             let rate_index = (0b0000_1111 & value);
[INFO] [stderr]    |                              ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/noise_channel.rs:93:25
[INFO] [stderr]    |
[INFO] [stderr] 93 |             let bit_1 = (0b0000_0000_0000_0001 & self.shift_register);
[INFO] [stderr]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/apu/dmc_channel.rs:25:35
[INFO] [stderr]    |
[INFO] [stderr] 25 |     memory: Option<Rc<RefCell<Box<Memory + 'a>>>>,
[INFO] [stderr]    |                                   ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]    --> src/apu/dmc_channel.rs:186:40
[INFO] [stderr]     |
[INFO] [stderr] 186 |             self.output.output_level = (0b0111_1111 & value);
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/apu/dmc_channel.rs:245:54
[INFO] [stderr]     |
[INFO] [stderr] 245 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<Memory + 'a>>>) {
[INFO] [stderr]     |                                                      ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `self::envelope::Envelope`
[INFO] [stderr]   --> src/apu/mod.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use self::envelope::Envelope;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `self::sweep::Sweep`
[INFO] [stderr]   --> src/apu/mod.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | use self::sweep::Sweep;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::VecDeque`
[INFO] [stderr]   --> src/apu/mod.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 24 | use std::collections::VecDeque;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/apu/mod.rs:162:22
[INFO] [stderr]     |
[INFO] [stderr] 162 |     audio_queue: Box<Audio<f32>>,
[INFO] [stderr]     |                      ^^^^^^^^^^ help: use `dyn`: `dyn Audio<f32>`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/apu/mod.rs:261:33
[INFO] [stderr]     |
[INFO] [stderr] 261 |     pub fn new(audio_queue: Box<Audio<f32>>) -> Apu<'a> {
[INFO] [stderr]     |                                 ^^^^^^^^^^ help: use `dyn`: `dyn Audio<f32>`
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]    --> src/apu/mod.rs:285:13
[INFO] [stderr]     |
[INFO] [stderr] 285 |             ((cpu_frequency*1000_000.0) / sample_rate as f64);
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/apu/mod.rs:370:54
[INFO] [stderr]     |
[INFO] [stderr] 370 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<Memory + 'a>>>) {
[INFO] [stderr]     |                                                      ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/cpu/mod.rs:17:28
[INFO] [stderr]    |
[INFO] [stderr] 17 |     memory: Rc<RefCell<Box<Memory +'a>>>, // reference to memory, so that cpu can use it
[INFO] [stderr]    |                            ^^^^^^^^^^ help: use `dyn`: `dyn Memory +'a`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/cpu/mod.rs:48:61
[INFO] [stderr]    |
[INFO] [stderr] 48 |     pub fn new(tv_system: &TvSystem, memory: Rc<RefCell<Box<Memory + 'a>>>) -> Cpu<'a> {
[INFO] [stderr]    |                                                             ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]  --> src/ppu/vram.rs:8:25
[INFO] [stderr]   |
[INFO] [stderr] 8 |     rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stderr]   |                         ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/ppu/vram.rs:15:58
[INFO] [stderr]    |
[INFO] [stderr] 15 |     pub fn new(mirroring: Mirroring, rom: Rc<RefCell<Box<Memory>>>) -> Vram {
[INFO] [stderr]    |                                                          ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::fmt`
[INFO] [stderr]  --> src/ppu/renderer.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::fmt;
[INFO] [stderr]   |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::rc::Rc`
[INFO] [stderr]  --> src/ppu/renderer.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use std::rc::Rc;
[INFO] [stderr]   |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::cell::RefCell`
[INFO] [stderr]  --> src/ppu/renderer.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::cell::RefCell;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stderr]   --> src/ppu/renderer.rs:56:22
[INFO] [stderr]    |
[INFO] [stderr] 56 |             for y in (0..240) {
[INFO] [stderr]    |                      ^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stderr]   --> src/ppu/renderer.rs:57:27
[INFO] [stderr]    |
[INFO] [stderr] 57 |                  for x in (0..256) {
[INFO] [stderr]    |                           ^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/ppu/mod.rs:58:15
[INFO] [stderr]    |
[INFO] [stderr] 58 |     vram: Box<Memory>,
[INFO] [stderr]    |               ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/ppu/mod.rs:74:19
[INFO] [stderr]    |
[INFO] [stderr] 74 |     renderer: Box<Renderer + 'a>,
[INFO] [stderr]    |                   ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/ppu/mod.rs:118:23
[INFO] [stderr]     |
[INFO] [stderr] 118 |         renderer: Box<Renderer + 'a>,
[INFO] [stderr]     |                       ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/ppu/mod.rs:121:29
[INFO] [stderr]     |
[INFO] [stderr] 121 |         rom: Rc<RefCell<Box<Memory>>>) -> Ppu<'a> {
[INFO] [stderr]     |                             ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]  --> src/memory/mod.rs:8:21
[INFO] [stderr]   |
[INFO] [stderr] 8 | impl fmt::Debug for Memory {
[INFO] [stderr]   |                     ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/memory_bus/mod.rs:10:25
[INFO] [stderr]    |
[INFO] [stderr] 10 |     rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stderr]    |                         ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/memory_bus/mod.rs:11:14
[INFO] [stderr]    |
[INFO] [stderr] 11 |     ram: Box<Memory>,
[INFO] [stderr]    |              ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/memory_bus/mod.rs:64:36
[INFO] [stderr]    |
[INFO] [stderr] 64 |     pub fn new(rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stderr]    |                                    ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/memory_bus/mod.rs:70:46
[INFO] [stderr]    |
[INFO] [stderr] 70 |             ram: Box::new(Ram::new()) as Box<Memory>,
[INFO] [stderr]    |                                              ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `e`
[INFO] [stderr]   --> src/console/mod.rs:43:26
[INFO] [stderr]    |
[INFO] [stderr] 43 |         .unwrap_or_else(|e| panic!("Failed to initialize SDL context"));
[INFO] [stderr]    |                          ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `consumed_time`
[INFO] [stderr]    --> src/console/mod.rs:173:17
[INFO] [stderr]     |
[INFO] [stderr] 173 |             let consumed_time = time::precise_time_ns() - current_time;
[INFO] [stderr]     |                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_consumed_time`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `timer_low_bits`
[INFO] [stderr]   --> src/apu/pulse_channel.rs:85:17
[INFO] [stderr]    |
[INFO] [stderr] 85 |             let timer_low_bits = value;
[INFO] [stderr]    |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timer_low_bits`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `new_buf`
[INFO] [stderr]   --> src/apu/dmc_channel.rs:71:17
[INFO] [stderr]    |
[INFO] [stderr] 71 |             let new_buf = if let Some(ref memory) = self.memory {
[INFO] [stderr]    |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_buf`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `memory`
[INFO] [stderr]   --> src/apu/dmc_channel.rs:71:43
[INFO] [stderr]    |
[INFO] [stderr] 71 |             let new_buf = if let Some(ref memory) = self.memory {
[INFO] [stderr]    |                                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `enabled`
[INFO] [stderr]    --> src/apu/dmc_channel.rs:139:46
[INFO] [stderr]     |
[INFO] [stderr] 139 |     fn cycle(&mut self, reader: &mut Reader, enabled: bool) {
[INFO] [stderr]     |                                              ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enabled`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/apu/sweep.rs:64:13
[INFO] [stderr]    |
[INFO] [stderr] 64 |         let mut sweep = (base >> self.shift) as i16;
[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: variable does not need to be mutable
[INFO] [stderr]     --> src/cpu/mod.rs:2132:13
[INFO] [stderr]      |
[INFO] [stderr] 2132 |         let mut divisor:u8;
[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/cpu/mod.rs:2133:13
[INFO] [stderr]      |
[INFO] [stderr] 2133 |         let mut color_freq:f64;
[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/cpu/mod.rs:2134:13
[INFO] [stderr]      |
[INFO] [stderr] 2134 |         let mut master_freq:f64;
[INFO] [stderr]      |             ----^^^^^^^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: static item is never used: `PAL_RATE`
[INFO] [stderr]   --> src/apu/noise_channel.rs:12:1
[INFO] [stderr]    |
[INFO] [stderr] 12 | / static PAL_RATE: [u16; 16] = [
[INFO] [stderr] 13 | |     4, 8, 14, 30, 60, 88, 118, 148,
[INFO] [stderr] 14 | |     188, 236, 354, 472, 708,  944, 1890, 3778
[INFO] [stderr] 15 | | ];
[INFO] [stderr]    | |__^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: static item is never used: `PAL_RATE`
[INFO] [stderr]   --> src/apu/dmc_channel.rs:12:1
[INFO] [stderr]    |
[INFO] [stderr] 12 | / static PAL_RATE : [u16; 16] = [
[INFO] [stderr] 13 | |     398, 354, 316, 298, 276, 236, 210, 198,
[INFO] [stderr] 14 | |     176, 148, 132, 118,  98,  78,  66,  50
[INFO] [stderr] 15 | | ];
[INFO] [stderr]    | |__^
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `halted`
[INFO] [stderr]   --> src/apu/length_counter.rs:49:5
[INFO] [stderr]    |
[INFO] [stderr] 49 |     pub fn halted(&self) -> bool {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `enabled`
[INFO] [stderr]   --> src/apu/length_counter.rs:62:5
[INFO] [stderr]    |
[INFO] [stderr] 62 |     pub fn enabled(&self) -> bool {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]   --> src/ppu/renderer.rs:69:9
[INFO] [stderr]    |
[INFO] [stderr] 69 |         self.canvas.copy(&self.texture, None, Rect::new(0, 0, 256*2, 240*2));
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead
[INFO] [stderr]   --> src/ppu/mod.rs:81:9
[INFO] [stderr]    |
[INFO] [stderr] 81 |         try!(write!(f, "{:?}", self.registers));
[INFO] [stderr]    |         ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AudioCallback`, `AudioDevice`
[INFO] [stderr]  --> src/console/mod.rs:6:25
[INFO] [stderr]   |
[INFO] [stderr] 6 | use self::sdl2::audio::{AudioCallback, AudioSpecDesired, AudioDevice, AudioQueue};
[INFO] [stderr]   |                         ^^^^^^^^^^^^^                    ^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::Duration`
[INFO] [stderr]  --> src/console/mod.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::time::Duration;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/console/mod.rs:94:51
[INFO] [stderr]    |
[INFO] [stderr] 94 |     let rom_mem = Rc::new(RefCell::new(rom as Box<Memory>));
[INFO] [stderr]    |                                                   ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/console/mod.rs:118:18
[INFO] [stderr]     |
[INFO] [stderr] 118 |         ) as Box<Memory>));
[INFO] [stderr]     |                  ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/pulse_channel.rs:63:50
[INFO] [stderr]    |
[INFO] [stderr] 63 |             let volume_envelope_divider_period = (0b0000_1111 & value);
[INFO] [stderr]    |                                                  ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/pulse_channel.rs:76:31
[INFO] [stderr]    |
[INFO] [stderr] 76 |             let shift_count = (0b0000_0111 & value);
[INFO] [stderr]    |                               ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/pulse_channel.rs:89:35
[INFO] [stderr]    |
[INFO] [stderr] 89 |             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stderr]    |                                   ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/triangle_channel.rs:33:34
[INFO] [stderr]    |
[INFO] [stderr] 33 |             let counter_reload = (0b0111_1111 & value);
[INFO] [stderr]    |                                  ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/triangle_channel.rs:43:35
[INFO] [stderr]    |
[INFO] [stderr] 43 |             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stderr]    |                                   ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/noise_channel.rs:38:41
[INFO] [stderr]    |
[INFO] [stderr] 38 |             let volume_divider_period = (0b0000_1111 & value);
[INFO] [stderr]    |                                         ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/noise_channel.rs:50:30
[INFO] [stderr]    |
[INFO] [stderr] 50 |             let rate_index = (0b0000_1111 & value);
[INFO] [stderr]    |                              ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/apu/noise_channel.rs:93:25
[INFO] [stderr]    |
[INFO] [stderr] 93 |             let bit_1 = (0b0000_0000_0000_0001 & self.shift_register);
[INFO] [stderr]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/apu/dmc_channel.rs:25:35
[INFO] [stderr]    |
[INFO] [stderr] 25 |     memory: Option<Rc<RefCell<Box<Memory + 'a>>>>,
[INFO] [stderr]    |                                   ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]    --> src/apu/dmc_channel.rs:186:40
[INFO] [stderr]     |
[INFO] [stderr] 186 |             self.output.output_level = (0b0111_1111 & value);
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/apu/dmc_channel.rs:245:54
[INFO] [stderr]     |
[INFO] [stderr] 245 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<Memory + 'a>>>) {
[INFO] [stderr]     |                                                      ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/apu/dmc_channel.rs:299:52
[INFO] [stderr]     |
[INFO] [stderr] 299 |                 Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stderr]     |                                                    ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::*`
[INFO] [stderr]   --> src/apu/sweep.rs:81:9
[INFO] [stderr]    |
[INFO] [stderr] 81 |     use super::*;
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `self::envelope::Envelope`
[INFO] [stderr]   --> src/apu/mod.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use self::envelope::Envelope;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `self::sweep::Sweep`
[INFO] [stderr]   --> src/apu/mod.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | use self::sweep::Sweep;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::VecDeque`
[INFO] [stderr]   --> src/apu/mod.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 24 | use std::collections::VecDeque;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/apu/mod.rs:162:22
[INFO] [stderr]     |
[INFO] [stderr] 162 |     audio_queue: Box<Audio<f32>>,
[INFO] [stderr]     |                      ^^^^^^^^^^ help: use `dyn`: `dyn Audio<f32>`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/apu/mod.rs:261:33
[INFO] [stderr]     |
[INFO] [stderr] 261 |     pub fn new(audio_queue: Box<Audio<f32>>) -> Apu<'a> {
[INFO] [stderr]     |                                 ^^^^^^^^^^ help: use `dyn`: `dyn Audio<f32>`
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]    --> src/apu/mod.rs:285:13
[INFO] [stderr]     |
[INFO] [stderr] 285 |             ((cpu_frequency*1000_000.0) / sample_rate as f64);
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/apu/mod.rs:370:54
[INFO] [stderr]     |
[INFO] [stderr] 370 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<Memory + 'a>>>) {
[INFO] [stderr]     |                                                      ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/apu/mod.rs:447:52
[INFO] [stderr]     |
[INFO] [stderr] 447 |                 Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stderr]     |                                                    ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/cpu/mod.rs:17:28
[INFO] [stderr]    |
[INFO] [stderr] 17 |     memory: Rc<RefCell<Box<Memory +'a>>>, // reference to memory, so that cpu can use it
[INFO] [stderr]    |                            ^^^^^^^^^^ help: use `dyn`: `dyn Memory +'a`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/cpu/mod.rs:48:61
[INFO] [stderr]    |
[INFO] [stderr] 48 |     pub fn new(tv_system: &TvSystem, memory: Rc<RefCell<Box<Memory + 'a>>>) -> Cpu<'a> {
[INFO] [stderr]    |                                                             ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]     --> src/cpu/mod.rs:2193:78
[INFO] [stderr]      |
[INFO] [stderr] 2193 |         let memory = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stderr]      |                                                                              ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]  --> src/ppu/vram.rs:8:25
[INFO] [stderr]   |
[INFO] [stderr] 8 |     rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stderr]   |                         ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/ppu/vram.rs:15:58
[INFO] [stderr]    |
[INFO] [stderr] 15 |     pub fn new(mirroring: Mirroring, rom: Rc<RefCell<Box<Memory>>>) -> Vram {
[INFO] [stderr]    |                                                          ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/ppu/vram.rs:131:75
[INFO] [stderr]     |
[INFO] [stderr] 131 |         let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stderr]     |                                                                           ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::fmt`
[INFO] [stderr]  --> src/ppu/renderer.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::fmt;
[INFO] [stderr]   |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::rc::Rc`
[INFO] [stderr]  --> src/ppu/renderer.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use std::rc::Rc;
[INFO] [stderr]   |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::cell::RefCell`
[INFO] [stderr]  --> src/ppu/renderer.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::cell::RefCell;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stderr]   --> src/ppu/renderer.rs:56:22
[INFO] [stderr]    |
[INFO] [stderr] 56 |             for y in (0..240) {
[INFO] [stderr]    |                      ^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stderr]   --> src/ppu/renderer.rs:57:27
[INFO] [stderr]    |
[INFO] [stderr] 57 |                  for x in (0..256) {
[INFO] [stderr]    |                           ^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/ppu/mod.rs:58:15
[INFO] [stderr]    |
[INFO] [stderr] 58 |     vram: Box<Memory>,
[INFO] [stderr]    |               ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/ppu/mod.rs:74:19
[INFO] [stderr]    |
[INFO] [stderr] 74 |     renderer: Box<Renderer + 'a>,
[INFO] [stderr]    |                   ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/ppu/mod.rs:118:23
[INFO] [stderr]     |
[INFO] [stderr] 118 |         renderer: Box<Renderer + 'a>,
[INFO] [stderr]     |                       ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/ppu/mod.rs:121:29
[INFO] [stderr]     |
[INFO] [stderr] 121 |         rom: Rc<RefCell<Box<Memory>>>) -> Ppu<'a> {
[INFO] [stderr]     |                             ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `rom::*`
[INFO] [stderr]    --> src/ppu/mod.rs:788:9
[INFO] [stderr]     |
[INFO] [stderr] 788 |     use rom::*;
[INFO] [stderr]     |         ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/ppu/mod.rs:829:75
[INFO] [stderr]     |
[INFO] [stderr] 829 |         let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stderr]     |                                                                           ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]  --> src/memory/mod.rs:8:21
[INFO] [stderr]   |
[INFO] [stderr] 8 | impl fmt::Debug for Memory {
[INFO] [stderr]   |                     ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/memory_bus/mod.rs:10:25
[INFO] [stderr]    |
[INFO] [stderr] 10 |     rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stderr]    |                         ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/memory_bus/mod.rs:11:14
[INFO] [stderr]    |
[INFO] [stderr] 11 |     ram: Box<Memory>,
[INFO] [stderr]    |              ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/memory_bus/mod.rs:64:36
[INFO] [stderr]    |
[INFO] [stderr] 64 |     pub fn new(rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stderr]    |                                    ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/memory_bus/mod.rs:70:46
[INFO] [stderr]    |
[INFO] [stderr] 70 |             ram: Box::new(Ram::new()) as Box<Memory>,
[INFO] [stderr]    |                                              ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `memory::*`
[INFO] [stderr]   --> src/memory_bus/mod.rs:85:9
[INFO] [stderr]    |
[INFO] [stderr] 85 |     use memory::*;
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ppu::*`
[INFO] [stderr]   --> src/memory_bus/mod.rs:86:9
[INFO] [stderr]    |
[INFO] [stderr] 86 |     use ppu::*;
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `AudioQueue`
[INFO] [stderr]   --> src/memory_bus/mod.rs:92:29
[INFO] [stderr]    |
[INFO] [stderr] 92 |     use self::sdl2::audio::{AudioQueue};
[INFO] [stderr]    |                             ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/memory_bus/mod.rs:146:75
[INFO] [stderr]     |
[INFO] [stderr] 146 |         let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stderr]     |                                                                           ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `memory::*`
[INFO] [stderr]   --> src/ram/mod.rs:47:9
[INFO] [stderr]    |
[INFO] [stderr] 47 |     use memory::*;
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `e`
[INFO] [stderr]   --> src/console/mod.rs:43:26
[INFO] [stderr]    |
[INFO] [stderr] 43 |         .unwrap_or_else(|e| panic!("Failed to initialize SDL context"));
[INFO] [stderr]    |                          ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `consumed_time`
[INFO] [stderr]    --> src/console/mod.rs:173:17
[INFO] [stderr]     |
[INFO] [stderr] 173 |             let consumed_time = time::precise_time_ns() - current_time;
[INFO] [stderr]     |                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_consumed_time`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `timer_low_bits`
[INFO] [stderr]   --> src/apu/pulse_channel.rs:85:17
[INFO] [stderr]    |
[INFO] [stderr] 85 |             let timer_low_bits = value;
[INFO] [stderr]    |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timer_low_bits`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `new_buf`
[INFO] [stderr]   --> src/apu/dmc_channel.rs:71:17
[INFO] [stderr]    |
[INFO] [stderr] 71 |             let new_buf = if let Some(ref memory) = self.memory {
[INFO] [stderr]    |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_buf`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `memory`
[INFO] [stderr]   --> src/apu/dmc_channel.rs:71:43
[INFO] [stderr]    |
[INFO] [stderr] 71 |             let new_buf = if let Some(ref memory) = self.memory {
[INFO] [stderr]    |                                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `enabled`
[INFO] [stderr]    --> src/apu/dmc_channel.rs:139:46
[INFO] [stderr]     |
[INFO] [stderr] 139 |     fn cycle(&mut self, reader: &mut Reader, enabled: bool) {
[INFO] [stderr]     |                                              ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enabled`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `address`
[INFO] [stderr]    --> src/apu/dmc_channel.rs:286:28
[INFO] [stderr]     |
[INFO] [stderr] 286 |         fn read(&mut self, address: u16) -> u8 {
[INFO] [stderr]     |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `address`
[INFO] [stderr]    --> src/apu/dmc_channel.rs:290:29
[INFO] [stderr]     |
[INFO] [stderr] 290 |         fn write(&mut self, address: u16, value: u8) {
[INFO] [stderr]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `value`
[INFO] [stderr]    --> src/apu/dmc_channel.rs:290:43
[INFO] [stderr]     |
[INFO] [stderr] 290 |         fn write(&mut self, address: u16, value: u8) {
[INFO] [stderr]     |                                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `slice`
[INFO] [stderr]    --> src/apu/mod.rs:413:29
[INFO] [stderr]     |
[INFO] [stderr] 413 |         fn queue(&mut self, slice: &[f32]) {
[INFO] [stderr]     |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_slice`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `address`
[INFO] [stderr]    --> src/apu/mod.rs:431:28
[INFO] [stderr]     |
[INFO] [stderr] 431 |         fn read(&mut self, address: u16) -> u8 {
[INFO] [stderr]     |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `address`
[INFO] [stderr]    --> src/apu/mod.rs:435:29
[INFO] [stderr]     |
[INFO] [stderr] 435 |         fn write(&mut self, address: u16, value: u8) {
[INFO] [stderr]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `value`
[INFO] [stderr]    --> src/apu/mod.rs:435:43
[INFO] [stderr]     |
[INFO] [stderr] 435 |         fn write(&mut self, address: u16, value: u8) {
[INFO] [stderr]     |                                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pixels`
[INFO] [stderr]    --> src/ppu/mod.rs:823:30
[INFO] [stderr]     |
[INFO] [stderr] 823 |         fn render(&mut self, pixels: &Vec<Pixel>) {
[INFO] [stderr]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pixels`
[INFO] [stderr]    --> src/memory_bus/mod.rs:105:30
[INFO] [stderr]     |
[INFO] [stderr] 105 |         fn render(&mut self, pixels: &Vec<Pixel>) {
[INFO] [stderr]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `slice`
[INFO] [stderr]    --> src/memory_bus/mod.rs:168:29
[INFO] [stderr]     |
[INFO] [stderr] 168 |         fn queue(&mut self, slice: &[f32]) {
[INFO] [stderr]     |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_slice`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/apu/triangle_channel.rs:168:13
[INFO] [stderr]     |
[INFO] [stderr] 168 |         let mut channel = create_test_channel();
[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: variable does not need to be mutable
[INFO] [stderr]   --> src/apu/sweep.rs:64:13
[INFO] [stderr]    |
[INFO] [stderr] 64 |         let mut sweep = (base >> self.shift) as i16;
[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/cpu/mod.rs:2132:13
[INFO] [stderr]      |
[INFO] [stderr] 2132 |         let mut divisor:u8;
[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/cpu/mod.rs:2133:13
[INFO] [stderr]      |
[INFO] [stderr] 2133 |         let mut color_freq:f64;
[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/cpu/mod.rs:2134:13
[INFO] [stderr]      |
[INFO] [stderr] 2134 |         let mut master_freq:f64;
[INFO] [stderr]      |             ----^^^^^^^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: static item is never used: `PAL_RATE`
[INFO] [stderr]   --> src/apu/noise_channel.rs:12:1
[INFO] [stderr]    |
[INFO] [stderr] 12 | / static PAL_RATE: [u16; 16] = [
[INFO] [stderr] 13 | |     4, 8, 14, 30, 60, 88, 118, 148,
[INFO] [stderr] 14 | |     188, 236, 354, 472, 708,  944, 1890, 3778
[INFO] [stderr] 15 | | ];
[INFO] [stderr]    | |__^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: static item is never used: `PAL_RATE`
[INFO] [stderr]   --> src/apu/dmc_channel.rs:12:1
[INFO] [stderr]    |
[INFO] [stderr] 12 | / static PAL_RATE : [u16; 16] = [
[INFO] [stderr] 13 | |     398, 354, 316, 298, 276, 236, 210, 198,
[INFO] [stderr] 14 | |     176, 148, 132, 118,  98,  78,  66,  50
[INFO] [stderr] 15 | | ];
[INFO] [stderr]    | |__^
[INFO] [stderr] 
[INFO] [stderr] warning: function `writing_to_0x400B_loads_length_counter` should have a snake case name
[INFO] [stderr]    --> src/apu/triangle_channel.rs:173:8
[INFO] [stderr]     |
[INFO] [stderr] 173 |     fn writing_to_0x400B_loads_length_counter() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_to_0x400_b_loads_length_counter`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `writing_to_0x400B_sets_linear_counter_reload_flag` should have a snake case name
[INFO] [stderr]    --> src/apu/triangle_channel.rs:229:8
[INFO] [stderr]     |
[INFO] [stderr] 229 |     fn writing_to_0x400B_sets_linear_counter_reload_flag() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_to_0x400_b_sets_linear_counter_reload_flag`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_0x400A_sets_timer_low_bits` should have a snake case name
[INFO] [stderr]    --> src/apu/triangle_channel.rs:246:8
[INFO] [stderr]     |
[INFO] [stderr] 246 |     fn write_to_0x400A_sets_timer_low_bits() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x400_a_sets_timer_low_bits`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_0x400B_sets_timer_high_bits` should have a snake case name
[INFO] [stderr]    --> src/apu/triangle_channel.rs:254:8
[INFO] [stderr]     |
[INFO] [stderr] 254 |     fn write_to_0x400B_sets_timer_high_bits() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x400_b_sets_timer_high_bits`
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:318:27
[INFO] [stderr]     |
[INFO] [stderr] 318 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[deny(overflowing_literals)]` on by default
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:333:27
[INFO] [stderr]     |
[INFO] [stderr] 333 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:355:27
[INFO] [stderr]     |
[INFO] [stderr] 355 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:368:27
[INFO] [stderr]     |
[INFO] [stderr] 368 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:382:27
[INFO] [stderr]     |
[INFO] [stderr] 382 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:394:27
[INFO] [stderr]     |
[INFO] [stderr] 394 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:411:27
[INFO] [stderr]     |
[INFO] [stderr] 411 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:422:27
[INFO] [stderr]     |
[INFO] [stderr] 422 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:434:27
[INFO] [stderr]     |
[INFO] [stderr] 434 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:450:27
[INFO] [stderr]     |
[INFO] [stderr] 450 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:463:27
[INFO] [stderr]     |
[INFO] [stderr] 463 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:476:27
[INFO] [stderr]     |
[INFO] [stderr] 476 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:490:27
[INFO] [stderr]     |
[INFO] [stderr] 490 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:506:27
[INFO] [stderr]     |
[INFO] [stderr] 506 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:525:27
[INFO] [stderr]     |
[INFO] [stderr] 525 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/dmc_channel.rs:536:27
[INFO] [stderr]     |
[INFO] [stderr] 536 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/mod.rs:464:27
[INFO] [stderr]     |
[INFO] [stderr] 464 |         apu.write(0x4012, 0x100);
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]    --> src/apu/mod.rs:495:27
[INFO] [stderr]     |
[INFO] [stderr] 495 |         apu.write(0x4012, 0x100);
[INFO] [stderr]     |                           ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]     = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] warning: function `writing_0x00_into_0x4017_should_not_clock_pulse_channeL_1_envelope` should have a snake case name
[INFO] [stderr]    --> src/apu/mod.rs:799:8
[INFO] [stderr]     |
[INFO] [stderr] 799 |     fn writing_0x00_into_0x4017_should_not_clock_pulse_channeL_1_envelope() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x00_into_0x4017_should_not_clock_pulse_channe_l_1_envelope`
[INFO] [stderr] 
[INFO] [stderr] warning: function `writing_0x00_into_0x4017_should_not_clock_pulse_channeL_2_envelope` should have a snake case name
[INFO] [stderr]    --> src/apu/mod.rs:836:8
[INFO] [stderr]     |
[INFO] [stderr] 836 |     fn writing_0x00_into_0x4017_should_not_clock_pulse_channeL_2_envelope() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x00_into_0x4017_should_not_clock_pulse_channe_l_2_envelope`
[INFO] [stderr] 
[INFO] [stderr] warning: function `writing_0xC0_into_0x4017_should_clear_frame_interrupt` should have a snake case name
[INFO] [stderr]    --> src/apu/mod.rs:974:8
[INFO] [stderr]     |
[INFO] [stderr] 974 |     fn writing_0xC0_into_0x4017_should_clear_frame_interrupt() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x_c0_into_0x4017_should_clear_frame_interrupt`
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]     --> src/cpu/mod.rs:6924:28
[INFO] [stderr]      |
[INFO] [stderr] 6924 |         cpu.status_flags = 0x103;
[INFO] [stderr]      |                            ^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: the literal `0x103` (decimal `259`) does not fit into the type `u8` and will become `3u8`
[INFO] [stderr]      = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_0x1FFF_is_redirected_to_rom` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:150:8
[INFO] [stderr]     |
[INFO] [stderr] 150 |     fn write_to_0x1FFF_is_redirected_to_rom() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x1_fff_is_redirected_to_rom`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_0x1FFF_is_redirected_to_rom` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:157:8
[INFO] [stderr]     |
[INFO] [stderr] 157 |     fn read_from_0x1FFF_is_redirected_to_rom() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x1_fff_is_redirected_to_rom`
[INFO] [stderr] 
[INFO] [stderr] warning: function `vram_address_0x3EFF_mirrors_to_0x2EFF` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:371:8
[INFO] [stderr]     |
[INFO] [stderr] 371 |     fn vram_address_0x3EFF_mirrors_to_0x2EFF() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `vram_address_0x3_eff_mirrors_to_0x2_eff`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_vram_address_0x3F00_writes_to_beginning_of_palette_ram` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:378:8
[INFO] [stderr]     |
[INFO] [stderr] 378 |     fn write_to_vram_address_0x3F00_writes_to_beginning_of_palette_ram() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f00_writes_to_beginning_of_palette_ram`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_vram_address_0x3F00_reads_from_beginning_of_palette_ram` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:386:8
[INFO] [stderr]     |
[INFO] [stderr] 386 |     fn read_from_vram_address_0x3F00_reads_from_beginning_of_palette_ram() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f00_reads_from_beginning_of_palette_ram`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_vram_address_0x3F1F_writes_to_end_of_palette_ram` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:393:8
[INFO] [stderr]     |
[INFO] [stderr] 393 |     fn write_to_vram_address_0x3F1F_writes_to_end_of_palette_ram() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f1_f_writes_to_end_of_palette_ram`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_vram_address_0x3F1F_reads_from_end_of_palette_ram` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:401:8
[INFO] [stderr]     |
[INFO] [stderr] 401 |     fn read_from_vram_address_0x3F1F_reads_from_end_of_palette_ram() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f1_f_reads_from_end_of_palette_ram`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_vram_address_0x3F10_is_mirrored_to_0x3F00` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:408:8
[INFO] [stderr]     |
[INFO] [stderr] 408 |     fn write_to_vram_address_0x3F10_is_mirrored_to_0x3F00() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f10_is_mirrored_to_0x3_f00`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_vram_address_0x3F10_is_mirrored_to_0x3F00` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:415:8
[INFO] [stderr]     |
[INFO] [stderr] 415 |     fn read_from_vram_address_0x3F10_is_mirrored_to_0x3F00() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f10_is_mirrored_to_0x3_f00`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_vram_address_0x3F14_is_mirrored_to_0x3F04` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:422:8
[INFO] [stderr]     |
[INFO] [stderr] 422 |     fn write_to_vram_address_0x3F14_is_mirrored_to_0x3F04() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f14_is_mirrored_to_0x3_f04`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_vram_address_0x3F14_is_mirrored_to_0x3F04` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:429:8
[INFO] [stderr]     |
[INFO] [stderr] 429 |     fn read_from_vram_address_0x3F14_is_mirrored_to_0x3F04() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f14_is_mirrored_to_0x3_f04`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_vram_address_0x3F18_is_mirrored_to_0x3F08` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:437:8
[INFO] [stderr]     |
[INFO] [stderr] 437 |     fn write_to_vram_address_0x3F18_is_mirrored_to_0x3F08() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f18_is_mirrored_to_0x3_f08`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_vram_address_0x3F18_is_mirrored_to_0x3F08` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:444:8
[INFO] [stderr]     |
[INFO] [stderr] 444 |     fn read_from_vram_address_0x3F18_is_mirrored_to_0x3F08() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f18_is_mirrored_to_0x3_f08`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_vram_address_0x3F1C_is_mirrored_to_0x3F0C` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:451:8
[INFO] [stderr]     |
[INFO] [stderr] 451 |     fn write_to_vram_address_0x3F1C_is_mirrored_to_0x3F0C() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f1_c_is_mirrored_to_0x3_f0_c`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_vram_address_0x3F1C_is_mirrored_to_0x3F0C` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:458:8
[INFO] [stderr]     |
[INFO] [stderr] 458 |     fn read_from_vram_address_0x3F1C_is_mirrored_to_0x3F0C() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f1_c_is_mirrored_to_0x3_f0_c`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_vram_address_0x3F20_is_mirrored_to_0x3F00` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:466:8
[INFO] [stderr]     |
[INFO] [stderr] 466 |     fn write_to_vram_address_0x3F20_is_mirrored_to_0x3F00() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f20_is_mirrored_to_0x3_f00`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_vram_address_0x3F20_is_mirrored_to_0x3F00` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:473:8
[INFO] [stderr]     |
[INFO] [stderr] 473 |     fn read_from_vram_address_0x3F20_is_mirrored_to_0x3F00() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f20_is_mirrored_to_0x3_f00`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_vram_address_0x3FFF_is_mirrored_to_0x3F1F` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:480:8
[INFO] [stderr]     |
[INFO] [stderr] 480 |     fn write_to_vram_address_0x3FFF_is_mirrored_to_0x3F1F() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_fff_is_mirrored_to_0x3_f1_f`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_vram_address_0x3FFF_is_mirrored_to_0x3F1F` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:487:8
[INFO] [stderr]     |
[INFO] [stderr] 487 |     fn read_from_vram_address_0x3FFF_is_mirrored_to_0x3F1F() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_fff_is_mirrored_to_0x3_f1_f`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_vram_address_0x3F45_is_mirrored_to_0x3F05` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:494:8
[INFO] [stderr]     |
[INFO] [stderr] 494 |     fn write_to_vram_address_0x3F45_is_mirrored_to_0x3F05() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f45_is_mirrored_to_0x3_f05`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_vram_address_0x3F45_is_mirrored_to_0x3F05` should have a snake case name
[INFO] [stderr]    --> src/ppu/vram.rs:501:8
[INFO] [stderr]     |
[INFO] [stderr] 501 |     fn read_from_vram_address_0x3F45_is_mirrored_to_0x3F05() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f45_is_mirrored_to_0x3_f05`
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]   --> src/ppu/renderer.rs:69:9
[INFO] [stderr]    |
[INFO] [stderr] 69 |         self.canvas.copy(&self.texture, None, Rect::new(0, 0, 256*2, 240*2));
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3F00` should have a snake case name
[INFO] [stderr]     --> src/ppu/mod.rs:1076:8
[INFO] [stderr]      |
[INFO] [stderr] 1076 |     fn read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3F00() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3_f00`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3F00` should have a snake case name
[INFO] [stderr]     --> src/ppu/mod.rs:1085:8
[INFO] [stderr]      |
[INFO] [stderr] 1085 |     fn read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3F00() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3_f00`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3F00` should have a snake case name
[INFO] [stderr]     --> src/ppu/mod.rs:1095:8
[INFO] [stderr]      |
[INFO] [stderr] 1095 |     fn read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3F00() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3_f00`
[INFO] [stderr] 
[INFO] [stderr] error: literal out of range for u8
[INFO] [stderr]     --> src/ppu/mod.rs:1108:32
[INFO] [stderr]      |
[INFO] [stderr] 1108 |         ppu.vram.write(0x3F00, 0x200);
[INFO] [stderr]      |                                ^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: the literal `0x200` (decimal `512`) does not fit into the type `u8` and will become `0u8`
[INFO] [stderr]      = help: consider using `u16` instead
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_address_0x200A_is_mirrored_to_status_register` should have a snake case name
[INFO] [stderr]     --> src/ppu/mod.rs:1158:8
[INFO] [stderr]      |
[INFO] [stderr] 1158 |     fn read_from_address_0x200A_is_mirrored_to_status_register() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_address_0x200_a_is_mirrored_to_status_register`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_address_between_0x2008_and_0x3FFF_is_mirrored_correctly` should have a snake case name
[INFO] [stderr]     --> src/ppu/mod.rs:1165:8
[INFO] [stderr]      |
[INFO] [stderr] 1165 |     fn write_to_address_between_0x2008_and_0x3FFF_is_mirrored_correctly() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_address_between_0x2008_and_0x3_fff_is_mirrored_correctly`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_address_between_0x2008_and_0x3FFF_is_mirrored_correctly` should have a snake case name
[INFO] [stderr]     --> src/ppu/mod.rs:1172:8
[INFO] [stderr]      |
[INFO] [stderr] 1172 |     fn read_from_address_between_0x2008_and_0x3FFF_is_mirrored_correctly() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_address_between_0x2008_and_0x3_fff_is_mirrored_correctly`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_0x3FFF_writes_to_ppu_data_register` should have a snake case name
[INFO] [stderr]     --> src/ppu/mod.rs:1181:8
[INFO] [stderr]      |
[INFO] [stderr] 1181 |     fn write_to_0x3FFF_writes_to_ppu_data_register() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x3_fff_writes_to_ppu_data_register`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_0x3FFF_reads_from_ppu_data_register` should have a snake case name
[INFO] [stderr]     --> src/ppu/mod.rs:1189:8
[INFO] [stderr]      |
[INFO] [stderr] 1189 |     fn read_from_0x3FFF_reads_from_ppu_data_register() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x3_fff_reads_from_ppu_data_register`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_0x1FFF_is_redirected_to_ram` should have a snake case name
[INFO] [stderr]    --> src/memory_bus/mod.rs:188:8
[INFO] [stderr]     |
[INFO] [stderr] 188 |     fn write_to_0x1FFF_is_redirected_to_ram() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x1_fff_is_redirected_to_ram`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_at_0x1FFF_is_read_from_ram` should have a snake case name
[INFO] [stderr]    --> src/memory_bus/mod.rs:209:8
[INFO] [stderr]     |
[INFO] [stderr] 209 |     fn read_at_0x1FFF_is_read_from_ram() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_at_0x1_fff_is_read_from_ram`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_to_0xFFFF_is_redirected_to_rom` should have a snake case name
[INFO] [stderr]    --> src/memory_bus/mod.rs:230:8
[INFO] [stderr]     |
[INFO] [stderr] 230 |     fn write_to_0xFFFF_is_redirected_to_rom() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x_ffff_is_redirected_to_rom`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_at_0xFFFF_is_read_from_rom` should have a snake case name
[INFO] [stderr]    --> src/memory_bus/mod.rs:251:8
[INFO] [stderr]     |
[INFO] [stderr] 251 |     fn read_at_0xFFFF_is_read_from_rom() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_at_0x_ffff_is_read_from_rom`
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_from_above_0x1FFF_panics` should have a snake case name
[INFO] [stderr]   --> src/ram/mod.rs:98:8
[INFO] [stderr]    |
[INFO] [stderr] 98 |     fn read_from_above_0x1FFF_panics() {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_above_0x1_fff_panics`
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_from_above_0x1FFF_panics` should have a snake case name
[INFO] [stderr]    --> src/ram/mod.rs:105:8
[INFO] [stderr]     |
[INFO] [stderr] 105 |     fn write_from_above_0x1FFF_panics() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_from_above_0x1_fff_panics`
[INFO] [stderr] 
[INFO] [stderr] error: aborting due to 20 previous errors
[INFO] [stderr] 
[INFO] [stderr] error: could not compile `nes`.
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] running `"docker" "inspect" "c9d678e945fca2b0c7a658ba5a9bedd6e3b795011b78d995348b9b59914eb634"`
[INFO] running `"docker" "rm" "-f" "c9d678e945fca2b0c7a658ba5a9bedd6e3b795011b78d995348b9b59914eb634"`
[INFO] [stdout] c9d678e945fca2b0c7a658ba5a9bedd6e3b795011b78d995348b9b59914eb634
