[INFO] cloning repository https://github.com/Awfa/advent_of_code_2019
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Awfa/advent_of_code_2019" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAwfa%2Fadvent_of_code_2019", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAwfa%2Fadvent_of_code_2019'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2d75360aabe9fa7e9ad65021d8a2d38e926db8b3
[INFO] checking Awfa/advent_of_code_2019 against try#44f3504e96c944ae54fc72b5f5008f53f7eda001 for pr-136776
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAwfa%2Fadvent_of_code_2019" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/Awfa/advent_of_code_2019 on toolchain 44f3504e96c944ae54fc72b5f5008f53f7eda001
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+44f3504e96c944ae54fc72b5f5008f53f7eda001" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/Awfa/advent_of_code_2019
[INFO] finished tweaking git repo https://github.com/Awfa/advent_of_code_2019
[INFO] tweaked toml for git repo https://github.com/Awfa/advent_of_code_2019 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/Awfa/advent_of_code_2019 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" "+44f3504e96c944ae54fc72b5f5008f53f7eda001" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+44f3504e96c944ae54fc72b5f5008f53f7eda001" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 30bf57f7f314279740e5851c75d12e19c8214b74059f9bfa663c812c55b0c16a
[INFO] running `Command { std: "docker" "start" "-a" "30bf57f7f314279740e5851c75d12e19c8214b74059f9bfa663c812c55b0c16a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "30bf57f7f314279740e5851c75d12e19c8214b74059f9bfa663c812c55b0c16a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "30bf57f7f314279740e5851c75d12e19c8214b74059f9bfa663c812c55b0c16a", kill_on_drop: false }`
[INFO] [stdout] 30bf57f7f314279740e5851c75d12e19c8214b74059f9bfa663c812c55b0c16a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+44f3504e96c944ae54fc72b5f5008f53f7eda001" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 899d1d52675a7691d2adebba2f986bd49d311a1b41c827d7e57e37fe283a0821
[INFO] running `Command { std: "docker" "start" "-a" "899d1d52675a7691d2adebba2f986bd49d311a1b41c827d7e57e37fe283a0821", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.6
[INFO] [stderr]    Compiling unicode-xid v0.2.0
[INFO] [stderr]    Compiling syn v1.0.11
[INFO] [stderr]    Compiling quote v1.0.2
[INFO] [stderr]    Compiling opcode-macro v0.1.0 (/opt/rustwide/workdir/opcode-macro)
[INFO] [stdout] warning: field `separator` is never read
[INFO] [stdout]    --> opcode-macro/src/lib.rs:132:5
[INFO] [stdout]     |
[INFO] [stdout] 130 | struct Parameter {
[INFO] [stdout]     |        --------- field in this struct
[INFO] [stdout] 131 |     ident: Ident,
[INFO] [stdout] 132 |     separator: Token![:],
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `keyword` is never read
[INFO] [stdout]    --> opcode-macro/src/lib.rs:148:9
[INFO] [stdout]     |
[INFO] [stdout] 147 |     ReadOnly {
[INFO] [stdout]     |     -------- field in this variant
[INFO] [stdout] 148 |         keyword: kw::ReadOnly
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `keyword` is never read
[INFO] [stdout]    --> opcode-macro/src/lib.rs:151:9
[INFO] [stdout]     |
[INFO] [stdout] 150 |     Writable {
[INFO] [stdout]     |     -------- field in this variant
[INFO] [stdout] 151 |         keyword: kw::Writable
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `separator` is never read
[INFO] [stdout]    --> opcode-macro/src/lib.rs:175:9
[INFO] [stdout]     |
[INFO] [stdout] 173 |     Input {
[INFO] [stdout]     |     ----- field in this variant
[INFO] [stdout] 174 |         ident: Ident,
[INFO] [stdout] 175 |         separator: Token![:],
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `separator` is never read
[INFO] [stdout]    --> opcode-macro/src/lib.rs:183:9
[INFO] [stdout]     |
[INFO] [stdout] 181 |     InstructionPointerOverride {
[INFO] [stdout]     |     -------------------------- field in this variant
[INFO] [stdout] 182 |         ident: Ident,
[INFO] [stdout] 183 |         separator: Token![:],
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking advent_of_code_2019 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] pub enum OpCode
[INFO] [stdout] {
[INFO] [stdout]     Add, Multiply, Input, Output, JumpIfTrue, JumpIfFalse, LessThan, Equals,
[INFO] [stdout]     End
[INFO] [stdout] } impl OpCode
[INFO] [stdout] {
[INFO] [stdout]     fn
[INFO] [stdout]     get_current_instruction(memory : & [EmulatorMemoryType],
[INFO] [stdout]     instruction_pointer : usize) -> Result <
[INFO] [stdout]     (OpCode, impl Iterator < Item = Result < ParameterMode, EmulatorError >>),
[INFO] [stdout]     EmulatorError >
[INFO] [stdout]     {
[INFO] [stdout]         let instruction_value = *
[INFO] [stdout]         memory.get(instruction_pointer).ok_or(EmulatorError ::
[INFO] [stdout]         InstructionPointerOutOfBounds { position : instruction_pointer, }) ? ;
[INFO] [stdout]         let instruction = match (instruction_value % 100)
[INFO] [stdout]         {
[INFO] [stdout]             1 => Ok(OpCode :: Add), 2 => Ok(OpCode :: Multiply), 3 =>
[INFO] [stdout]             Ok(OpCode :: Input), 4 => Ok(OpCode :: Output), 5 =>
[INFO] [stdout]             Ok(OpCode :: JumpIfTrue), 6 => Ok(OpCode :: JumpIfFalse), 7 =>
[INFO] [stdout]             Ok(OpCode :: LessThan), 8 => Ok(OpCode :: Equals), 99 =>
[INFO] [stdout]             Ok(OpCode :: End), _ =>
[INFO] [stdout]             Err(EmulatorError :: InvalidInstruction
[INFO] [stdout]             {
[INFO] [stdout]                 value_found : instruction_value, position :
[INFO] [stdout]                 instruction_pointer
[INFO] [stdout]             })
[INFO] [stdout]         } ? ; let parameter_mode_iterator =
[INFO] [stdout]         {
[INFO] [stdout]             let mut parameter_mode_digits = instruction_value / 100; std ::
[INFO] [stdout]             iter ::
[INFO] [stdout]             from_fn(move ||
[INFO] [stdout]             {
[INFO] [stdout]                 let parameter_mode_digit = parameter_mode_digits % 10; let
[INFO] [stdout]                 result = match parameter_mode_digit
[INFO] [stdout]                 {
[INFO] [stdout]                     0 => Ok(ParameterMode :: Position), 1 =>
[INFO] [stdout]                     Ok(ParameterMode :: Immediate), _ =>
[INFO] [stdout]                     Err(EmulatorError :: InvalidParameterMode
[INFO] [stdout]                     {
[INFO] [stdout]                         value_found : parameter_mode_digit, position :
[INFO] [stdout]                         instruction_pointer
[INFO] [stdout]                     }),
[INFO] [stdout]                 }; parameter_mode_digits /= 10; Some(result)
[INFO] [stdout]             })
[INFO] [stdout]         }; Ok((instruction, parameter_mode_iterator))
[INFO] [stdout]     } fn to_opcode(& self) -> EmulatorMemoryType
[INFO] [stdout]     {
[INFO] [stdout]         match self
[INFO] [stdout]         {
[INFO] [stdout]             OpCode :: Add => 1, OpCode :: Multiply => 2, OpCode :: Input => 3,
[INFO] [stdout]             OpCode :: Output => 4, OpCode :: JumpIfTrue => 5, OpCode ::
[INFO] [stdout]             JumpIfFalse => 6, OpCode :: LessThan => 7, OpCode :: Equals => 8,
[INFO] [stdout]             OpCode :: End => 99,
[INFO] [stdout]         }
[INFO] [stdout]     } fn
[INFO] [stdout]     handle_add(addend1 : EmulatorMemoryType, addend2 : EmulatorMemoryType,
[INFO] [stdout]     dest : & mut EmulatorMemoryType) -> Result < (), EmulatorError >
[INFO] [stdout]     { Ok({ * dest = addend1 + addend2; }) } fn
[INFO] [stdout]     handle_multiply(factor1 : EmulatorMemoryType, factor2 :
[INFO] [stdout]     EmulatorMemoryType, dest : & mut EmulatorMemoryType) -> Result < (),
[INFO] [stdout]     EmulatorError > { Ok({ * dest = factor1 * factor2; }) } fn handle_input <
[INFO] [stdout]     I : Iterator < Item = Result < EmulatorMemoryType, EmulatorError >> >
[INFO] [stdout]     (input_iter : & mut I, dest : & mut EmulatorMemoryType) -> Result < (),
[INFO] [stdout]     EmulatorError >
[INFO] [stdout]     {
[INFO] [stdout]         Ok({
[INFO] [stdout]             * dest =
[INFO] [stdout]             input_iter.next().ok_or(EmulatorError :: InputNonExistent) ? ? ;
[INFO] [stdout]         })
[INFO] [stdout]     } fn handle_output(value : EmulatorMemoryType) -> Result <
[INFO] [stdout]     EmulatorMemoryType, EmulatorError > { Ok({ value }) } fn
[INFO] [stdout]     handle_jumpiftrue(new_instruction_pointer : & mut Option <
[INFO] [stdout]     EmulatorMemoryType > , value : EmulatorMemoryType, new_address :
[INFO] [stdout]     EmulatorMemoryType) -> Result < (), EmulatorError >
[INFO] [stdout]     {
[INFO] [stdout]         Ok({
[INFO] [stdout]             if value != 0 { * new_instruction_pointer = Some(new_address); }
[INFO] [stdout]         })
[INFO] [stdout]     } fn
[INFO] [stdout]     handle_jumpiffalse(new_instruction_pointer : & mut Option <
[INFO] [stdout]     EmulatorMemoryType > , value : EmulatorMemoryType, new_address :
[INFO] [stdout]     EmulatorMemoryType) -> Result < (), EmulatorError >
[INFO] [stdout]     {
[INFO] [stdout]         Ok({
[INFO] [stdout]             if value == 0 { * new_instruction_pointer = Some(new_address); }
[INFO] [stdout]         })
[INFO] [stdout]     } fn
[INFO] [stdout]     handle_lessthan(left_side : EmulatorMemoryType, right_side :
[INFO] [stdout]     EmulatorMemoryType, dest : & mut EmulatorMemoryType) -> Result < (),
[INFO] [stdout]     EmulatorError >
[INFO] [stdout]     { Ok({ * dest = if left_side < right_side { 1 } else { 0 }; }) } fn
[INFO] [stdout]     handle_equals(left_side : EmulatorMemoryType, right_side :
[INFO] [stdout]     EmulatorMemoryType, dest : & mut EmulatorMemoryType) -> Result < (),
[INFO] [stdout]     EmulatorError >
[INFO] [stdout]     { Ok({ * dest = if left_side == right_side { 1 } else { 0 }; }) } fn
[INFO] [stdout]     handle_end() -> Result < (), EmulatorError > { Ok({}) } fn run < I :
[INFO] [stdout]     Iterator < Item = Result < EmulatorMemoryType, EmulatorError >> >
[INFO] [stdout]     (memory : & mut [EmulatorMemoryType], instruction_pointer : usize,
[INFO] [stdout]     input_iter : & mut I) -> Result <
[INFO] [stdout]     (Option < usize > , Option < EmulatorMemoryType >), EmulatorError >
[INFO] [stdout]     {
[INFO] [stdout]         let (instruction, mut parameter_mode_iterator) = OpCode ::
[INFO] [stdout]         get_current_instruction(memory, instruction_pointer) ? ; let mut
[INFO] [stdout]         new_instruction_pointer = None; match instruction
[INFO] [stdout]         {
[INFO] [stdout]             OpCode :: Add =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 3usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 3usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 3usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let addend1 : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let addend2 : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 1usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 1usize + 1] }
[INFO] [stdout]                 }; let dest : & mut EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 2usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ;
[INFO] [stdout]                         memory.get_mut(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     {
[INFO] [stdout]                         return
[INFO] [stdout]                         Err(EmulatorError :: UnexpectedParameterModeForWritable
[INFO] [stdout]                         {
[INFO] [stdout]                             value_found : 1, position : instruction_pointer + 2usize +
[INFO] [stdout]                             1,
[INFO] [stdout]                         })
[INFO] [stdout]                     }
[INFO] [stdout]                 }; let _ : () = OpCode :: handle_add(addend1, addend2, dest) ?
[INFO] [stdout]                 ; Ok((Some(instruction_pointer + 4usize), None))
[INFO] [stdout]             }, OpCode :: Multiply =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 3usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 3usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 3usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let factor1 : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let factor2 : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 1usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 1usize + 1] }
[INFO] [stdout]                 }; let dest : & mut EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 2usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ;
[INFO] [stdout]                         memory.get_mut(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     {
[INFO] [stdout]                         return
[INFO] [stdout]                         Err(EmulatorError :: UnexpectedParameterModeForWritable
[INFO] [stdout]                         {
[INFO] [stdout]                             value_found : 1, position : instruction_pointer + 2usize +
[INFO] [stdout]                             1,
[INFO] [stdout]                         })
[INFO] [stdout]                     }
[INFO] [stdout]                 }; let _ : () = OpCode ::
[INFO] [stdout]                 handle_multiply(factor1, factor2, dest) ? ;
[INFO] [stdout]                 Ok((Some(instruction_pointer + 4usize), None))
[INFO] [stdout]             }, OpCode :: Input =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 1usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 1usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 1usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let dest : & mut EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ;
[INFO] [stdout]                         memory.get_mut(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     {
[INFO] [stdout]                         return
[INFO] [stdout]                         Err(EmulatorError :: UnexpectedParameterModeForWritable
[INFO] [stdout]                         {
[INFO] [stdout]                             value_found : 1, position : instruction_pointer + 0usize +
[INFO] [stdout]                             1,
[INFO] [stdout]                         })
[INFO] [stdout]                     }
[INFO] [stdout]                 }; let _ : () = OpCode :: handle_input(input_iter, dest) ? ;
[INFO] [stdout]                 Ok((Some(instruction_pointer + 2usize), None))
[INFO] [stdout]             }, OpCode :: Output =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 1usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 1usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 1usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let value : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let output : EmulatorMemoryType = OpCode ::
[INFO] [stdout]                 handle_output(value) ? ;
[INFO] [stdout]                 Ok((Some(instruction_pointer + 2usize), Some(output)))
[INFO] [stdout]             }, OpCode :: JumpIfTrue =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 2usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 2usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 2usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let value : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let new_address : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 1usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 1usize + 1] }
[INFO] [stdout]                 }; let _ : () = OpCode ::
[INFO] [stdout]                 handle_jumpiftrue(& mut new_instruction_pointer, value,
[INFO] [stdout]                 new_address) ? ;
[INFO] [stdout]                 Ok((Some(new_instruction_pointer.map(| value | std :: convert
[INFO] [stdout]                 :: TryInto :: < usize > ::
[INFO] [stdout]                 try_into(value).or(Err(EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                 {
[INFO] [stdout]                     value_found : value, position : 0
[INFO] [stdout]                 }))).unwrap_or(Ok(instruction_pointer + 3usize)) ?), None))
[INFO] [stdout]             }, OpCode :: JumpIfFalse =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 2usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 2usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 2usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let value : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let new_address : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 1usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 1usize + 1] }
[INFO] [stdout]                 }; let _ : () = OpCode ::
[INFO] [stdout]                 handle_jumpiffalse(& mut new_instruction_pointer, value,
[INFO] [stdout]                 new_address) ? ;
[INFO] [stdout]                 Ok((Some(new_instruction_pointer.map(| value | std :: convert
[INFO] [stdout]                 :: TryInto :: < usize > ::
[INFO] [stdout]                 try_into(value).or(Err(EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                 {
[INFO] [stdout]                     value_found : value, position : 0
[INFO] [stdout]                 }))).unwrap_or(Ok(instruction_pointer + 3usize)) ?), None))
[INFO] [stdout]             }, OpCode :: LessThan =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 3usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 3usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 3usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let left_side : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let right_side : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 1usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 1usize + 1] }
[INFO] [stdout]                 }; let dest : & mut EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 2usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ;
[INFO] [stdout]                         memory.get_mut(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     {
[INFO] [stdout]                         return
[INFO] [stdout]                         Err(EmulatorError :: UnexpectedParameterModeForWritable
[INFO] [stdout]                         {
[INFO] [stdout]                             value_found : 1, position : instruction_pointer + 2usize +
[INFO] [stdout]                             1,
[INFO] [stdout]                         })
[INFO] [stdout]                     }
[INFO] [stdout]                 }; let _ : () = OpCode ::
[INFO] [stdout]                 handle_lessthan(left_side, right_side, dest) ? ;
[INFO] [stdout]                 Ok((Some(instruction_pointer + 4usize), None))
[INFO] [stdout]             }, OpCode :: Equals =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 3usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 3usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 3usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let left_side : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let right_side : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 1usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 1usize + 1] }
[INFO] [stdout]                 }; let dest : & mut EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 2usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ;
[INFO] [stdout]                         memory.get_mut(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     {
[INFO] [stdout]                         return
[INFO] [stdout]                         Err(EmulatorError :: UnexpectedParameterModeForWritable
[INFO] [stdout]                         {
[INFO] [stdout]                             value_found : 1, position : instruction_pointer + 2usize +
[INFO] [stdout]                             1,
[INFO] [stdout]                         })
[INFO] [stdout]                     }
[INFO] [stdout]                 }; let _ : () = OpCode ::
[INFO] [stdout]                 handle_equals(left_side, right_side, dest) ? ;
[INFO] [stdout]                 Ok((Some(instruction_pointer + 4usize), None))
[INFO] [stdout]             }, OpCode :: End =>
[INFO] [stdout]             { let _ : () = OpCode :: handle_end() ? ; Ok((None, None)) }
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] pub enum OpCode
[INFO] [stdout] {
[INFO] [stdout]     Add, Multiply, Input, Output, JumpIfTrue, JumpIfFalse, LessThan, Equals,
[INFO] [stdout]     End
[INFO] [stdout] } impl OpCode
[INFO] [stdout] {
[INFO] [stdout]     fn
[INFO] [stdout]     get_current_instruction(memory : & [EmulatorMemoryType],
[INFO] [stdout]     instruction_pointer : usize) -> Result <
[INFO] [stdout]     (OpCode, impl Iterator < Item = Result < ParameterMode, EmulatorError >>),
[INFO] [stdout]     EmulatorError >
[INFO] [stdout]     {
[INFO] [stdout]         let instruction_value = *
[INFO] [stdout]         memory.get(instruction_pointer).ok_or(EmulatorError ::
[INFO] [stdout]         InstructionPointerOutOfBounds { position : instruction_pointer, }) ? ;
[INFO] [stdout]         let instruction = match (instruction_value % 100)
[INFO] [stdout]         {
[INFO] [stdout]             1 => Ok(OpCode :: Add), 2 => Ok(OpCode :: Multiply), 3 =>
[INFO] [stdout]             Ok(OpCode :: Input), 4 => Ok(OpCode :: Output), 5 =>
[INFO] [stdout]             Ok(OpCode :: JumpIfTrue), 6 => Ok(OpCode :: JumpIfFalse), 7 =>
[INFO] [stdout]             Ok(OpCode :: LessThan), 8 => Ok(OpCode :: Equals), 99 =>
[INFO] [stdout]             Ok(OpCode :: End), _ =>
[INFO] [stdout]             Err(EmulatorError :: InvalidInstruction
[INFO] [stdout]             {
[INFO] [stdout]                 value_found : instruction_value, position :
[INFO] [stdout]                 instruction_pointer
[INFO] [stdout]             })
[INFO] [stdout]         } ? ; let parameter_mode_iterator =
[INFO] [stdout]         {
[INFO] [stdout]             let mut parameter_mode_digits = instruction_value / 100; std ::
[INFO] [stdout]             iter ::
[INFO] [stdout]             from_fn(move ||
[INFO] [stdout]             {
[INFO] [stdout]                 let parameter_mode_digit = parameter_mode_digits % 10; let
[INFO] [stdout]                 result = match parameter_mode_digit
[INFO] [stdout]                 {
[INFO] [stdout]                     0 => Ok(ParameterMode :: Position), 1 =>
[INFO] [stdout]                     Ok(ParameterMode :: Immediate), _ =>
[INFO] [stdout]                     Err(EmulatorError :: InvalidParameterMode
[INFO] [stdout]                     {
[INFO] [stdout]                         value_found : parameter_mode_digit, position :
[INFO] [stdout]                         instruction_pointer
[INFO] [stdout]                     }),
[INFO] [stdout]                 }; parameter_mode_digits /= 10; Some(result)
[INFO] [stdout]             })
[INFO] [stdout]         }; Ok((instruction, parameter_mode_iterator))
[INFO] [stdout]     } fn to_opcode(& self) -> EmulatorMemoryType
[INFO] [stdout]     {
[INFO] [stdout]         match self
[INFO] [stdout]         {
[INFO] [stdout]             OpCode :: Add => 1, OpCode :: Multiply => 2, OpCode :: Input => 3,
[INFO] [stdout]             OpCode :: Output => 4, OpCode :: JumpIfTrue => 5, OpCode ::
[INFO] [stdout]             JumpIfFalse => 6, OpCode :: LessThan => 7, OpCode :: Equals => 8,
[INFO] [stdout]             OpCode :: End => 99,
[INFO] [stdout]         }
[INFO] [stdout]     } fn
[INFO] [stdout]     handle_add(addend1 : EmulatorMemoryType, addend2 : EmulatorMemoryType,
[INFO] [stdout]     dest : & mut EmulatorMemoryType) -> Result < (), EmulatorError >
[INFO] [stdout]     { Ok({ * dest = addend1 + addend2; }) } fn
[INFO] [stdout]     handle_multiply(factor1 : EmulatorMemoryType, factor2 :
[INFO] [stdout]     EmulatorMemoryType, dest : & mut EmulatorMemoryType) -> Result < (),
[INFO] [stdout]     EmulatorError > { Ok({ * dest = factor1 * factor2; }) } fn handle_input <
[INFO] [stdout]     I : Iterator < Item = Result < EmulatorMemoryType, EmulatorError >> >
[INFO] [stdout]     (input_iter : & mut I, dest : & mut EmulatorMemoryType) -> Result < (),
[INFO] [stdout]     EmulatorError >
[INFO] [stdout]     {
[INFO] [stdout]         Ok({
[INFO] [stdout]             * dest =
[INFO] [stdout]             input_iter.next().ok_or(EmulatorError :: InputNonExistent) ? ? ;
[INFO] [stdout]         })
[INFO] [stdout]     } fn handle_output(value : EmulatorMemoryType) -> Result <
[INFO] [stdout]     EmulatorMemoryType, EmulatorError > { Ok({ value }) } fn
[INFO] [stdout]     handle_jumpiftrue(new_instruction_pointer : & mut Option <
[INFO] [stdout]     EmulatorMemoryType > , value : EmulatorMemoryType, new_address :
[INFO] [stdout]     EmulatorMemoryType) -> Result < (), EmulatorError >
[INFO] [stdout]     {
[INFO] [stdout]         Ok({
[INFO] [stdout]             if value != 0 { * new_instruction_pointer = Some(new_address); }
[INFO] [stdout]         })
[INFO] [stdout]     } fn
[INFO] [stdout]     handle_jumpiffalse(new_instruction_pointer : & mut Option <
[INFO] [stdout]     EmulatorMemoryType > , value : EmulatorMemoryType, new_address :
[INFO] [stdout]     EmulatorMemoryType) -> Result < (), EmulatorError >
[INFO] [stdout]     {
[INFO] [stdout]         Ok({
[INFO] [stdout]             if value == 0 { * new_instruction_pointer = Some(new_address); }
[INFO] [stdout]         })
[INFO] [stdout]     } fn
[INFO] [stdout]     handle_lessthan(left_side : EmulatorMemoryType, right_side :
[INFO] [stdout]     EmulatorMemoryType, dest : & mut EmulatorMemoryType) -> Result < (),
[INFO] [stdout]     EmulatorError >
[INFO] [stdout]     { Ok({ * dest = if left_side < right_side { 1 } else { 0 }; }) } fn
[INFO] [stdout]     handle_equals(left_side : EmulatorMemoryType, right_side :
[INFO] [stdout]     EmulatorMemoryType, dest : & mut EmulatorMemoryType) -> Result < (),
[INFO] [stdout]     EmulatorError >
[INFO] [stdout]     { Ok({ * dest = if left_side == right_side { 1 } else { 0 }; }) } fn
[INFO] [stdout]     handle_end() -> Result < (), EmulatorError > { Ok({}) } fn run < I :
[INFO] [stdout]     Iterator < Item = Result < EmulatorMemoryType, EmulatorError >> >
[INFO] [stdout]     (memory : & mut [EmulatorMemoryType], instruction_pointer : usize,
[INFO] [stdout]     input_iter : & mut I) -> Result <
[INFO] [stdout]     (Option < usize > , Option < EmulatorMemoryType >), EmulatorError >
[INFO] [stdout]     {
[INFO] [stdout]         let (instruction, mut parameter_mode_iterator) = OpCode ::
[INFO] [stdout]         get_current_instruction(memory, instruction_pointer) ? ; let mut
[INFO] [stdout]         new_instruction_pointer = None; match instruction
[INFO] [stdout]         {
[INFO] [stdout]             OpCode :: Add =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 3usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 3usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 3usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let addend1 : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let addend2 : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 1usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 1usize + 1] }
[INFO] [stdout]                 }; let dest : & mut EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 2usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ;
[INFO] [stdout]                         memory.get_mut(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     {
[INFO] [stdout]                         return
[INFO] [stdout]                         Err(EmulatorError :: UnexpectedParameterModeForWritable
[INFO] [stdout]                         {
[INFO] [stdout]                             value_found : 1, position : instruction_pointer + 2usize +
[INFO] [stdout]                             1,
[INFO] [stdout]                         })
[INFO] [stdout]                     }
[INFO] [stdout]                 }; let _ : () = OpCode :: handle_add(addend1, addend2, dest) ?
[INFO] [stdout]                 ; Ok((Some(instruction_pointer + 4usize), None))
[INFO] [stdout]             }, OpCode :: Multiply =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 3usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 3usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 3usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let factor1 : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let factor2 : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 1usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 1usize + 1] }
[INFO] [stdout]                 }; let dest : & mut EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 2usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ;
[INFO] [stdout]                         memory.get_mut(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     {
[INFO] [stdout]                         return
[INFO] [stdout]                         Err(EmulatorError :: UnexpectedParameterModeForWritable
[INFO] [stdout]                         {
[INFO] [stdout]                             value_found : 1, position : instruction_pointer + 2usize +
[INFO] [stdout]                             1,
[INFO] [stdout]                         })
[INFO] [stdout]                     }
[INFO] [stdout]                 }; let _ : () = OpCode ::
[INFO] [stdout]                 handle_multiply(factor1, factor2, dest) ? ;
[INFO] [stdout]                 Ok((Some(instruction_pointer + 4usize), None))
[INFO] [stdout]             }, OpCode :: Input =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 1usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 1usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 1usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let dest : & mut EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ;
[INFO] [stdout]                         memory.get_mut(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     {
[INFO] [stdout]                         return
[INFO] [stdout]                         Err(EmulatorError :: UnexpectedParameterModeForWritable
[INFO] [stdout]                         {
[INFO] [stdout]                             value_found : 1, position : instruction_pointer + 0usize +
[INFO] [stdout]                             1,
[INFO] [stdout]                         })
[INFO] [stdout]                     }
[INFO] [stdout]                 }; let _ : () = OpCode :: handle_input(input_iter, dest) ? ;
[INFO] [stdout]                 Ok((Some(instruction_pointer + 2usize), None))
[INFO] [stdout]             }, OpCode :: Output =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 1usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 1usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 1usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let value : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let output : EmulatorMemoryType = OpCode ::
[INFO] [stdout]                 handle_output(value) ? ;
[INFO] [stdout]                 Ok((Some(instruction_pointer + 2usize), Some(output)))
[INFO] [stdout]             }, OpCode :: JumpIfTrue =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 2usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 2usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 2usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let value : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let new_address : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 1usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 1usize + 1] }
[INFO] [stdout]                 }; let _ : () = OpCode ::
[INFO] [stdout]                 handle_jumpiftrue(& mut new_instruction_pointer, value,
[INFO] [stdout]                 new_address) ? ;
[INFO] [stdout]                 Ok((Some(new_instruction_pointer.map(| value | std :: convert
[INFO] [stdout]                 :: TryInto :: < usize > ::
[INFO] [stdout]                 try_into(value).or(Err(EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                 {
[INFO] [stdout]                     value_found : value, position : 0
[INFO] [stdout]                 }))).unwrap_or(Ok(instruction_pointer + 3usize)) ?), None))
[INFO] [stdout]             }, OpCode :: JumpIfFalse =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 2usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 2usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 2usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let value : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let new_address : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 1usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 1usize + 1] }
[INFO] [stdout]                 }; let _ : () = OpCode ::
[INFO] [stdout]                 handle_jumpiffalse(& mut new_instruction_pointer, value,
[INFO] [stdout]                 new_address) ? ;
[INFO] [stdout]                 Ok((Some(new_instruction_pointer.map(| value | std :: convert
[INFO] [stdout]                 :: TryInto :: < usize > ::
[INFO] [stdout]                 try_into(value).or(Err(EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                 {
[INFO] [stdout]                     value_found : value, position : 0
[INFO] [stdout]                 }))).unwrap_or(Ok(instruction_pointer + 3usize)) ?), None))
[INFO] [stdout]             }, OpCode :: LessThan =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 3usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 3usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 3usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let left_side : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let right_side : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 1usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 1usize + 1] }
[INFO] [stdout]                 }; let dest : & mut EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 2usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ;
[INFO] [stdout]                         memory.get_mut(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     {
[INFO] [stdout]                         return
[INFO] [stdout]                         Err(EmulatorError :: UnexpectedParameterModeForWritable
[INFO] [stdout]                         {
[INFO] [stdout]                             value_found : 1, position : instruction_pointer + 2usize +
[INFO] [stdout]                             1,
[INFO] [stdout]                         })
[INFO] [stdout]                     }
[INFO] [stdout]                 }; let _ : () = OpCode ::
[INFO] [stdout]                 handle_lessthan(left_side, right_side, dest) ? ;
[INFO] [stdout]                 Ok((Some(instruction_pointer + 4usize), None))
[INFO] [stdout]             }, OpCode :: Equals =>
[INFO] [stdout]             {
[INFO] [stdout]                 if instruction_pointer + 1 + 3usize >= memory.len()
[INFO] [stdout]                 {
[INFO] [stdout]                     return
[INFO] [stdout]                     Err(EmulatorError :: NotEnoughParametersForInstruction
[INFO] [stdout]                     {
[INFO] [stdout]                         instruction : instruction.to_opcode(), expected : 3usize,
[INFO] [stdout]                         found : instruction_pointer + 1 + 3usize - memory.len(),
[INFO] [stdout]                     })
[INFO] [stdout]                 } let left_side : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 0usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 0usize + 1] }
[INFO] [stdout]                 }; let right_side : EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 1usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ; *
[INFO] [stdout]                         memory.get(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     { memory [instruction_pointer + 1usize + 1] }
[INFO] [stdout]                 }; let dest : & mut EmulatorMemoryType = match
[INFO] [stdout]                 parameter_mode_iterator.next().unwrap() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     ParameterMode :: Position =>
[INFO] [stdout]                     {
[INFO] [stdout]                         let parameter_location = instruction_pointer + 2usize + 1;
[INFO] [stdout]                         let address = memory [parameter_location]; let error =
[INFO] [stdout]                         EmulatorError :: InvalidMemoryLocation
[INFO] [stdout]                         { value_found : address, position : parameter_location, };
[INFO] [stdout]                         let address_converted = std :: convert :: TryInto :: < usize
[INFO] [stdout]                         > :: try_into(address).or(Err(error)) ? ;
[INFO] [stdout]                         memory.get_mut(address_converted).ok_or(error) ?
[INFO] [stdout]                     }, ParameterMode :: Immediate =>
[INFO] [stdout]                     {
[INFO] [stdout]                         return
[INFO] [stdout]                         Err(EmulatorError :: UnexpectedParameterModeForWritable
[INFO] [stdout]                         {
[INFO] [stdout]                             value_found : 1, position : instruction_pointer + 2usize +
[INFO] [stdout]                             1,
[INFO] [stdout]                         })
[INFO] [stdout]                     }
[INFO] [stdout]                 }; let _ : () = OpCode ::
[INFO] [stdout]                 handle_equals(left_side, right_side, dest) ? ;
[INFO] [stdout]                 Ok((Some(instruction_pointer + 4usize), None))
[INFO] [stdout]             }, OpCode :: End =>
[INFO] [stdout]             { let _ : () = OpCode :: handle_end() ? ; Ok((None, None)) }
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.95s
[INFO] running `Command { std: "docker" "inspect" "899d1d52675a7691d2adebba2f986bd49d311a1b41c827d7e57e37fe283a0821", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "899d1d52675a7691d2adebba2f986bd49d311a1b41c827d7e57e37fe283a0821", kill_on_drop: false }`
[INFO] [stdout] 899d1d52675a7691d2adebba2f986bd49d311a1b41c827d7e57e37fe283a0821
