[INFO] cloning repository https://github.com/blakepotvin/chip8-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/blakepotvin/chip8-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fblakepotvin%2Fchip8-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fblakepotvin%2Fchip8-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 7895bfdc61805d4f429f6835d2667aef7025452c [INFO] checking blakepotvin/chip8-rs/7895bfdc61805d4f429f6835d2667aef7025452c against master#f609b7e0586f81fefb3523e3e17adf779ac416be for pr-129466-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fblakepotvin%2Fchip8-rs" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/blakepotvin/chip8-rs on toolchain f609b7e0586f81fefb3523e3e17adf779ac416be [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/blakepotvin/chip8-rs [INFO] finished tweaking git repo https://github.com/blakepotvin/chip8-rs [INFO] tweaked toml for git repo https://github.com/blakepotvin/chip8-rs written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/blakepotvin/chip8-rs 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" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"` [INFO] [stderr] note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest [INFO] [stderr] note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest [INFO] [stderr] note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded rand_core v0.9.0-alpha.0 [INFO] [stderr] Downloaded zerocopy-derive v0.8.0-alpha.5 [INFO] [stderr] Downloaded rand_chacha v0.9.0-alpha.0 [INFO] [stderr] Downloaded rand v0.9.0-alpha.0 [INFO] [stderr] Downloaded zerocopy v0.8.0-alpha.5 [INFO] [stderr] Downloaded sdl2 v0.36.0 [INFO] [stderr] Downloaded sdl2-sys v0.36.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:6252d7ea7fb8caaf7af6d800c5fb250a9cd862b9a7f9508afb3c54fa7fe1102e" "/opt/rustwide/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 1049cf7615de68984249b0ed3eacd5f38727150ce9d755a4296e761d468c4bee [INFO] running `Command { std: "docker" "start" "-a" "1049cf7615de68984249b0ed3eacd5f38727150ce9d755a4296e761d468c4bee", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "1049cf7615de68984249b0ed3eacd5f38727150ce9d755a4296e761d468c4bee", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1049cf7615de68984249b0ed3eacd5f38727150ce9d755a4296e761d468c4bee", kill_on_drop: false }` [INFO] [stdout] 1049cf7615de68984249b0ed3eacd5f38727150ce9d755a4296e761d468c4bee [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:6252d7ea7fb8caaf7af6d800c5fb250a9cd862b9a7f9508afb3c54fa7fe1102e" "/opt/rustwide/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e901ffb427fc94b2884f12ee145b80f9cd7509d51ea22550effaf42407b8676a [INFO] running `Command { std: "docker" "start" "-a" "e901ffb427fc94b2884f12ee145b80f9cd7509d51ea22550effaf42407b8676a", kill_on_drop: false }` [INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"` [INFO] [stderr] note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest [INFO] [stderr] note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest [INFO] [stderr] note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions [INFO] [stderr] Compiling zerocopy v0.8.0-alpha.5 [INFO] [stderr] Compiling version-compare v0.1.1 [INFO] [stderr] Compiling sdl2 v0.36.0 [INFO] [stderr] Compiling sdl2-sys v0.36.0 [INFO] [stderr] Checking rand_core v0.9.0-alpha.0 [INFO] [stderr] Checking rand_chacha v0.9.0-alpha.0 [INFO] [stderr] Checking rand v0.9.0-alpha.0 [INFO] [stderr] Checking chip8 v0.1.0 (/opt/rustwide/workdir/chip8) [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> chip8/src/emulator.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn new(&mut self) -> Self { [INFO] [stdout] | ---- expected `Emulator` because of return type [INFO] [stdout] ... [INFO] [stdout] 31 | emulator [INFO] [stdout] | ^^^^^^^^ expected `Emulator`, found `Rc>` [INFO] [stdout] | [INFO] [stdout] = note: expected struct `Emulator` [INFO] [stdout] found struct `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> chip8/src/emulator.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn new(&mut self) -> Self { [INFO] [stdout] | ---- expected `Emulator` because of return type [INFO] [stdout] ... [INFO] [stdout] 31 | emulator [INFO] [stdout] | ^^^^^^^^ expected `Emulator`, found `Rc>` [INFO] [stdout] | [INFO] [stdout] = note: expected struct `Emulator` [INFO] [stdout] found struct `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> chip8/src/emulator.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn get_cpu(&mut self) -> &mut CPU { [INFO] [stdout] | -------- expected `&mut CPU` because of return type [INFO] [stdout] 35 | &mut self.cpu [INFO] [stdout] | ^^^^^^^^^^^^^ expected `&mut CPU`, found `&mut Option>` [INFO] [stdout] | [INFO] [stdout] = note: expected mutable reference `&mut CPU` [INFO] [stdout] found mutable reference `&mut Option>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> chip8/src/emulator.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn get_cpu(&mut self) -> &mut CPU { [INFO] [stdout] | -------- expected `&mut CPU` because of return type [INFO] [stdout] 35 | &mut self.cpu [INFO] [stdout] | ^^^^^^^^^^^^^ expected `&mut CPU`, found `&mut Option>` [INFO] [stdout] | [INFO] [stdout] = note: expected mutable reference `&mut CPU` [INFO] [stdout] found mutable reference `&mut Option>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> chip8/src/emulator.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn get_memory(&self) -> &Memory { [INFO] [stdout] | ------- expected `&Memory` because of return type [INFO] [stdout] 39 | &self.memory [INFO] [stdout] | ^^^^^^^^^^^^ expected `&Memory`, found `&Option>` [INFO] [stdout] | [INFO] [stdout] = note: expected reference `&Memory` [INFO] [stdout] found reference `&Option>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> chip8/src/emulator.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn get_memory(&self) -> &Memory { [INFO] [stdout] | ------- expected `&Memory` because of return type [INFO] [stdout] 39 | &self.memory [INFO] [stdout] | ^^^^^^^^^^^^ expected `&Memory`, found `&Option>` [INFO] [stdout] | [INFO] [stdout] = note: expected reference `&Memory` [INFO] [stdout] found reference `&Option>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `fetch_word` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:52:46 [INFO] [stdout] | [INFO] [stdout] 52 | let operation = self.memory.as_ref().fetch_word(self.cpu.get_program_counter()); [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option<&Box>` [INFO] [stdout] | [INFO] [stdout] note: the method `fetch_word` exists on the type `&Box` [INFO] [stdout] --> chip8/src/memory.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn fetch_word(&self, index: u16) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `&Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 52 | let operation = self.memory.as_ref().expect("REASON").fetch_word(self.cpu.get_program_counter()); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `fetch_word` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:52:46 [INFO] [stdout] | [INFO] [stdout] 52 | let operation = self.memory.as_ref().fetch_word(self.cpu.get_program_counter()); [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option<&Box>` [INFO] [stdout] | [INFO] [stdout] note: the method `fetch_word` exists on the type `&Box` [INFO] [stdout] --> chip8/src/memory.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn fetch_word(&self, index: u16) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `&Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 52 | let operation = self.memory.as_ref().expect("REASON").fetch_word(self.cpu.get_program_counter()); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `get_program_counter` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:52:66 [INFO] [stdout] | [INFO] [stdout] 52 | let operation = self.memory.as_ref().fetch_word(self.cpu.get_program_counter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `get_program_counter` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn get_program_counter(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 52 | let operation = self.memory.as_ref().fetch_word(self.cpu.expect("REASON").get_program_counter()); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `get_program_counter` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:52:66 [INFO] [stdout] | [INFO] [stdout] 52 | let operation = self.memory.as_ref().fetch_word(self.cpu.get_program_counter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `get_program_counter` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn get_program_counter(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 52 | let operation = self.memory.as_ref().fetch_word(self.cpu.expect("REASON").get_program_counter()); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `set_program_counter` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:53:18 [INFO] [stdout] | [INFO] [stdout] 53 | self.cpu.set_program_counter(self.cpu.get_program_counter() + 2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `set_program_counter` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn set_program_counter(&mut self, value: u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 53 | self.cpu.expect("REASON").set_program_counter(self.cpu.get_program_counter() + 2); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `set_program_counter` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:53:18 [INFO] [stdout] | [INFO] [stdout] 53 | self.cpu.set_program_counter(self.cpu.get_program_counter() + 2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `set_program_counter` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn set_program_counter(&mut self, value: u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 53 | self.cpu.expect("REASON").set_program_counter(self.cpu.get_program_counter() + 2); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `get_program_counter` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:53:47 [INFO] [stdout] | [INFO] [stdout] 53 | self.cpu.set_program_counter(self.cpu.get_program_counter() + 2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `get_program_counter` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn get_program_counter(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 53 | self.cpu.set_program_counter(self.cpu.expect("REASON").get_program_counter() + 2); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `get_program_counter` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:53:47 [INFO] [stdout] | [INFO] [stdout] 53 | self.cpu.set_program_counter(self.cpu.get_program_counter() + 2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `get_program_counter` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn get_program_counter(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 53 | self.cpu.set_program_counter(self.cpu.expect("REASON").get_program_counter() + 2); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_cls` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:63:44 [INFO] [stdout] | [INFO] [stdout] 63 | (0, 0, 0xE, 0) => self.display.op_cls(), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_cls` exists on the type `Box` [INFO] [stdout] --> chip8/src/display.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 42 | pub fn op_cls(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 63 | (0, 0, 0xE, 0) => self.display.expect("REASON").op_cls(), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_cls` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:63:44 [INFO] [stdout] | [INFO] [stdout] 63 | (0, 0, 0xE, 0) => self.display.op_cls(), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_cls` exists on the type `Box` [INFO] [stdout] --> chip8/src/display.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 42 | pub fn op_cls(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 63 | (0, 0, 0xE, 0) => self.display.expect("REASON").op_cls(), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ret` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:65:42 [INFO] [stdout] | [INFO] [stdout] 65 | (0, 0, 0xE, 0xE) => self.cpu.op_ret(), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ret` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 63 | pub fn op_ret(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 65 | (0, 0, 0xE, 0xE) => self.cpu.expect("REASON").op_ret(), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ret` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:65:42 [INFO] [stdout] | [INFO] [stdout] 65 | (0, 0, 0xE, 0xE) => self.cpu.op_ret(), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ret` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 63 | pub fn op_ret(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 65 | (0, 0, 0xE, 0xE) => self.cpu.expect("REASON").op_ret(), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_jmp` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:67:38 [INFO] [stdout] | [INFO] [stdout] 67 | (1, _, _, _) => self.cpu.op_jmp(operation), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_jmp` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:76:5 [INFO] [stdout] | [INFO] [stdout] 76 | pub fn op_jmp(&mut self, operation: u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 67 | (1, _, _, _) => self.cpu.expect("REASON").op_jmp(operation), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_jmp` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:67:38 [INFO] [stdout] | [INFO] [stdout] 67 | (1, _, _, _) => self.cpu.op_jmp(operation), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_jmp` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:76:5 [INFO] [stdout] | [INFO] [stdout] 76 | pub fn op_jmp(&mut self, operation: u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 67 | (1, _, _, _) => self.cpu.expect("REASON").op_jmp(operation), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_call` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:69:38 [INFO] [stdout] | [INFO] [stdout] 69 | (2, _, _, _) => self.cpu.op_call(operation), [INFO] [stdout] | ^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_call` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:69:5 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn op_call(&mut self, operation: u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 69 | (2, _, _, _) => self.cpu.expect("REASON").op_call(operation), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_call` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:69:38 [INFO] [stdout] | [INFO] [stdout] 69 | (2, _, _, _) => self.cpu.op_call(operation), [INFO] [stdout] | ^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_call` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:69:5 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn op_call(&mut self, operation: u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 69 | (2, _, _, _) => self.cpu.expect("REASON").op_call(operation), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_se` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:71:38 [INFO] [stdout] | [INFO] [stdout] 71 | (3, _, _, _) => self.cpu.op_se(operation, digit2.into()), [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_se` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 88 | pub fn op_se(&mut self, operation: u16, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 71 | (3, _, _, _) => self.cpu.expect("REASON").op_se(operation, digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_se` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:71:38 [INFO] [stdout] | [INFO] [stdout] 71 | (3, _, _, _) => self.cpu.op_se(operation, digit2.into()), [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_se` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 88 | pub fn op_se(&mut self, operation: u16, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 71 | (3, _, _, _) => self.cpu.expect("REASON").op_se(operation, digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_sne` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:73:38 [INFO] [stdout] | [INFO] [stdout] 73 | (4, _, _, _) => self.cpu.op_sne(operation, digit2.into()), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_sne` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 103 | pub fn op_sne(&mut self, operation: u16, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 73 | (4, _, _, _) => self.cpu.expect("REASON").op_sne(operation, digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_sne` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:73:38 [INFO] [stdout] | [INFO] [stdout] 73 | (4, _, _, _) => self.cpu.op_sne(operation, digit2.into()), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_sne` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 103 | pub fn op_sne(&mut self, operation: u16, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 73 | (4, _, _, _) => self.cpu.expect("REASON").op_sne(operation, digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_se` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:75:38 [INFO] [stdout] | [INFO] [stdout] 75 | (5, _, _, 0) => self.cpu.op_reg_se(digit2.into(), digit3.into()), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_se` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn op_reg_se(&mut self, x: usize, y: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: there is a method `or_else` with a similar name, but with different arguments [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/option.rs:1534:5 [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 75 | (5, _, _, 0) => self.cpu.expect("REASON").op_reg_se(digit2.into(), digit3.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_se` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:75:38 [INFO] [stdout] | [INFO] [stdout] 75 | (5, _, _, 0) => self.cpu.op_reg_se(digit2.into(), digit3.into()), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_se` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn op_reg_se(&mut self, x: usize, y: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: there is a method `or_else` with a similar name, but with different arguments [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/option.rs:1534:5 [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 75 | (5, _, _, 0) => self.cpu.expect("REASON").op_reg_se(digit2.into(), digit3.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:77:38 [INFO] [stdout] | [INFO] [stdout] 77 | (6, _, _, _) => self.cpu.op_ld(operation, digit2.into()), [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:111:5 [INFO] [stdout] | [INFO] [stdout] 111 | pub fn op_ld(&mut self, operation: u16, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 77 | (6, _, _, _) => self.cpu.expect("REASON").op_ld(operation, digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:77:38 [INFO] [stdout] | [INFO] [stdout] 77 | (6, _, _, _) => self.cpu.op_ld(operation, digit2.into()), [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:111:5 [INFO] [stdout] | [INFO] [stdout] 111 | pub fn op_ld(&mut self, operation: u16, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 77 | (6, _, _, _) => self.cpu.expect("REASON").op_ld(operation, digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_add` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:79:38 [INFO] [stdout] | [INFO] [stdout] 79 | (7, _, _, _) => self.cpu.op_add(operation, digit2.into()), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_add` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:122:5 [INFO] [stdout] | [INFO] [stdout] 122 | pub fn op_add(&mut self, operation: u16, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 79 | (7, _, _, _) => self.cpu.expect("REASON").op_add(operation, digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_add` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:79:38 [INFO] [stdout] | [INFO] [stdout] 79 | (7, _, _, _) => self.cpu.op_add(operation, digit2.into()), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_add` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:122:5 [INFO] [stdout] | [INFO] [stdout] 122 | pub fn op_add(&mut self, operation: u16, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 79 | (7, _, _, _) => self.cpu.expect("REASON").op_add(operation, digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_or` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:81:38 [INFO] [stdout] | [INFO] [stdout] 81 | (8, _, _, 1) => self.cpu.op_reg_or(digit2.into(), digit3.into()), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_or` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:150:5 [INFO] [stdout] | [INFO] [stdout] 150 | pub fn op_reg_or(&mut self, x: usize, y: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: there is a method `ok_or` with a similar name, but with different arguments [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/option.rs:1240:5 [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 81 | (8, _, _, 1) => self.cpu.expect("REASON").op_reg_or(digit2.into(), digit3.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_or` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:81:38 [INFO] [stdout] | [INFO] [stdout] 81 | (8, _, _, 1) => self.cpu.op_reg_or(digit2.into(), digit3.into()), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_or` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:150:5 [INFO] [stdout] | [INFO] [stdout] 150 | pub fn op_reg_or(&mut self, x: usize, y: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: there is a method `ok_or` with a similar name, but with different arguments [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/option.rs:1240:5 [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 81 | (8, _, _, 1) => self.cpu.expect("REASON").op_reg_or(digit2.into(), digit3.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_add` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:83:38 [INFO] [stdout] | [INFO] [stdout] 83 | (8, _, _, 4) => self.cpu.op_reg_add(digit2.into(), digit3.into()), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_add` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:128:5 [INFO] [stdout] | [INFO] [stdout] 128 | pub fn op_reg_add(&mut self, x: usize, y: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 83 | (8, _, _, 4) => self.cpu.expect("REASON").op_reg_add(digit2.into(), digit3.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_add` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:83:38 [INFO] [stdout] | [INFO] [stdout] 83 | (8, _, _, 4) => self.cpu.op_reg_add(digit2.into(), digit3.into()), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_add` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:128:5 [INFO] [stdout] | [INFO] [stdout] 128 | pub fn op_reg_add(&mut self, x: usize, y: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 83 | (8, _, _, 4) => self.cpu.expect("REASON").op_reg_add(digit2.into(), digit3.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_sub` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:85:38 [INFO] [stdout] | [INFO] [stdout] 85 | (8, _, _, 5) => self.cpu.op_reg_sub(digit2.into(), digit3.into(), false), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_sub` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:136:5 [INFO] [stdout] | [INFO] [stdout] 136 | pub fn op_reg_sub(&mut self, x: usize, y: usize, reverse: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 85 | (8, _, _, 5) => self.cpu.expect("REASON").op_reg_sub(digit2.into(), digit3.into(), false), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_sub` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:85:38 [INFO] [stdout] | [INFO] [stdout] 85 | (8, _, _, 5) => self.cpu.op_reg_sub(digit2.into(), digit3.into(), false), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_sub` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:136:5 [INFO] [stdout] | [INFO] [stdout] 136 | pub fn op_reg_sub(&mut self, x: usize, y: usize, reverse: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 85 | (8, _, _, 5) => self.cpu.expect("REASON").op_reg_sub(digit2.into(), digit3.into(), false), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_shift` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:87:38 [INFO] [stdout] | [INFO] [stdout] 87 | (8, _, _, 6) => self.cpu.op_shift(digit2.into(), true), [INFO] [stdout] | ^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_shift` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:155:5 [INFO] [stdout] | [INFO] [stdout] 155 | pub fn op_shift(&mut self, x: usize, right: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 87 | (8, _, _, 6) => self.cpu.expect("REASON").op_shift(digit2.into(), true), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_shift` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:87:38 [INFO] [stdout] | [INFO] [stdout] 87 | (8, _, _, 6) => self.cpu.op_shift(digit2.into(), true), [INFO] [stdout] | ^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_shift` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:155:5 [INFO] [stdout] | [INFO] [stdout] 155 | pub fn op_shift(&mut self, x: usize, right: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 87 | (8, _, _, 6) => self.cpu.expect("REASON").op_shift(digit2.into(), true), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_sub` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:89:38 [INFO] [stdout] | [INFO] [stdout] 89 | (8, _, _, 7) => self.cpu.op_reg_sub(digit2.into(), digit3.into(), true), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_sub` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:136:5 [INFO] [stdout] | [INFO] [stdout] 136 | pub fn op_reg_sub(&mut self, x: usize, y: usize, reverse: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 89 | (8, _, _, 7) => self.cpu.expect("REASON").op_reg_sub(digit2.into(), digit3.into(), true), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_sub` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:89:38 [INFO] [stdout] | [INFO] [stdout] 89 | (8, _, _, 7) => self.cpu.op_reg_sub(digit2.into(), digit3.into(), true), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_sub` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:136:5 [INFO] [stdout] | [INFO] [stdout] 136 | pub fn op_reg_sub(&mut self, x: usize, y: usize, reverse: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 89 | (8, _, _, 7) => self.cpu.expect("REASON").op_reg_sub(digit2.into(), digit3.into(), true), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_shift` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:91:40 [INFO] [stdout] | [INFO] [stdout] 91 | (8, _, _, 0xE) => self.cpu.op_shift(digit2.into(), false), [INFO] [stdout] | ^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_shift` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:155:5 [INFO] [stdout] | [INFO] [stdout] 155 | pub fn op_shift(&mut self, x: usize, right: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 91 | (8, _, _, 0xE) => self.cpu.expect("REASON").op_shift(digit2.into(), false), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_shift` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:91:40 [INFO] [stdout] | [INFO] [stdout] 91 | (8, _, _, 0xE) => self.cpu.op_shift(digit2.into(), false), [INFO] [stdout] | ^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_shift` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:155:5 [INFO] [stdout] | [INFO] [stdout] 155 | pub fn op_shift(&mut self, x: usize, right: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 91 | (8, _, _, 0xE) => self.cpu.expect("REASON").op_shift(digit2.into(), false), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_ld` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:93:38 [INFO] [stdout] | [INFO] [stdout] 93 | (8, _, _, _) => self.cpu.op_reg_ld(digit2.into(), digit3.into()), [INFO] [stdout] | ^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_ld` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn op_reg_ld(&mut self, x: usize, y: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 93 | (8, _, _, _) => self.cpu.expect("REASON").op_reg_ld(digit2.into(), digit3.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_ld` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:93:38 [INFO] [stdout] | [INFO] [stdout] 93 | (8, _, _, _) => self.cpu.op_reg_ld(digit2.into(), digit3.into()), [INFO] [stdout] | ^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_ld` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn op_reg_ld(&mut self, x: usize, y: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 93 | (8, _, _, _) => self.cpu.expect("REASON").op_reg_ld(digit2.into(), digit3.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_sne` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:95:38 [INFO] [stdout] | [INFO] [stdout] 95 | (9, _, _, _) => self.cpu.op_reg_sne(digit2.into(), digit3.into()), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_sne` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:168:5 [INFO] [stdout] | [INFO] [stdout] 168 | pub fn op_reg_sne(&mut self, x: usize, y: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 95 | (9, _, _, _) => self.cpu.expect("REASON").op_reg_sne(digit2.into(), digit3.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_sne` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:95:38 [INFO] [stdout] | [INFO] [stdout] 95 | (9, _, _, _) => self.cpu.op_reg_sne(digit2.into(), digit3.into()), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_sne` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:168:5 [INFO] [stdout] | [INFO] [stdout] 168 | pub fn op_reg_sne(&mut self, x: usize, y: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 95 | (9, _, _, _) => self.cpu.expect("REASON").op_reg_sne(digit2.into(), digit3.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_i_ld` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:97:40 [INFO] [stdout] | [INFO] [stdout] 97 | (0xA, _, _, _) => self.cpu.op_i_ld(operation), [INFO] [stdout] | ^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_i_ld` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:175:5 [INFO] [stdout] | [INFO] [stdout] 175 | pub fn op_i_ld(&mut self, operation: u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 97 | (0xA, _, _, _) => self.cpu.expect("REASON").op_i_ld(operation), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_i_ld` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:97:40 [INFO] [stdout] | [INFO] [stdout] 97 | (0xA, _, _, _) => self.cpu.op_i_ld(operation), [INFO] [stdout] | ^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_i_ld` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:175:5 [INFO] [stdout] | [INFO] [stdout] 175 | pub fn op_i_ld(&mut self, operation: u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 97 | (0xA, _, _, _) => self.cpu.expect("REASON").op_i_ld(operation), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_jmp` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:99:40 [INFO] [stdout] | [INFO] [stdout] 99 | (0xB, _, _, _) => self.cpu.op_reg_jmp(operation), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_jmp` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 82 | pub fn op_reg_jmp(&mut self, operation: u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 99 | (0xB, _, _, _) => self.cpu.expect("REASON").op_reg_jmp(operation), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_rnd` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:101:40 [INFO] [stdout] | [INFO] [stdout] 101 | (0xC, _, _, _) => self.cpu.op_rnd(operation, digit2.into()), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_rnd` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:181:5 [INFO] [stdout] | [INFO] [stdout] 181 | pub fn op_rnd(&mut self, operation: u16, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 101 | (0xC, _, _, _) => self.cpu.expect("REASON").op_rnd(operation, digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_reg_jmp` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:99:40 [INFO] [stdout] | [INFO] [stdout] 99 | (0xB, _, _, _) => self.cpu.op_reg_jmp(operation), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_reg_jmp` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 82 | pub fn op_reg_jmp(&mut self, operation: u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 99 | (0xB, _, _, _) => self.cpu.expect("REASON").op_reg_jmp(operation), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_drw` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:103:44 [INFO] [stdout] | [INFO] [stdout] 103 | ... (0xD, _, _, _) => self.display.op_drw(self.cpu.get_register_value(digit2.into()).into(), self.cpu.get_register_value(digit3.into())... [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_drw` exists on the type `Box` [INFO] [stdout] --> chip8/src/display.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn op_drw(&mut self, x_coord: usize, y_coord: usize, num_rows: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 103 | (0xD, _, _, _) => self.display.expect("REASON").op_drw(self.cpu.get_register_value(digit2.into()).into(), self.cpu.get_register_value(digit3.into()).into(), digit4.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_rnd` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:101:40 [INFO] [stdout] | [INFO] [stdout] 101 | (0xC, _, _, _) => self.cpu.op_rnd(operation, digit2.into()), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_rnd` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:181:5 [INFO] [stdout] | [INFO] [stdout] 181 | pub fn op_rnd(&mut self, operation: u16, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 101 | (0xC, _, _, _) => self.cpu.expect("REASON").op_rnd(operation, digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_drw` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:103:44 [INFO] [stdout] | [INFO] [stdout] 103 | ... (0xD, _, _, _) => self.display.op_drw(self.cpu.get_register_value(digit2.into()).into(), self.cpu.get_register_value(digit3.into())... [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_drw` exists on the type `Box` [INFO] [stdout] --> chip8/src/display.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn op_drw(&mut self, x_coord: usize, y_coord: usize, num_rows: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 103 | (0xD, _, _, _) => self.display.expect("REASON").op_drw(self.cpu.get_register_value(digit2.into()).into(), self.cpu.get_register_value(digit3.into()).into(), digit4.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `get_register_value` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:103:60 [INFO] [stdout] | [INFO] [stdout] 103 | ... (0xD, _, _, _) => self.display.op_drw(self.cpu.get_register_value(digit2.into()).into(), self.cpu.get_register_value(digit3.into())... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `get_register_value` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:48:5 [INFO] [stdout] | [INFO] [stdout] 48 | pub fn get_register_value(&self, index: usize) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 103 | (0xD, _, _, _) => self.display.op_drw(self.cpu.expect("REASON").get_register_value(digit2.into()).into(), self.cpu.get_register_value(digit3.into()).into(), digit4.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `get_register_value` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:103:60 [INFO] [stdout] | [INFO] [stdout] 103 | ... (0xD, _, _, _) => self.display.op_drw(self.cpu.get_register_value(digit2.into()).into(), self.cpu.get_register_value(digit3.into())... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `get_register_value` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:48:5 [INFO] [stdout] | [INFO] [stdout] 48 | pub fn get_register_value(&self, index: usize) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 103 | (0xD, _, _, _) => self.display.op_drw(self.cpu.expect("REASON").get_register_value(digit2.into()).into(), self.cpu.get_register_value(digit3.into()).into(), digit4.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `get_register_value` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:103:111 [INFO] [stdout] | [INFO] [stdout] 103 | ...value(digit2.into()).into(), self.cpu.get_register_value(digit3.into()).into(), digit4.into()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `get_register_value` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:48:5 [INFO] [stdout] | [INFO] [stdout] 48 | pub fn get_register_value(&self, index: usize) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 103 | (0xD, _, _, _) => self.display.op_drw(self.cpu.get_register_value(digit2.into()).into(), self.cpu.expect("REASON").get_register_value(digit3.into()).into(), digit4.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_skp` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:105:44 [INFO] [stdout] | [INFO] [stdout] 105 | (0xE, _, 9, 0xE) => self.input.op_skp(digit2.into(), false), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_skp` exists on the type `Box` [INFO] [stdout] --> chip8/src/input.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn op_skp(&mut self, x: usize, reverse: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 105 | (0xE, _, 9, 0xE) => self.input.expect("REASON").op_skp(digit2.into(), false), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `get_register_value` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:103:111 [INFO] [stdout] | [INFO] [stdout] 103 | ...value(digit2.into()).into(), self.cpu.get_register_value(digit3.into()).into(), digit4.into()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `get_register_value` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:48:5 [INFO] [stdout] | [INFO] [stdout] 48 | pub fn get_register_value(&self, index: usize) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 103 | (0xD, _, _, _) => self.display.op_drw(self.cpu.get_register_value(digit2.into()).into(), self.cpu.expect("REASON").get_register_value(digit3.into()).into(), digit4.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_skp` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:107:44 [INFO] [stdout] | [INFO] [stdout] 107 | (0xE, _, 0xA, 1) => self.input.op_skp(digit2.into(), true), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_skp` exists on the type `Box` [INFO] [stdout] --> chip8/src/input.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn op_skp(&mut self, x: usize, reverse: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 107 | (0xE, _, 0xA, 1) => self.input.expect("REASON").op_skp(digit2.into(), true), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_skp` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:105:44 [INFO] [stdout] | [INFO] [stdout] 105 | (0xE, _, 9, 0xE) => self.input.op_skp(digit2.into(), false), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_skp` exists on the type `Box` [INFO] [stdout] --> chip8/src/input.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn op_skp(&mut self, x: usize, reverse: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 105 | (0xE, _, 9, 0xE) => self.input.expect("REASON").op_skp(digit2.into(), false), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld_dt` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:109:40 [INFO] [stdout] | [INFO] [stdout] 109 | (0xF, _, 0, 7) => self.cpu.op_ld_dt(digit2.into()), [INFO] [stdout] | ^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld_dt` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:188:5 [INFO] [stdout] | [INFO] [stdout] 188 | pub fn op_ld_dt(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 109 | (0xF, _, 0, 7) => self.cpu.expect("REASON").op_ld_dt(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_skp` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:107:44 [INFO] [stdout] | [INFO] [stdout] 107 | (0xE, _, 0xA, 1) => self.input.op_skp(digit2.into(), true), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_skp` exists on the type `Box` [INFO] [stdout] --> chip8/src/input.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn op_skp(&mut self, x: usize, reverse: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 107 | (0xE, _, 0xA, 1) => self.input.expect("REASON").op_skp(digit2.into(), true), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld_wait` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:111:44 [INFO] [stdout] | [INFO] [stdout] 111 | (0xF, _, 0, 0xA) => self.input.op_ld_wait(digit2.into()), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld_wait` exists on the type `Box` [INFO] [stdout] --> chip8/src/input.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn op_ld_wait(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 111 | (0xF, _, 0, 0xA) => self.input.expect("REASON").op_ld_wait(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld_dt` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:109:40 [INFO] [stdout] | [INFO] [stdout] 109 | (0xF, _, 0, 7) => self.cpu.op_ld_dt(digit2.into()), [INFO] [stdout] | ^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld_dt` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:188:5 [INFO] [stdout] | [INFO] [stdout] 188 | pub fn op_ld_dt(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 109 | (0xF, _, 0, 7) => self.cpu.expect("REASON").op_ld_dt(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld_dt` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:113:43 [INFO] [stdout] | [INFO] [stdout] 113 | (0xF, _, 1, 5) => self.memory.op_ld_dt(digit2.into()), [INFO] [stdout] | ^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld_dt` exists on the type `Box` [INFO] [stdout] --> chip8/src/memory.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn op_ld_dt(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 113 | (0xF, _, 1, 5) => self.memory.expect("REASON").op_ld_dt(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld_wait` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:111:44 [INFO] [stdout] | [INFO] [stdout] 111 | (0xF, _, 0, 0xA) => self.input.op_ld_wait(digit2.into()), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld_wait` exists on the type `Box` [INFO] [stdout] --> chip8/src/input.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn op_ld_wait(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 111 | (0xF, _, 0, 0xA) => self.input.expect("REASON").op_ld_wait(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld_st` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:115:43 [INFO] [stdout] | [INFO] [stdout] 115 | (0xF, _, 1, 8) => self.memory.op_ld_st(digit2.into()), [INFO] [stdout] | ^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld_st` exists on the type `Box` [INFO] [stdout] --> chip8/src/memory.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn op_ld_st(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 115 | (0xF, _, 1, 8) => self.memory.expect("REASON").op_ld_st(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld_dt` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:113:43 [INFO] [stdout] | [INFO] [stdout] 113 | (0xF, _, 1, 5) => self.memory.op_ld_dt(digit2.into()), [INFO] [stdout] | ^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld_dt` exists on the type `Box` [INFO] [stdout] --> chip8/src/memory.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn op_ld_dt(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 113 | (0xF, _, 1, 5) => self.memory.expect("REASON").op_ld_dt(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_add_i` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:117:42 [INFO] [stdout] | [INFO] [stdout] 117 | (0xF, _, 1, 0xE) => self.cpu.op_add_i(digit2.into()), [INFO] [stdout] | ^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_add_i` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 193 | pub fn op_add_i(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 117 | (0xF, _, 1, 0xE) => self.cpu.expect("REASON").op_add_i(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld_st` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:115:43 [INFO] [stdout] | [INFO] [stdout] 115 | (0xF, _, 1, 8) => self.memory.op_ld_st(digit2.into()), [INFO] [stdout] | ^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld_st` exists on the type `Box` [INFO] [stdout] --> chip8/src/memory.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn op_ld_st(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 115 | (0xF, _, 1, 8) => self.memory.expect("REASON").op_ld_st(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld_font` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:119:40 [INFO] [stdout] | [INFO] [stdout] 119 | (0xF, _, 2, 9) => self.cpu.op_ld_font(digit2.into()), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld_font` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:199:5 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn op_ld_font(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 119 | (0xF, _, 2, 9) => self.cpu.expect("REASON").op_ld_font(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_add_i` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:117:42 [INFO] [stdout] | [INFO] [stdout] 117 | (0xF, _, 1, 0xE) => self.cpu.op_add_i(digit2.into()), [INFO] [stdout] | ^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_add_i` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 193 | pub fn op_add_i(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 117 | (0xF, _, 1, 0xE) => self.cpu.expect("REASON").op_add_i(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_str` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:121:43 [INFO] [stdout] | [INFO] [stdout] 121 | (0xF, _, 5, 5) => self.memory.op_str(digit2.into()), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_str` exists on the type `Box` [INFO] [stdout] --> chip8/src/memory.rs:70:5 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn op_str(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 121 | (0xF, _, 5, 5) => self.memory.expect("REASON").op_str(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld_font` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:119:40 [INFO] [stdout] | [INFO] [stdout] 119 | (0xF, _, 2, 9) => self.cpu.op_ld_font(digit2.into()), [INFO] [stdout] | ^^^^^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld_font` exists on the type `Box` [INFO] [stdout] --> chip8/src/cpu.rs:199:5 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn op_ld_font(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 119 | (0xF, _, 2, 9) => self.cpu.expect("REASON").op_ld_font(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:123:43 [INFO] [stdout] | [INFO] [stdout] 123 | (0xF, _, 6, 5) => self.memory.op_ld(digit2.into()), [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld` exists on the type `Box` [INFO] [stdout] --> chip8/src/memory.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 77 | pub fn op_ld(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 123 | (0xF, _, 6, 5) => self.memory.expect("REASON").op_ld(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_str` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:121:43 [INFO] [stdout] | [INFO] [stdout] 121 | (0xF, _, 5, 5) => self.memory.op_str(digit2.into()), [INFO] [stdout] | ^^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_str` exists on the type `Box` [INFO] [stdout] --> chip8/src/memory.rs:70:5 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn op_str(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 121 | (0xF, _, 5, 5) => self.memory.expect("REASON").op_str(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `reset` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:138:18 [INFO] [stdout] | [INFO] [stdout] 138 | self.cpu.reset(); [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `reset` exists on the type `Box` [INFO] [stdout] --> chip8/src/emulator.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | fn reset(&mut self); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: items from traits can only be used if the trait is implemented and in scope [INFO] [stdout] note: `EmulatorComponent` defines an item `reset`, perhaps you need to implement it [INFO] [stdout] --> chip8/src/emulator.rs:18:1 [INFO] [stdout] | [INFO] [stdout] 18 | pub trait EmulatorComponent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 138 | self.cpu.expect("REASON").reset(); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `op_ld` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:123:43 [INFO] [stdout] | [INFO] [stdout] 123 | (0xF, _, 6, 5) => self.memory.op_ld(digit2.into()), [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `op_ld` exists on the type `Box` [INFO] [stdout] --> chip8/src/memory.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 77 | pub fn op_ld(&mut self, x: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 123 | (0xF, _, 6, 5) => self.memory.expect("REASON").op_ld(digit2.into()), [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `reset` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:139:21 [INFO] [stdout] | [INFO] [stdout] 139 | self.memory.reset(); [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `reset` exists on the type `Box` [INFO] [stdout] --> chip8/src/emulator.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | fn reset(&mut self); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: items from traits can only be used if the trait is implemented and in scope [INFO] [stdout] note: `EmulatorComponent` defines an item `reset`, perhaps you need to implement it [INFO] [stdout] --> chip8/src/emulator.rs:18:1 [INFO] [stdout] | [INFO] [stdout] 18 | pub trait EmulatorComponent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 139 | self.memory.expect("REASON").reset(); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `reset` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:138:18 [INFO] [stdout] | [INFO] [stdout] 138 | self.cpu.reset(); [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `reset` exists on the type `Box` [INFO] [stdout] --> chip8/src/emulator.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | fn reset(&mut self); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: items from traits can only be used if the trait is implemented and in scope [INFO] [stdout] note: `EmulatorComponent` defines an item `reset`, perhaps you need to implement it [INFO] [stdout] --> chip8/src/emulator.rs:18:1 [INFO] [stdout] | [INFO] [stdout] 18 | pub trait EmulatorComponent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 138 | self.cpu.expect("REASON").reset(); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `reset` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:140:22 [INFO] [stdout] | [INFO] [stdout] 140 | self.display.reset(); [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `reset` exists on the type `Box` [INFO] [stdout] --> chip8/src/emulator.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | fn reset(&mut self); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: items from traits can only be used if the trait is implemented and in scope [INFO] [stdout] note: `EmulatorComponent` defines an item `reset`, perhaps you need to implement it [INFO] [stdout] --> chip8/src/emulator.rs:18:1 [INFO] [stdout] | [INFO] [stdout] 18 | pub trait EmulatorComponent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 140 | self.display.expect("REASON").reset(); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `reset` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:139:21 [INFO] [stdout] | [INFO] [stdout] 139 | self.memory.reset(); [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `reset` exists on the type `Box` [INFO] [stdout] --> chip8/src/emulator.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | fn reset(&mut self); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: items from traits can only be used if the trait is implemented and in scope [INFO] [stdout] note: `EmulatorComponent` defines an item `reset`, perhaps you need to implement it [INFO] [stdout] --> chip8/src/emulator.rs:18:1 [INFO] [stdout] | [INFO] [stdout] 18 | pub trait EmulatorComponent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 139 | self.memory.expect("REASON").reset(); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `reset` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:141:20 [INFO] [stdout] | [INFO] [stdout] 141 | self.input.reset(); [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `reset` exists on the type `Box` [INFO] [stdout] --> chip8/src/emulator.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | fn reset(&mut self); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: items from traits can only be used if the trait is implemented and in scope [INFO] [stdout] note: `EmulatorComponent` defines an item `reset`, perhaps you need to implement it [INFO] [stdout] --> chip8/src/emulator.rs:18:1 [INFO] [stdout] | [INFO] [stdout] 18 | pub trait EmulatorComponent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 141 | self.input.expect("REASON").reset(); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `reset` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:140:22 [INFO] [stdout] | [INFO] [stdout] 140 | self.display.reset(); [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `reset` exists on the type `Box` [INFO] [stdout] --> chip8/src/emulator.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | fn reset(&mut self); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: items from traits can only be used if the trait is implemented and in scope [INFO] [stdout] note: `EmulatorComponent` defines an item `reset`, perhaps you need to implement it [INFO] [stdout] --> chip8/src/emulator.rs:18:1 [INFO] [stdout] | [INFO] [stdout] 18 | pub trait EmulatorComponent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 140 | self.display.expect("REASON").reset(); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `reset` found for enum `Option` in the current scope [INFO] [stdout] --> chip8/src/emulator.rs:141:20 [INFO] [stdout] | [INFO] [stdout] 141 | self.input.reset(); [INFO] [stdout] | ^^^^^ method not found in `Option>` [INFO] [stdout] | [INFO] [stdout] note: the method `reset` exists on the type `Box` [INFO] [stdout] --> chip8/src/emulator.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | fn reset(&mut self); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: items from traits can only be used if the trait is implemented and in scope [INFO] [stdout] note: `EmulatorComponent` defines an item `reset`, perhaps you need to implement it [INFO] [stdout] --> chip8/src/emulator.rs:18:1 [INFO] [stdout] | [INFO] [stdout] 18 | pub trait EmulatorComponent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: consider using `Option::expect` to unwrap the `Box` value, panicking if the value is an `Option::None` [INFO] [stdout] | [INFO] [stdout] 141 | self.input.expect("REASON").reset(); [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/cpu.rs:189:31 [INFO] [stdout] | [INFO] [stdout] 189 | self.v_registers[x] = self.emulator.get_mut().get_memory().get_delay_timer() [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:47:28 [INFO] [stdout] | [INFO] [stdout] 47 | self.delay_timer = self.emulator.get_mut().get_cpu().get_register_value(x); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:51:28 [INFO] [stdout] | [INFO] [stdout] 51 | self.sound_timer = self.emulator.get_mut().get_cpu().get_register_value(x); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:55:18 [INFO] [stdout] | [INFO] [stdout] 55 | let vx = self.emulator.get_mut().get_cpu().get_register_value(x) as f32; [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:64:21 [INFO] [stdout] | [INFO] [stdout] 64 | let i_reg = self.emulator.get_mut().get_cpu().get_i_register(); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:71:17 [INFO] [stdout] | [INFO] [stdout] 71 | let i = self.emulator.get_mut().get_cpu().get_i_register() as usize; [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:73:33 [INFO] [stdout] | [INFO] [stdout] 73 | self.ram[i + idx] = self.emulator.get_mut().get_cpu().get_register_value(idx); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:78:17 [INFO] [stdout] | [INFO] [stdout] 78 | let i = self.emulator.get_mut().get_cpu().get_i_register() as usize; [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:80:13 [INFO] [stdout] | [INFO] [stdout] 80 | self.emulator.get_mut().get_cpu().set_register_value(idx, self.ram[i + idx]); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/cpu.rs:189:31 [INFO] [stdout] | [INFO] [stdout] 189 | self.v_registers[x] = self.emulator.get_mut().get_memory().get_delay_timer() [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:47:28 [INFO] [stdout] | [INFO] [stdout] 47 | self.delay_timer = self.emulator.get_mut().get_cpu().get_register_value(x); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:51:28 [INFO] [stdout] | [INFO] [stdout] 51 | self.sound_timer = self.emulator.get_mut().get_cpu().get_register_value(x); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/display.rs:53:24 [INFO] [stdout] | [INFO] [stdout] 53 | let addr = self.emulator.get_mut().get_cpu().get_i_register() + y_line as u16; [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/display.rs:54:26 [INFO] [stdout] | [INFO] [stdout] 54 | let pixels = self.emulator.get_mut().get_memory().fetch_byte(addr); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/display.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | self.emulator.get_mut().get_cpu().set_register_value(0xF, 1); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/display.rs:74:13 [INFO] [stdout] | [INFO] [stdout] 74 | self.emulator.get_mut().get_cpu().set_register_value(0xF, 0); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:55:18 [INFO] [stdout] | [INFO] [stdout] 55 | let vx = self.emulator.get_mut().get_cpu().get_register_value(x) as f32; [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:64:21 [INFO] [stdout] | [INFO] [stdout] 64 | let i_reg = self.emulator.get_mut().get_cpu().get_i_register(); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/input.rs:23:18 [INFO] [stdout] | [INFO] [stdout] 23 | let vx = self.emulator.get_mut().get_cpu().get_register_value(x) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/input.rs:25:18 [INFO] [stdout] | [INFO] [stdout] 25 | let pc = self.emulator.get_mut().get_cpu().get_program_counter(); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/input.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | self.emulator.get_mut().get_cpu().set_program_counter(pc + 2); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:71:17 [INFO] [stdout] | [INFO] [stdout] 71 | let i = self.emulator.get_mut().get_cpu().get_i_register() as usize; [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:73:33 [INFO] [stdout] | [INFO] [stdout] 73 | self.ram[i + idx] = self.emulator.get_mut().get_cpu().get_register_value(idx); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/input.rs:36:17 [INFO] [stdout] | [INFO] [stdout] 36 | self.emulator.get_mut().get_cpu().set_register_value(x, i as u8); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/input.rs:44:22 [INFO] [stdout] | [INFO] [stdout] 44 | let pc = self.emulator.get_mut().get_cpu().get_program_counter(); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:78:17 [INFO] [stdout] | [INFO] [stdout] 78 | let i = self.emulator.get_mut().get_cpu().get_i_register() as usize; [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/input.rs:45:13 [INFO] [stdout] | [INFO] [stdout] 45 | self.emulator.get_mut().get_cpu().set_program_counter(pc - 2); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/memory.rs:80:13 [INFO] [stdout] | [INFO] [stdout] 80 | self.emulator.get_mut().get_cpu().set_register_value(idx, self.ram[i + idx]); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/display.rs:53:24 [INFO] [stdout] | [INFO] [stdout] 53 | let addr = self.emulator.get_mut().get_cpu().get_i_register() + y_line as u16; [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/display.rs:54:26 [INFO] [stdout] | [INFO] [stdout] 54 | let pixels = self.emulator.get_mut().get_memory().fetch_byte(addr); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/display.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | self.emulator.get_mut().get_cpu().set_register_value(0xF, 1); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/display.rs:74:13 [INFO] [stdout] | [INFO] [stdout] 74 | self.emulator.get_mut().get_cpu().set_register_value(0xF, 0); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 63 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0308, E0596, E0599. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0308`. [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/input.rs:23:18 [INFO] [stdout] | [INFO] [stdout] 23 | let vx = self.emulator.get_mut().get_cpu().get_register_value(x) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/input.rs:25:18 [INFO] [stdout] | [INFO] [stdout] 25 | let pc = self.emulator.get_mut().get_cpu().get_program_counter(); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/input.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | self.emulator.get_mut().get_cpu().set_program_counter(pc + 2); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/input.rs:36:17 [INFO] [stdout] | [INFO] [stdout] 36 | self.emulator.get_mut().get_cpu().set_register_value(x, i as u8); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/input.rs:44:22 [INFO] [stdout] | [INFO] [stdout] 44 | let pc = self.emulator.get_mut().get_cpu().get_program_counter(); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow data in an `Rc` as mutable [INFO] [stdout] --> chip8/src/input.rs:45:13 [INFO] [stdout] | [INFO] [stdout] 45 | self.emulator.get_mut().get_cpu().set_program_counter(pc - 2); [INFO] [stdout] | ^^^^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Rc>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 63 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0308, E0596, E0599. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0308`. [INFO] [stdout] [INFO] [stderr] error: could not compile `chip8` (lib) due to 64 previous errors [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: could not compile `chip8` (lib test) due to 64 previous errors [INFO] running `Command { std: "docker" "inspect" "e901ffb427fc94b2884f12ee145b80f9cd7509d51ea22550effaf42407b8676a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e901ffb427fc94b2884f12ee145b80f9cd7509d51ea22550effaf42407b8676a", kill_on_drop: false }` [INFO] [stdout] e901ffb427fc94b2884f12ee145b80f9cd7509d51ea22550effaf42407b8676a