[INFO] cloning repository https://github.com/jquesnelle/ironnes
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jquesnelle/ironnes" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjquesnelle%2Fironnes", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjquesnelle%2Fironnes'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 37ef230fa4c239be9e437ccdfae1f7891295f87e
[INFO] checking jquesnelle/ironnes against master#c2f2db79ca3024f68d22b45aa22b570775c2c4ad for pr-124157
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjquesnelle%2Fironnes" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/jquesnelle/ironnes on toolchain c2f2db79ca3024f68d22b45aa22b570775c2c4ad
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c2f2db79ca3024f68d22b45aa22b570775c2c4ad" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/jquesnelle/ironnes
[INFO] finished tweaking git repo https://github.com/jquesnelle/ironnes
[INFO] tweaked toml for git repo https://github.com/jquesnelle/ironnes written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/jquesnelle/ironnes 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" "+c2f2db79ca3024f68d22b45aa22b570775c2c4ad" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[ERROR] this task or one of its parent failed!
[ERROR] no output for 300 seconds
[ERROR] note: run with `RUST_BACKTRACE=1` to display a backtrace.
[INFO] checking jquesnelle/ironnes against try#9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88 for pr-124157
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjquesnelle%2Fironnes" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/jquesnelle/ironnes on toolchain 9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/jquesnelle/ironnes
[INFO] finished tweaking git repo https://github.com/jquesnelle/ironnes
[INFO] tweaked toml for git repo https://github.com/jquesnelle/ironnes written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/jquesnelle/ironnes 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" "+9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[INFO] checking jquesnelle/ironnes against try#9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88 for pr-124157
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjquesnelle%2Fironnes" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/jquesnelle/ironnes on toolchain 9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/jquesnelle/ironnes
[INFO] finished tweaking git repo https://github.com/jquesnelle/ironnes
[INFO] tweaked toml for git repo https://github.com/jquesnelle/ironnes written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/jquesnelle/ironnes 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" "+9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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:99613afd962a8cfa530ec1899472a458bd015a1ab0af876cf7eb06f6006d81ea" "/opt/rustwide/cargo-home/bin/cargo" "+9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a2cfc2064cb800487040302aa5c364b487e0679a1c9d89b8fb1127b128c2eab0
[INFO] running `Command { std: "docker" "start" "-a" "a2cfc2064cb800487040302aa5c364b487e0679a1c9d89b8fb1127b128c2eab0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a2cfc2064cb800487040302aa5c364b487e0679a1c9d89b8fb1127b128c2eab0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a2cfc2064cb800487040302aa5c364b487e0679a1c9d89b8fb1127b128c2eab0", kill_on_drop: false }`
[INFO] [stdout] a2cfc2064cb800487040302aa5c364b487e0679a1c9d89b8fb1127b128c2eab0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:99613afd962a8cfa530ec1899472a458bd015a1ab0af876cf7eb06f6006d81ea" "/opt/rustwide/cargo-home/bin/cargo" "+9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f72709057baa1dd6e1297b75fd8cdd139065d1396cda0078e7620bb79cfb87a2
[INFO] running `Command { std: "docker" "start" "-a" "f72709057baa1dd6e1297b75fd8cdd139065d1396cda0078e7620bb79cfb87a2", kill_on_drop: false }`
[INFO] [stderr]     Checking ironnes v0.0.1 (/opt/rustwide/workdir)
[INFO] [stdout] error: expected one of `!`, `(`, `+`, `::`, `;`, `<`, or `]`, found `,`
[INFO] [stdout]   --> src/rom/mod.rs:24:18
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Rom {
[INFO] [stdout]    |            --- while parsing this struct
[INFO] [stdout] 24 |   pub header: [u8, ..16],
[INFO] [stdout]    |                  ^ expected one of 7 possible tokens
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/board/mod.rs:39:10
[INFO] [stdout]    |
[INFO] [stdout] 39 |     0 => box Nrom::new(None::<Nrom>, rom_ref),
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 39 |     0 => Box::new(Nrom::new(None::<Nrom>, rom_ref)),
[INFO] [stdout]    |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `$emu:expr` is followed by `$arg:tt`, which is not allowed for `expr` fragments
[INFO] [stdout]   --> src/lib.rs:22:16
[INFO] [stdout]    |
[INFO] [stdout] 22 |   ($emu:expr $($arg:tt)*) => (
[INFO] [stdout]    |                ^^^^^^^ not allowed after `expr` fragments
[INFO] [stdout]    |
[INFO] [stdout]    = note: allowed there are: `=>`, `,` or `;`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `$emu:expr` is followed by `$arg:tt`, which is not allowed for `expr` fragments
[INFO] [stdout]   --> src/lib.rs:29:16
[INFO] [stdout]    |
[INFO] [stdout] 29 |   ($emu:expr $($arg:tt)*) => (
[INFO] [stdout]    |                ^^^^^^^ not allowed after `expr` fragments
[INFO] [stdout]    |
[INFO] [stdout]    = note: allowed there are: `=>`, `,` or `;`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected one of `!`, `(`, `+`, `::`, `;`, `<`, or `]`, found `,`
[INFO] [stdout]   --> src/rom/mod.rs:24:18
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Rom {
[INFO] [stdout]    |            --- while parsing this struct
[INFO] [stdout] 24 |   pub header: [u8, ..16],
[INFO] [stdout]    |                  ^ expected one of 7 possible tokens
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/board/mod.rs:39:10
[INFO] [stdout]    |
[INFO] [stdout] 39 |     0 => box Nrom::new(None::<Nrom>, rom_ref),
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 39 |     0 => Box::new(Nrom::new(None::<Nrom>, rom_ref)),
[INFO] [stdout]    |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `$emu:expr` is followed by `$arg:tt`, which is not allowed for `expr` fragments
[INFO] [stdout]   --> src/lib.rs:22:16
[INFO] [stdout]    |
[INFO] [stdout] 22 |   ($emu:expr $($arg:tt)*) => (
[INFO] [stdout]    |                ^^^^^^^ not allowed after `expr` fragments
[INFO] [stdout]    |
[INFO] [stdout]    = note: allowed there are: `=>`, `,` or `;`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `$emu:expr` is followed by `$arg:tt`, which is not allowed for `expr` fragments
[INFO] [stdout]   --> src/lib.rs:29:16
[INFO] [stdout]    |
[INFO] [stdout] 29 |   ($emu:expr $($arg:tt)*) => (
[INFO] [stdout]    |                ^^^^^^^ not allowed after `expr` fragments
[INFO] [stdout]    |
[INFO] [stdout]    = note: allowed there are: `=>`, `,` or `;`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `term`
[INFO] [stdout]   --> src/log/mod.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | extern crate term;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `term`
[INFO] [stdout]   --> src/log/mod.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | extern crate term;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `std::io::File`
[INFO] [stdout]   --> src/rom/mod.rs:18:15
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::io::{File};
[INFO] [stdout]    |               ^^^^ no `File` in `io`
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider importing this struct instead:
[INFO] [stdout]            std::fs::File
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `log::Normal`
[INFO] [stdout]   --> src/emulator/mod.rs:18:16
[INFO] [stdout]    |
[INFO] [stdout] 18 | use log::{Log, Normal};
[INFO] [stdout]    |                ^^^^^^ no `Normal` in `log`
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider importing one of these items instead:
[INFO] [stdout]            log::Level::Normal
[INFO] [stdout]            std::intrinsics::mir::BasicBlock::Normal
[INFO] [stdout]            std::num::FpCategory::Normal
[INFO] [stdout]            std::path::Component::Normal
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `std::io::File`
[INFO] [stdout]   --> src/rom/mod.rs:18:15
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::io::{File};
[INFO] [stdout]    |               ^^^^ no `File` in `io`
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider importing this struct instead:
[INFO] [stdout]            std::fs::File
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `log::Normal`
[INFO] [stdout]   --> src/emulator/mod.rs:18:16
[INFO] [stdout]    |
[INFO] [stdout] 18 | use log::{Log, Normal};
[INFO] [stdout]    |                ^^^^^^ no `Normal` in `log`
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider importing one of these items instead:
[INFO] [stdout]            log::Level::Normal
[INFO] [stdout]            std::intrinsics::mir::BasicBlock::Normal
[INFO] [stdout]            std::num::FpCategory::Normal
[INFO] [stdout]            std::path::Component::Normal
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `Error` in this scope
[INFO] [stdout]   --> src/log/mod.rs:33:23
[INFO] [stdout]    |
[INFO] [stdout] 33 |     self.log(message, Error);
[INFO] [stdout]    |                       ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 18 + use log::Level::Error;
[INFO] [stdout]    |
[INFO] [stdout] 18 + use std::fmt::Error;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `Normal` in this scope
[INFO] [stdout]   --> src/log/mod.rs:37:23
[INFO] [stdout]    |
[INFO] [stdout] 37 |     self.log(message, Normal);
[INFO] [stdout]    |                       ^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 18 + use log::Level::Normal;
[INFO] [stdout]    |
[INFO] [stdout] 18 + use std::num::FpCategory::Normal;
[INFO] [stdout]    |
[INFO] [stdout] 18 + use std::path::Component::Normal;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected value, found derive macro `Debug`
[INFO] [stdout]   --> src/log/mod.rs:41:23
[INFO] [stdout]    |
[INFO] [stdout] 41 |     self.log(message, Debug);
[INFO] [stdout]    |                       ^^^^^ not a value
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this unit variant instead
[INFO] [stdout]    |
[INFO] [stdout] 18 + use log::Level::Debug;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `int` in this scope
[INFO] [stdout]   --> src/log/mod.rs:45:17
[INFO] [stdout]    |
[INFO] [stdout] 45 |     if level as int <= self.log_level as int {
[INFO] [stdout]    |                 ^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 not found in this scope
[INFO] [stdout]    |                 help: perhaps you intended to use this type: `i32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `int` in this scope
[INFO] [stdout]   --> src/log/mod.rs:45:42
[INFO] [stdout]    |
[INFO] [stdout] 45 |     if level as int <= self.log_level as int {
[INFO] [stdout]    |                                          ^^^
[INFO] [stdout]    |                                          |
[INFO] [stdout]    |                                          not found in this scope
[INFO] [stdout]    |                                          help: perhaps you intended to use this type: `i32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Path` in this scope
[INFO] [stdout]   --> src/rom/mod.rs:34:22
[INFO] [stdout]    |
[INFO] [stdout] 34 |   pub fn load(path: &Path, emulator: &Emulator) -> Result<Rc<RefCell<Rom>>, String> {
[INFO] [stdout]    |                      ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout] 18 + use std::path::Path;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `uint` in this scope
[INFO] [stdout]   --> src/rom/mod.rs:68:38
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let prg_size = (rom.header[4] as uint) * 1024 * 16;
[INFO] [stdout]    |                                      ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `uint` in this scope
[INFO] [stdout]   --> src/rom/mod.rs:75:40
[INFO] [stdout]    |
[INFO] [stdout] 75 |       let chr_size = (rom.header[5] as uint) * 1024 * 8;
[INFO] [stdout]    |                                        ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Path` in this scope
[INFO] [stdout]   --> src/emulator/mod.rs:39:37
[INFO] [stdout]    |
[INFO] [stdout] 39 |   pub fn load_rom(&mut self, path: &Path) -> Result<(), String> {
[INFO] [stdout]    |                                     ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout] 18 + use std::path::Path;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0573]: expected type, found module `NROM`
[INFO] [stdout]   --> src/board/mod.rs:32:82
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn load_board(emulator: &Emulator, rom_ref: &Rc<RefCell<Rom>>) -> Result<Box<NROM>, String> {
[INFO] [stdout]    |                                                                                  ^^^^ help: a struct with a similar name exists: `Nrom`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/board/NROM.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Nrom {
[INFO] [stdout]    | --------------- similarly named struct `Nrom` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `Error` in this scope
[INFO] [stdout]   --> src/log/mod.rs:33:23
[INFO] [stdout]    |
[INFO] [stdout] 33 |     self.log(message, Error);
[INFO] [stdout]    |                       ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 18 + use log::Level::Error;
[INFO] [stdout]    |
[INFO] [stdout] 18 + use std::fmt::Error;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `Normal` in this scope
[INFO] [stdout]   --> src/log/mod.rs:37:23
[INFO] [stdout]    |
[INFO] [stdout] 37 |     self.log(message, Normal);
[INFO] [stdout]    |                       ^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 18 + use log::Level::Normal;
[INFO] [stdout]    |
[INFO] [stdout] 18 + use std::num::FpCategory::Normal;
[INFO] [stdout]    |
[INFO] [stdout] 18 + use std::path::Component::Normal;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `board::NROM::Nrom`
[INFO] [stdout]   --> src/board/mod.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use board::NROM::Nrom;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected value, found derive macro `Debug`
[INFO] [stdout]   --> src/log/mod.rs:41:23
[INFO] [stdout]    |
[INFO] [stdout] 41 |     self.log(message, Debug);
[INFO] [stdout]    |                       ^^^^^ not a value
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this unit variant instead
[INFO] [stdout]    |
[INFO] [stdout] 18 + use log::Level::Debug;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `int` in this scope
[INFO] [stdout]   --> src/log/mod.rs:45:17
[INFO] [stdout]    |
[INFO] [stdout] 45 |     if level as int <= self.log_level as int {
[INFO] [stdout]    |                 ^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 not found in this scope
[INFO] [stdout]    |                 help: perhaps you intended to use this type: `i32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `int` in this scope
[INFO] [stdout]   --> src/log/mod.rs:45:42
[INFO] [stdout]    |
[INFO] [stdout] 45 |     if level as int <= self.log_level as int {
[INFO] [stdout]    |                                          ^^^
[INFO] [stdout]    |                                          |
[INFO] [stdout]    |                                          not found in this scope
[INFO] [stdout]    |                                          help: perhaps you intended to use this type: `i32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: invalid suffix `i` for number literal
[INFO] [stdout]   --> src/rom/mod.rs:69:30
[INFO] [stdout]    |
[INFO] [stdout] 69 |     rom.prg.grow(prg_size, &(0i as u8));
[INFO] [stdout]    |                              ^^ invalid suffix `i`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the suffix must be one of the numeric types (`u32`, `isize`, `f32`, etc.)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: invalid suffix `i` for number literal
[INFO] [stdout]   --> src/rom/mod.rs:76:32
[INFO] [stdout]    |
[INFO] [stdout] 76 |       rom.chr.grow(chr_size, &(0i as u8));
[INFO] [stdout]    |                                ^^ invalid suffix `i`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the suffix must be one of the numeric types (`u32`, `isize`, `f32`, etc.)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Path` in this scope
[INFO] [stdout]   --> src/rom/mod.rs:34:22
[INFO] [stdout]    |
[INFO] [stdout] 34 |   pub fn load(path: &Path, emulator: &Emulator) -> Result<Rc<RefCell<Rom>>, String> {
[INFO] [stdout]    |                      ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout] 18 + use std::path::Path;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: invalid suffix `i` for number literal
[INFO] [stdout]   --> src/rom/mod.rs:95:26
[INFO] [stdout]    |
[INFO] [stdout] 95 |     name_buf.grow(128, &(0i as u8));
[INFO] [stdout]    |                          ^^ invalid suffix `i`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the suffix must be one of the numeric types (`u32`, `isize`, `f32`, etc.)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `uint` in this scope
[INFO] [stdout]   --> src/rom/mod.rs:68:38
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let prg_size = (rom.header[4] as uint) * 1024 * 16;
[INFO] [stdout]    |                                      ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `uint` in this scope
[INFO] [stdout]   --> src/rom/mod.rs:75:40
[INFO] [stdout]    |
[INFO] [stdout] 75 |       let chr_size = (rom.header[5] as uint) * 1024 * 8;
[INFO] [stdout]    |                                        ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Path` in this scope
[INFO] [stdout]   --> src/emulator/mod.rs:39:37
[INFO] [stdout]    |
[INFO] [stdout] 39 |   pub fn load_rom(&mut self, path: &Path) -> Result<(), String> {
[INFO] [stdout]    |                                     ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout] 18 + use std::path::Path;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0573]: expected type, found module `NROM`
[INFO] [stdout]   --> src/board/mod.rs:32:82
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn load_board(emulator: &Emulator, rom_ref: &Rc<RefCell<Rom>>) -> Result<Box<NROM>, String> {
[INFO] [stdout]    |                                                                                  ^^^^ help: a struct with a similar name exists: `Nrom`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/board/NROM.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Nrom {
[INFO] [stdout]    | --------------- similarly named struct `Nrom` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `macro_rules` has been stable since 1.0.0 and no longer requires an attribute to enable
[INFO] [stdout]   --> src/lib.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | #![feature(macro_rules)]
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `board::NROM::Nrom`
[INFO] [stdout]   --> src/board/mod.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use board::NROM::Nrom;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/emulator/mod.rs:27:21
[INFO] [stdout]    |
[INFO] [stdout] 27 |   board: Option<Box<Board>>
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 27 |   board: Option<Box<dyn Board>>
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: invalid suffix `i` for number literal
[INFO] [stdout]   --> src/rom/mod.rs:69:30
[INFO] [stdout]    |
[INFO] [stdout] 69 |     rom.prg.grow(prg_size, &(0i as u8));
[INFO] [stdout]    |                              ^^ invalid suffix `i`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the suffix must be one of the numeric types (`u32`, `isize`, `f32`, etc.)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: invalid suffix `i` for number literal
[INFO] [stdout]   --> src/rom/mod.rs:76:32
[INFO] [stdout]    |
[INFO] [stdout] 76 |       rom.chr.grow(chr_size, &(0i as u8));
[INFO] [stdout]    |                                ^^ invalid suffix `i`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the suffix must be one of the numeric types (`u32`, `isize`, `f32`, etc.)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: invalid suffix `i` for number literal
[INFO] [stdout]   --> src/rom/mod.rs:95:26
[INFO] [stdout]    |
[INFO] [stdout] 95 |     name_buf.grow(128, &(0i as u8));
[INFO] [stdout]    |                          ^^ invalid suffix `i`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the suffix must be one of the numeric types (`u32`, `isize`, `f32`, etc.)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `macro_rules` has been stable since 1.0.0 and no longer requires an attribute to enable
[INFO] [stdout]   --> src/lib.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | #![feature(macro_rules)]
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/emulator/mod.rs:27:21
[INFO] [stdout]    |
[INFO] [stdout] 27 |   board: Option<Box<Board>>
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 27 |   board: Option<Box<dyn Board>>
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Board` cannot be made into an object
[INFO] [stdout]   --> src/emulator/mod.rs:27:21
[INFO] [stdout]    |
[INFO] [stdout] 27 |   board: Option<Box<Board>>
[INFO] [stdout]    |                     ^^^^^ `Board` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> src/board/mod.rs:28:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub trait Board {
[INFO] [stdout]    |           ----- this trait cannot be made into an object...
[INFO] [stdout] 27 |   //see my SO question: http://stackoverflow.com/questions/25563667/implementing-rust-traits-cause-struct-to-not-be-found
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |      ^^^ ...because associated function `new` has no `self` parameter
[INFO] [stdout]    = help: only type `board::NROM::Nrom` is seen to implement the trait in this crate, consider using it directly instead
[INFO] [stdout]    = note: `Board` can be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] help: consider turning `new` into a method by giving it a `&self` argument
[INFO] [stdout]   --> src/board/mod.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(&self, _dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |          ++++++
[INFO] [stdout] help: alternatively, consider constraining `new` so it does not apply to trait objects
[INFO] [stdout]   --> src/board/mod.rs:28:63
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self where Self: Sized;
[INFO] [stdout]    |                                                                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Board` cannot be made into an object
[INFO] [stdout]   --> src/emulator/mod.rs:27:21
[INFO] [stdout]    |
[INFO] [stdout] 27 |   board: Option<Box<Board>>
[INFO] [stdout]    |                     ^^^^^ `Board` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> src/board/mod.rs:28:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub trait Board {
[INFO] [stdout]    |           ----- this trait cannot be made into an object...
[INFO] [stdout] 27 |   //see my SO question: http://stackoverflow.com/questions/25563667/implementing-rust-traits-cause-struct-to-not-be-found
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |      ^^^ ...because associated function `new` has no `self` parameter
[INFO] [stdout]    = help: only type `board::NROM::Nrom` is seen to implement the trait in this crate, consider using it directly instead
[INFO] [stdout]    = note: `Board` can be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] help: consider turning `new` into a method by giving it a `&self` argument
[INFO] [stdout]   --> src/board/mod.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(&self, _dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |          ++++++
[INFO] [stdout] help: alternatively, consider constraining `new` so it does not apply to trait objects
[INFO] [stdout]   --> src/board/mod.rs:28:63
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self where Self: Sized;
[INFO] [stdout]    |                                                                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `Self` cannot be known at compilation time
[INFO] [stdout]   --> src/board/mod.rs:28:18
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |                  ^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout] note: required by an implicit `Sized` bound in `Option`
[INFO] [stdout]   --> /rustc/9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88/library/core/src/option.rs:571:1
[INFO] [stdout] help: consider further restricting `Self`
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self where Self: Sized;
[INFO] [stdout]    |                                                                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `Self` cannot be known at compilation time
[INFO] [stdout]   --> src/board/mod.rs:28:18
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |                  ^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout] note: required by an implicit `Sized` bound in `Option`
[INFO] [stdout]   --> /rustc/9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88/library/core/src/option.rs:571:1
[INFO] [stdout] help: consider further restricting `Self`
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self where Self: Sized;
[INFO] [stdout]    |                                                                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `from_str` found for struct `String` in the current scope
[INFO] [stdout]   --> src/rom/mod.rs:35:30
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let bad_format = String::from_str("Invald ROM format");
[INFO] [stdout]    |                              ^^^^^^^^ function or associated item not found in `String`
[INFO] [stdout]    |
[INFO] [stdout] note: if you're trying to build a new `String` consider using one of the following associated functions:
[INFO] [stdout]       String::new
[INFO] [stdout]       String::with_capacity
[INFO] [stdout]       String::try_with_capacity
[INFO] [stdout]       String::from_utf8
[INFO] [stdout]       and 8 others
[INFO] [stdout]   --> /rustc/9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88/library/alloc/src/string.rs:448:5
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `FromStr` which provides `from_str` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout] 18 + use std::str::FromStr;
[INFO] [stdout]    |
[INFO] [stdout] help: there is an associated function `from` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let bad_format = String::from("Invald ROM format");
[INFO] [stdout]    |                              ~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `from_str` found for struct `String` in the current scope
[INFO] [stdout]   --> src/rom/mod.rs:35:30
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let bad_format = String::from_str("Invald ROM format");
[INFO] [stdout]    |                              ^^^^^^^^ function or associated item not found in `String`
[INFO] [stdout]    |
[INFO] [stdout] note: if you're trying to build a new `String` consider using one of the following associated functions:
[INFO] [stdout]       String::new
[INFO] [stdout]       String::with_capacity
[INFO] [stdout]       String::try_with_capacity
[INFO] [stdout]       String::from_utf8
[INFO] [stdout]       and 8 others
[INFO] [stdout]   --> /rustc/9c7b5f5b6b8ec32bbbcf9f07fc0e5208da6c5f88/library/alloc/src/string.rs:448:5
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `FromStr` which provides `from_str` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout] 18 + use std::str::FromStr;
[INFO] [stdout]    |
[INFO] [stdout] help: there is an associated function `from` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let bad_format = String::from("Invald ROM format");
[INFO] [stdout]    |                              ~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/rom/mod.rs:41:19
[INFO] [stdout]    |
[INFO] [stdout] 41 |       header: [0, ..16],
[INFO] [stdout]    |                   ^^^^ expected integer, found `RangeTo<{integer}>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `{integer}`
[INFO] [stdout]             found struct `RangeTo<{integer}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/rom/mod.rs:42:20
[INFO] [stdout]    |
[INFO] [stdout] 42 |       trainer: [0, ..512],
[INFO] [stdout]    |                    ^^^^^ expected integer, found `RangeTo<{integer}>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `{integer}`
[INFO] [stdout]             found struct `RangeTo<{integer}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/rom/mod.rs:45:20
[INFO] [stdout]    |
[INFO] [stdout] 45 |       pc_inst: [0, ..8192],
[INFO] [stdout]    |                    ^^^^^^ expected integer, found `RangeTo<{integer}>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `{integer}`
[INFO] [stdout]             found struct `RangeTo<{integer}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/rom/mod.rs:46:20
[INFO] [stdout]    |
[INFO] [stdout] 46 |       pc_prom: [0, ..32],
[INFO] [stdout]    |                    ^^^^ expected integer, found `RangeTo<{integer}>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `{integer}`
[INFO] [stdout]             found struct `RangeTo<{integer}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:50:22
[INFO] [stdout]    |
[INFO] [stdout] 50 |     if file.read(rom.header) != Ok(16) {
[INFO] [stdout]    |                      ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:54:15
[INFO] [stdout]    |
[INFO] [stdout] 54 |     match rom.header.slice(0, 4) {
[INFO] [stdout]    |               ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/rom/mod.rs:41:19
[INFO] [stdout]    |
[INFO] [stdout] 41 |       header: [0, ..16],
[INFO] [stdout]    |                   ^^^^ expected integer, found `RangeTo<{integer}>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `{integer}`
[INFO] [stdout]             found struct `RangeTo<{integer}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:62:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |     if (rom.header[6] & 4) == 4 {
[INFO] [stdout]    |             ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/rom/mod.rs:42:20
[INFO] [stdout]    |
[INFO] [stdout] 42 |       trainer: [0, ..512],
[INFO] [stdout]    |                    ^^^^^ expected integer, found `RangeTo<{integer}>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `{integer}`
[INFO] [stdout]             found struct `RangeTo<{integer}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/rom/mod.rs:45:20
[INFO] [stdout]    |
[INFO] [stdout] 45 |       pc_inst: [0, ..8192],
[INFO] [stdout]    |                    ^^^^^^ expected integer, found `RangeTo<{integer}>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `{integer}`
[INFO] [stdout]             found struct `RangeTo<{integer}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `trainer` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:63:24
[INFO] [stdout]    |
[INFO] [stdout] 63 |       if file.read(rom.trainer) != Ok(512) {
[INFO] [stdout]    |                        ^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/rom/mod.rs:46:20
[INFO] [stdout]    |
[INFO] [stdout] 46 |       pc_prom: [0, ..32],
[INFO] [stdout]    |                    ^^^^ expected integer, found `RangeTo<{integer}>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type `{integer}`
[INFO] [stdout]             found struct `RangeTo<{integer}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:68:25
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let prg_size = (rom.header[4] as uint) * 1024 * 16;
[INFO] [stdout]    |                         ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:50:22
[INFO] [stdout]    |
[INFO] [stdout] 50 |     if file.read(rom.header) != Ok(16) {
[INFO] [stdout]    |                      ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `prg` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     rom.prg.grow(prg_size, &(0i as u8));
[INFO] [stdout]    |         ^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `prg` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:70:22
[INFO] [stdout]    |
[INFO] [stdout] 70 |     if file.read(rom.prg.as_mut_slice()) != Ok(prg_size) {
[INFO] [stdout]    |                      ^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 |     if rom.header[5] != 0 {
[INFO] [stdout]    |            ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:54:15
[INFO] [stdout]    |
[INFO] [stdout] 54 |     match rom.header.slice(0, 4) {
[INFO] [stdout]    |               ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:75:27
[INFO] [stdout]    |
[INFO] [stdout] 75 |       let chr_size = (rom.header[5] as uint) * 1024 * 8;
[INFO] [stdout]    |                           ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:62:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |     if (rom.header[6] & 4) == 4 {
[INFO] [stdout]    |             ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `chr` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 |       rom.chr.grow(chr_size, &(0i as u8));
[INFO] [stdout]    |           ^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `trainer` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:63:24
[INFO] [stdout]    |
[INFO] [stdout] 63 |       if file.read(rom.trainer) != Ok(512) {
[INFO] [stdout]    |                        ^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `chr` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:77:24
[INFO] [stdout]    |
[INFO] [stdout] 77 |       if file.read(rom.chr.as_mut_slice()) != Ok(chr_size) {
[INFO] [stdout]    |                        ^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:82:13
[INFO] [stdout]    |
[INFO] [stdout] 82 |     if (rom.header[7] & 2) == 2 {
[INFO] [stdout]    |             ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:68:25
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let prg_size = (rom.header[4] as uint) * 1024 * 16;
[INFO] [stdout]    |                         ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `prg` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     rom.prg.grow(prg_size, &(0i as u8));
[INFO] [stdout]    |         ^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `pc_inst` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:83:24
[INFO] [stdout]    |
[INFO] [stdout] 83 |       if file.read(rom.pc_inst) != Ok(8192) {
[INFO] [stdout]    |                        ^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `prg` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:70:22
[INFO] [stdout]    |
[INFO] [stdout] 70 |     if file.read(rom.prg.as_mut_slice()) != Ok(prg_size) {
[INFO] [stdout]    |                      ^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `pc_prom` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:90:21
[INFO] [stdout]    |
[INFO] [stdout] 90 |       file.read(rom.pc_prom).unwrap();
[INFO] [stdout]    |                     ^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 |     if rom.header[5] != 0 {
[INFO] [stdout]    |            ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:75:27
[INFO] [stdout]    |
[INFO] [stdout] 75 |       let chr_size = (rom.header[5] as uint) * 1024 * 8;
[INFO] [stdout]    |                           ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `chr` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 |       rom.chr.grow(chr_size, &(0i as u8));
[INFO] [stdout]    |           ^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `chr` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:77:24
[INFO] [stdout]    |
[INFO] [stdout] 77 |       if file.read(rom.chr.as_mut_slice()) != Ok(chr_size) {
[INFO] [stdout]    |                        ^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:82:13
[INFO] [stdout]    |
[INFO] [stdout] 82 |     if (rom.header[7] & 2) == 2 {
[INFO] [stdout]    |             ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `pc_inst` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:83:24
[INFO] [stdout]    |
[INFO] [stdout] 83 |       if file.read(rom.pc_inst) != Ok(8192) {
[INFO] [stdout]    |                        ^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `pc_prom` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:90:21
[INFO] [stdout]    |
[INFO] [stdout] 90 |       file.read(rom.pc_prom).unwrap();
[INFO] [stdout]    |                     ^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `grow` found for struct `Vec<u8>` in the current scope
[INFO] [stdout]   --> src/rom/mod.rs:95:14
[INFO] [stdout]    |
[INFO] [stdout] 95 |     name_buf.grow(128, &(0i as u8));
[INFO] [stdout]    |              ^^^^ method not found in `Vec<u8>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `name` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:98:13
[INFO] [stdout]    |
[INFO] [stdout] 98 |         rom.name = match String::from_utf8(name_buf) {
[INFO] [stdout]    |             ^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `grow` found for struct `Vec<u8>` in the current scope
[INFO] [stdout]   --> src/rom/mod.rs:95:14
[INFO] [stdout]    |
[INFO] [stdout] 95 |     name_buf.grow(128, &(0i as u8));
[INFO] [stdout]    |              ^^^^ method not found in `Vec<u8>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `name` on type `Rom`
[INFO] [stdout]    --> src/rom/mod.rs:107:29
[INFO] [stdout]     |
[INFO] [stdout] 107 |       let rom_name = if rom.name.is_empty() {
[INFO] [stdout]     |                             ^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `name` on type `Rom`
[INFO] [stdout]    --> src/rom/mod.rs:111:13
[INFO] [stdout]     |
[INFO] [stdout] 111 |         rom.name.as_slice()
[INFO] [stdout]     |             ^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `name` on type `Rom`
[INFO] [stdout]   --> src/rom/mod.rs:98:13
[INFO] [stdout]    |
[INFO] [stdout] 98 |         rom.name = match String::from_utf8(name_buf) {
[INFO] [stdout]    |             ^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Board` cannot be made into an object
[INFO] [stdout]   --> src/emulator/mod.rs:35:14
[INFO] [stdout]    |
[INFO] [stdout] 35 |       board: None
[INFO] [stdout]    |              ^^^^ `Board` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> src/board/mod.rs:28:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub trait Board {
[INFO] [stdout]    |           ----- this trait cannot be made into an object...
[INFO] [stdout] 27 |   //see my SO question: http://stackoverflow.com/questions/25563667/implementing-rust-traits-cause-struct-to-not-be-found
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |      ^^^ ...because associated function `new` has no `self` parameter
[INFO] [stdout]    = help: only type `board::NROM::Nrom` is seen to implement the trait in this crate, consider using it directly instead
[INFO] [stdout]    = note: `Board` can be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] help: consider turning `new` into a method by giving it a `&self` argument
[INFO] [stdout]   --> src/board/mod.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(&self, _dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |          ++++++
[INFO] [stdout] help: alternatively, consider constraining `new` so it does not apply to trait objects
[INFO] [stdout]   --> src/board/mod.rs:28:63
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self where Self: Sized;
[INFO] [stdout]    |                                                                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Board` cannot be made into an object
[INFO] [stdout]   --> src/emulator/mod.rs:44:35
[INFO] [stdout]    |
[INFO] [stdout] 44 |             Ok(b) => self.board = Some(b),
[INFO] [stdout]    |                                   ^^^^ `Board` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> src/board/mod.rs:28:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub trait Board {
[INFO] [stdout]    |           ----- this trait cannot be made into an object...
[INFO] [stdout] 27 |   //see my SO question: http://stackoverflow.com/questions/25563667/implementing-rust-traits-cause-struct-to-not-be-found
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |      ^^^ ...because associated function `new` has no `self` parameter
[INFO] [stdout]    = help: only type `board::NROM::Nrom` is seen to implement the trait in this crate, consider using it directly instead
[INFO] [stdout]    = note: `Board` can be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] help: consider turning `new` into a method by giving it a `&self` argument
[INFO] [stdout]   --> src/board/mod.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(&self, _dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |          ++++++
[INFO] [stdout] help: alternatively, consider constraining `new` so it does not apply to trait objects
[INFO] [stdout]   --> src/board/mod.rs:28:63
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self where Self: Sized;
[INFO] [stdout]    |                                                                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Board` cannot be made into an object
[INFO] [stdout]   --> src/emulator/mod.rs:44:35
[INFO] [stdout]    |
[INFO] [stdout] 44 |             Ok(b) => self.board = Some(b),
[INFO] [stdout]    |                                   ^^^^^^^ `Board` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> src/board/mod.rs:28:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub trait Board {
[INFO] [stdout]    |           ----- this trait cannot be made into an object...
[INFO] [stdout] 27 |   //see my SO question: http://stackoverflow.com/questions/25563667/implementing-rust-traits-cause-struct-to-not-be-found
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |      ^^^ ...because associated function `new` has no `self` parameter
[INFO] [stdout]    = help: only type `board::NROM::Nrom` is seen to implement the trait in this crate, consider using it directly instead
[INFO] [stdout]    = note: `Board` can be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] help: consider turning `new` into a method by giving it a `&self` argument
[INFO] [stdout]   --> src/board/mod.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(&self, _dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |          ++++++
[INFO] [stdout] help: alternatively, consider constraining `new` so it does not apply to trait objects
[INFO] [stdout]   --> src/board/mod.rs:28:63
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self where Self: Sized;
[INFO] [stdout]    |                                                                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `name` on type `Rom`
[INFO] [stdout]    --> src/rom/mod.rs:107:29
[INFO] [stdout]     |
[INFO] [stdout] 107 |       let rom_name = if rom.name.is_empty() {
[INFO] [stdout]     |                             ^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Ref<'_, Rom>`
[INFO] [stdout]   --> src/board/NROM.rs:37:15
[INFO] [stdout]    |
[INFO] [stdout] 37 |     match rom.header[4] {
[INFO] [stdout]    |               ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `name` on type `Rom`
[INFO] [stdout]    --> src/rom/mod.rs:111:13
[INFO] [stdout]     |
[INFO] [stdout] 111 |         rom.name.as_slice()
[INFO] [stdout]     |             ^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `&Ref<'_, Rom>`
[INFO] [stdout]   --> src/board/mod.rs:36:22
[INFO] [stdout]    |
[INFO] [stdout] 36 |     mapper_no = (rom.header[6] >> 4) | (rom.header[7] & 0xf0);
[INFO] [stdout]    |                      ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Board` cannot be made into an object
[INFO] [stdout]   --> src/emulator/mod.rs:35:14
[INFO] [stdout]    |
[INFO] [stdout] 35 |       board: None
[INFO] [stdout]    |              ^^^^ `Board` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> src/board/mod.rs:28:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub trait Board {
[INFO] [stdout]    |           ----- this trait cannot be made into an object...
[INFO] [stdout] 27 |   //see my SO question: http://stackoverflow.com/questions/25563667/implementing-rust-traits-cause-struct-to-not-be-found
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |      ^^^ ...because associated function `new` has no `self` parameter
[INFO] [stdout]    = help: only type `board::NROM::Nrom` is seen to implement the trait in this crate, consider using it directly instead
[INFO] [stdout]    = note: `Board` can be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] help: consider turning `new` into a method by giving it a `&self` argument
[INFO] [stdout]   --> src/board/mod.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(&self, _dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |          ++++++
[INFO] [stdout] help: alternatively, consider constraining `new` so it does not apply to trait objects
[INFO] [stdout]   --> src/board/mod.rs:28:63
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self where Self: Sized;
[INFO] [stdout]    |                                                                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `&Ref<'_, Rom>`
[INFO] [stdout]   --> src/board/mod.rs:36:45
[INFO] [stdout]    |
[INFO] [stdout] 36 |     mapper_no = (rom.header[6] >> 4) | (rom.header[7] & 0xf0);
[INFO] [stdout]    |                                             ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Board` cannot be made into an object
[INFO] [stdout]   --> src/emulator/mod.rs:44:35
[INFO] [stdout]    |
[INFO] [stdout] 44 |             Ok(b) => self.board = Some(b),
[INFO] [stdout]    |                                   ^^^^ `Board` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> src/board/mod.rs:28:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub trait Board {
[INFO] [stdout]    |           ----- this trait cannot be made into an object...
[INFO] [stdout] 27 |   //see my SO question: http://stackoverflow.com/questions/25563667/implementing-rust-traits-cause-struct-to-not-be-found
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |      ^^^ ...because associated function `new` has no `self` parameter
[INFO] [stdout]    = help: only type `board::NROM::Nrom` is seen to implement the trait in this crate, consider using it directly instead
[INFO] [stdout]    = note: `Board` can be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] help: consider turning `new` into a method by giving it a `&self` argument
[INFO] [stdout]   --> src/board/mod.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(&self, _dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |          ++++++
[INFO] [stdout] help: alternatively, consider constraining `new` so it does not apply to trait objects
[INFO] [stdout]   --> src/board/mod.rs:28:63
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self where Self: Sized;
[INFO] [stdout]    |                                                                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 51 previous errors; 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0038, E0277, E0308, E0412, E0423, E0425, E0432, E0463, E0573...
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Board` cannot be made into an object
[INFO] [stdout]   --> src/emulator/mod.rs:44:35
[INFO] [stdout]    |
[INFO] [stdout] 44 |             Ok(b) => self.board = Some(b),
[INFO] [stdout]    |                                   ^^^^^^^ `Board` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> src/board/mod.rs:28:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub trait Board {
[INFO] [stdout]    |           ----- this trait cannot be made into an object...
[INFO] [stdout] 27 |   //see my SO question: http://stackoverflow.com/questions/25563667/implementing-rust-traits-cause-struct-to-not-be-found
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |      ^^^ ...because associated function `new` has no `self` parameter
[INFO] [stdout]    = help: only type `board::NROM::Nrom` is seen to implement the trait in this crate, consider using it directly instead
[INFO] [stdout]    = note: `Board` can be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] help: consider turning `new` into a method by giving it a `&self` argument
[INFO] [stdout]   --> src/board/mod.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(&self, _dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self;
[INFO] [stdout]    |          ++++++
[INFO] [stdout] help: alternatively, consider constraining `new` so it does not apply to trait objects
[INFO] [stdout]   --> src/board/mod.rs:28:63
[INFO] [stdout]    |
[INFO] [stdout] 28 |   fn new(_dummy: Option<Self>, rom: &Rc<RefCell<Rom>>) -> Self where Self: Sized;
[INFO] [stdout]    |                                                                +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `Ref<'_, Rom>`
[INFO] [stdout]   --> src/board/NROM.rs:37:15
[INFO] [stdout]    |
[INFO] [stdout] 37 |     match rom.header[4] {
[INFO] [stdout]    |               ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ironnes` (lib test) due to 52 previous errors; 3 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `ironnes` (lib) due to 52 previous errors; 3 warnings emitted
[INFO] [stdout] error[E0609]: no field `header` on type `&Ref<'_, Rom>`
[INFO] [stdout]   --> src/board/mod.rs:36:22
[INFO] [stdout]    |
[INFO] [stdout] 36 |     mapper_no = (rom.header[6] >> 4) | (rom.header[7] & 0xf0);
[INFO] [stdout]    |                      ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `header` on type `&Ref<'_, Rom>`
[INFO] [stdout]   --> src/board/mod.rs:36:45
[INFO] [stdout]    |
[INFO] [stdout] 36 |     mapper_no = (rom.header[6] >> 4) | (rom.header[7] & 0xf0);
[INFO] [stdout]    |                                             ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 51 previous errors; 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0038, E0277, E0308, E0412, E0423, E0425, E0432, E0463, E0573...
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "f72709057baa1dd6e1297b75fd8cdd139065d1396cda0078e7620bb79cfb87a2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f72709057baa1dd6e1297b75fd8cdd139065d1396cda0078e7620bb79cfb87a2", kill_on_drop: false }`
[INFO] [stdout] f72709057baa1dd6e1297b75fd8cdd139065d1396cda0078e7620bb79cfb87a2
