[INFO] cloning repository https://github.com/lreynolds18/cryptopals [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/lreynolds18/cryptopals" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flreynolds18%2Fcryptopals", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flreynolds18%2Fcryptopals'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] a144dc8081fb7cf99e7c15ea1426e03c73f78842 [INFO] checking lreynolds18/cryptopals against master#506512391b1a75ae450d36c9420978402a91abcc for pr-125384 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flreynolds18%2Fcryptopals" "/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/lreynolds18/cryptopals on toolchain 506512391b1a75ae450d36c9420978402a91abcc [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+506512391b1a75ae450d36c9420978402a91abcc" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/lreynolds18/cryptopals [INFO] finished tweaking git repo https://github.com/lreynolds18/cryptopals [INFO] tweaked toml for git repo https://github.com/lreynolds18/cryptopals written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/lreynolds18/cryptopals 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" "+506512391b1a75ae450d36c9420978402a91abcc" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded serde v1.0.64 [INFO] [stderr] Downloaded cargo_metadata v0.5.5 [INFO] [stderr] Downloaded if_chain v0.1.2 [INFO] [stderr] Downloaded serde_derive v1.0.64 [INFO] [stderr] Downloaded serde_json v1.0.19 [INFO] [stderr] Downloaded clippy v0.0.206 [INFO] [stderr] Downloaded clippy_lints v0.0.206 [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:beeedbb442662e57d416641ecc3200b38e573c25b057896194468d05594dd835" "/opt/rustwide/cargo-home/bin/cargo" "+506512391b1a75ae450d36c9420978402a91abcc" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9f763af5d34ab158290bb8abb76e9318c8f1731e79db029ca2aba78bab469f6d [INFO] running `Command { std: "docker" "start" "-a" "9f763af5d34ab158290bb8abb76e9318c8f1731e79db029ca2aba78bab469f6d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9f763af5d34ab158290bb8abb76e9318c8f1731e79db029ca2aba78bab469f6d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9f763af5d34ab158290bb8abb76e9318c8f1731e79db029ca2aba78bab469f6d", kill_on_drop: false }` [INFO] [stdout] 9f763af5d34ab158290bb8abb76e9318c8f1731e79db029ca2aba78bab469f6d [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=allow" "-e" "RUSTDOCFLAGS=--cap-lints=allow" "-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:beeedbb442662e57d416641ecc3200b38e573c25b057896194468d05594dd835" "/opt/rustwide/cargo-home/bin/cargo" "+506512391b1a75ae450d36c9420978402a91abcc" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a39eea6d1922c706ffc5c5b80d1acb20d5a662f6f94d2127e8bc994ad9a7b8c0 [INFO] running `Command { std: "docker" "start" "-a" "a39eea6d1922c706ffc5c5b80d1acb20d5a662f6f94d2127e8bc994ad9a7b8c0", kill_on_drop: false }` [INFO] [stderr] Checking libc v0.2.41 [INFO] [stderr] Checking unicode-width v0.1.5 [INFO] [stderr] Checking ansi_term v0.11.0 [INFO] [stderr] Checking vec_map v0.8.1 [INFO] [stderr] Checking strsim v0.8.0 [INFO] [stderr] Checking bitflags v1.0.4 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Checking atty v0.2.11 [INFO] [stderr] Checking clap v2.33.0 [INFO] [stderr] Checking cryptopals v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] error[E0603]: struct `Builder` is private [INFO] [stdout] --> src/set1/mod.rs:5:16 [INFO] [stdout] | [INFO] [stdout] 5 | use challenge::Builder; [INFO] [stdout] | ^^^^^^^ private struct [INFO] [stdout] | [INFO] [stdout] note: the struct `Builder` is defined here [INFO] [stdout] --> src/challenge.rs:51:1 [INFO] [stdout] | [INFO] [stdout] 51 | struct Builder { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0603]: struct `Builder` is private [INFO] [stdout] --> src/set1/mod.rs:5:16 [INFO] [stdout] | [INFO] [stdout] 5 | use challenge::Builder; [INFO] [stdout] | ^^^^^^^ private struct [INFO] [stdout] | [INFO] [stdout] note: the struct `Builder` is defined here [INFO] [stdout] --> src/challenge.rs:51:1 [INFO] [stdout] | [INFO] [stdout] 51 | struct Builder { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `header` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:337:34 [INFO] [stdout] | [INFO] [stdout] 337 | fn header(&mut self, header: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `String`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `String` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:28:34 [INFO] [stdout] | [INFO] [stdout] 28 | fn header(&mut self, header: String) -> &mut Self; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, String) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `input` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:341:32 [INFO] [stdout] | [INFO] [stdout] 341 | fn input(&mut self, input: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:29:32 [INFO] [stdout] | [INFO] [stdout] 29 | fn input(&mut self, input: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `input_file` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:345:42 [INFO] [stdout] | [INFO] [stdout] 345 | fn input_file(&mut self, input_file: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:30:42 [INFO] [stdout] | [INFO] [stdout] 30 | fn input_file(&mut self, input_file: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `input_type` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:349:42 [INFO] [stdout] | [INFO] [stdout] 349 | fn input_type(&mut self, input_type: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:31:42 [INFO] [stdout] | [INFO] [stdout] 31 | fn input_type(&mut self, input_type: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `input2` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:353:34 [INFO] [stdout] | [INFO] [stdout] 353 | fn input2(&mut self, input2: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:32:34 [INFO] [stdout] | [INFO] [stdout] 32 | fn input2(&mut self, input2: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `input2_type` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:357:44 [INFO] [stdout] | [INFO] [stdout] 357 | fn input2_type(&mut self, input2_type: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:33:44 [INFO] [stdout] | [INFO] [stdout] 33 | fn input2_type(&mut self, input2_type: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `key` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:361:28 [INFO] [stdout] | [INFO] [stdout] 361 | fn key(&mut self, key: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:34:28 [INFO] [stdout] | [INFO] [stdout] 34 | fn key(&mut self, key: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `key_type` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:365:38 [INFO] [stdout] | [INFO] [stdout] 365 | fn key_type(&mut self, key_type: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:35:38 [INFO] [stdout] | [INFO] [stdout] 35 | fn key_type(&mut self, key_type: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `expected_type` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:369:48 [INFO] [stdout] | [INFO] [stdout] 369 | fn expected_type(&mut self, expected_type: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:36:48 [INFO] [stdout] | [INFO] [stdout] 36 | fn expected_type(&mut self, expected_type: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `expected_line` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:373:48 [INFO] [stdout] | [INFO] [stdout] 373 | fn expected_line(&mut self, expected_line: i32) -> &mut Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `i32` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:38:48 [INFO] [stdout] | [INFO] [stdout] 38 | fn expected_line(&mut self, expected_line: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, i32) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `expected_size` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:377:48 [INFO] [stdout] | [INFO] [stdout] 377 | fn expected_size(&mut self, expected_size: usize) -> &mut Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `usize` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:40:48 [INFO] [stdout] | [INFO] [stdout] 40 | fn expected_size(&mut self, expected_size: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, usize) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `expected_key` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:381:46 [INFO] [stdout] | [INFO] [stdout] 381 | fn expected_key(&mut self, expected_key: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:42:46 [INFO] [stdout] | [INFO] [stdout] 42 | fn expected_key(&mut self, expected_key: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `expected_key_type` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:385:56 [INFO] [stdout] | [INFO] [stdout] 385 | fn expected_key_type(&mut self, expected_key_type: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:44:56 [INFO] [stdout] | [INFO] [stdout] 44 | fn expected_key_type(&mut self, expected_key_type: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `expected_answer` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:389:52 [INFO] [stdout] | [INFO] [stdout] 389 | fn expected_answer(&mut self, expected_answer: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:46:52 [INFO] [stdout] | [INFO] [stdout] 46 | fn expected_answer(&mut self, expected_answer: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0046]: not all trait items implemented, missing: `actual_type`, `actual_line`, `actual_size`, `actual_key`, `actual_key_type`, `actual_answer` [INFO] [stdout] --> src/challenge.rs:336:1 [INFO] [stdout] | [INFO] [stdout] 37 | fn actual_type(&mut self, actual_type: Option) -> &mut Self; [INFO] [stdout] | -------------------------------------------------------------------- `actual_type` from trait [INFO] [stdout] 38 | fn expected_line(&mut self, expected_line: Option) -> &mut Self; [INFO] [stdout] 39 | fn actual_line(&mut self, actual_line: Option) -> &mut Self; [INFO] [stdout] | ----------------------------------------------------------------- `actual_line` from trait [INFO] [stdout] 40 | fn expected_size(&mut self, expected_size: Option) -> &mut Self; [INFO] [stdout] 41 | fn actual_size(&mut self, actual_answer: Option) -> &mut Self; [INFO] [stdout] | --------------------------------------------------------------------- `actual_size` from trait [INFO] [stdout] 42 | fn expected_key(&mut self, expected_key: Option) -> &mut Self; [INFO] [stdout] 43 | fn actual_key(&mut self, actual_key: Option) -> &mut Self; [INFO] [stdout] | ------------------------------------------------------------------ `actual_key` from trait [INFO] [stdout] 44 | fn expected_key_type(&mut self, expected_key_type: Option) -> &mut Self; [INFO] [stdout] 45 | fn actual_key_type(&mut self, actual_key_type: Option) -> &mut Self; [INFO] [stdout] | ---------------------------------------------------------------------------- `actual_key_type` from trait [INFO] [stdout] 46 | fn expected_answer(&mut self, expected_answer: Option) -> &mut Self; [INFO] [stdout] 47 | fn actual_answer(&mut self, actual_answer: Option) -> &mut Self; [INFO] [stdout] | ------------------------------------------------------------------------ `actual_answer` from trait [INFO] [stdout] ... [INFO] [stdout] 336 | impl ChallengeBuilder for Builder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `actual_type`, `actual_line`, `actual_size`, `actual_key`, `actual_key_type`, `actual_answer` in implementation [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `header` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:337:34 [INFO] [stdout] | [INFO] [stdout] 337 | fn header(&mut self, header: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `String`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `String` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:28:34 [INFO] [stdout] | [INFO] [stdout] 28 | fn header(&mut self, header: String) -> &mut Self; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, String) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `input` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:341:32 [INFO] [stdout] | [INFO] [stdout] 341 | fn input(&mut self, input: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:29:32 [INFO] [stdout] | [INFO] [stdout] 29 | fn input(&mut self, input: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `input_file` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:345:42 [INFO] [stdout] | [INFO] [stdout] 345 | fn input_file(&mut self, input_file: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:30:42 [INFO] [stdout] | [INFO] [stdout] 30 | fn input_file(&mut self, input_file: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `input_type` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:349:42 [INFO] [stdout] | [INFO] [stdout] 349 | fn input_type(&mut self, input_type: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:31:42 [INFO] [stdout] | [INFO] [stdout] 31 | fn input_type(&mut self, input_type: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `input2` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:353:34 [INFO] [stdout] | [INFO] [stdout] 353 | fn input2(&mut self, input2: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:32:34 [INFO] [stdout] | [INFO] [stdout] 32 | fn input2(&mut self, input2: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `input2_type` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:357:44 [INFO] [stdout] | [INFO] [stdout] 357 | fn input2_type(&mut self, input2_type: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:33:44 [INFO] [stdout] | [INFO] [stdout] 33 | fn input2_type(&mut self, input2_type: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `key` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:361:28 [INFO] [stdout] | [INFO] [stdout] 361 | fn key(&mut self, key: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:34:28 [INFO] [stdout] | [INFO] [stdout] 34 | fn key(&mut self, key: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `key_type` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:365:38 [INFO] [stdout] | [INFO] [stdout] 365 | fn key_type(&mut self, key_type: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:35:38 [INFO] [stdout] | [INFO] [stdout] 35 | fn key_type(&mut self, key_type: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `expected_type` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:369:48 [INFO] [stdout] | [INFO] [stdout] 369 | fn expected_type(&mut self, expected_type: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:36:48 [INFO] [stdout] | [INFO] [stdout] 36 | fn expected_type(&mut self, expected_type: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `expected_line` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:373:48 [INFO] [stdout] | [INFO] [stdout] 373 | fn expected_line(&mut self, expected_line: i32) -> &mut Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `i32` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:38:48 [INFO] [stdout] | [INFO] [stdout] 38 | fn expected_line(&mut self, expected_line: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, i32) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `expected_size` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:377:48 [INFO] [stdout] | [INFO] [stdout] 377 | fn expected_size(&mut self, expected_size: usize) -> &mut Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `usize` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:40:48 [INFO] [stdout] | [INFO] [stdout] 40 | fn expected_size(&mut self, expected_size: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, usize) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `expected_key` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:381:46 [INFO] [stdout] | [INFO] [stdout] 381 | fn expected_key(&mut self, expected_key: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:42:46 [INFO] [stdout] | [INFO] [stdout] 42 | fn expected_key(&mut self, expected_key: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `expected_key_type` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:385:56 [INFO] [stdout] | [INFO] [stdout] 385 | fn expected_key_type(&mut self, expected_key_type: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:44:56 [INFO] [stdout] | [INFO] [stdout] 44 | fn expected_key_type(&mut self, expected_key_type: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `expected_answer` has an incompatible type for trait [INFO] [stdout] --> src/challenge.rs:389:52 [INFO] [stdout] | [INFO] [stdout] 389 | fn expected_answer(&mut self, expected_answer: &str) -> &mut Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | | [INFO] [stdout] | expected `Option`, found `&str` [INFO] [stdout] | help: change the parameter type to match the trait: `Option` [INFO] [stdout] | [INFO] [stdout] note: type in trait [INFO] [stdout] --> src/challenge.rs:46:52 [INFO] [stdout] | [INFO] [stdout] 46 | fn expected_answer(&mut self, expected_answer: Option) -> &mut Self; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: expected signature `fn(&mut challenge::Builder, Option) -> &mut challenge::Builder` [INFO] [stdout] found signature `fn(&mut challenge::Builder, &str) -> &mut challenge::Builder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0046]: not all trait items implemented, missing: `actual_type`, `actual_line`, `actual_size`, `actual_key`, `actual_key_type`, `actual_answer` [INFO] [stdout] --> src/challenge.rs:336:1 [INFO] [stdout] | [INFO] [stdout] 37 | fn actual_type(&mut self, actual_type: Option) -> &mut Self; [INFO] [stdout] | -------------------------------------------------------------------- `actual_type` from trait [INFO] [stdout] 38 | fn expected_line(&mut self, expected_line: Option) -> &mut Self; [INFO] [stdout] 39 | fn actual_line(&mut self, actual_line: Option) -> &mut Self; [INFO] [stdout] | ----------------------------------------------------------------- `actual_line` from trait [INFO] [stdout] 40 | fn expected_size(&mut self, expected_size: Option) -> &mut Self; [INFO] [stdout] 41 | fn actual_size(&mut self, actual_answer: Option) -> &mut Self; [INFO] [stdout] | --------------------------------------------------------------------- `actual_size` from trait [INFO] [stdout] 42 | fn expected_key(&mut self, expected_key: Option) -> &mut Self; [INFO] [stdout] 43 | fn actual_key(&mut self, actual_key: Option) -> &mut Self; [INFO] [stdout] | ------------------------------------------------------------------ `actual_key` from trait [INFO] [stdout] 44 | fn expected_key_type(&mut self, expected_key_type: Option) -> &mut Self; [INFO] [stdout] 45 | fn actual_key_type(&mut self, actual_key_type: Option) -> &mut Self; [INFO] [stdout] | ---------------------------------------------------------------------------- `actual_key_type` from trait [INFO] [stdout] 46 | fn expected_answer(&mut self, expected_answer: Option) -> &mut Self; [INFO] [stdout] 47 | fn actual_answer(&mut self, actual_answer: Option) -> &mut Self; [INFO] [stdout] | ------------------------------------------------------------------------ `actual_answer` from trait [INFO] [stdout] ... [INFO] [stdout] 336 | impl ChallengeBuilder for Builder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `actual_type`, `actual_line`, `actual_size`, `actual_key`, `actual_key_type`, `actual_answer` in implementation [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/challenge.rs:217:21 [INFO] [stdout] | [INFO] [stdout] 217 | header: "", [INFO] [stdout] | ^^- help: try using a conversion method: `.to_string()` [INFO] [stdout] | | [INFO] [stdout] | expected `String`, found `&str` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0716]: temporary value dropped while borrowed [INFO] [stdout] --> src/set1/helper.rs:121:18 [INFO] [stdout] | [INFO] [stdout] 118 | pub fn calc_key_expansion(keys: &mut Vec<&Storage>, s_box: &Vec, rcon: &Vec) { [INFO] [stdout] | - let's call the lifetime of this reference `'1` [INFO] [stdout] ... [INFO] [stdout] 121 | keys.push(&(keys[i] ^ &key_generated)); [INFO] [stdout] | -----------^^^^^^^^^^^^^^^^^^^^^^^^^^-- temporary value is freed at the end of this statement [INFO] [stdout] | | | [INFO] [stdout] | | creates a temporary value which is freed while still in use [INFO] [stdout] | argument requires that borrow lasts for `'1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/storage.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | &self.to_string() [INFO] [stdout] | ^---------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/challenge.rs:217:21 [INFO] [stdout] | [INFO] [stdout] 217 | header: "", [INFO] [stdout] | ^^- help: try using a conversion method: `.to_string()` [INFO] [stdout] | | [INFO] [stdout] | expected `String`, found `&str` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:77:15 [INFO] [stdout] | [INFO] [stdout] 77 | match self.input { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 78 | Some(s) => println!("Input: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 77 | match &self.input { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input_file` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:81:15 [INFO] [stdout] | [INFO] [stdout] 81 | match self.input_file { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 82 | Some(s) => println!("Input File: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 81 | match &self.input_file { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:85:15 [INFO] [stdout] | [INFO] [stdout] 85 | match self.input_type { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 86 | Some(s) => println!("Input Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 85 | match &self.input_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input2` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:89:15 [INFO] [stdout] | [INFO] [stdout] 89 | match self.input2 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 90 | Some(s) => println!("Input2: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 89 | match &self.input2 { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input2_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:93:15 [INFO] [stdout] | [INFO] [stdout] 93 | match self.input2_type { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 94 | Some(s) => println!("Input2 Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 93 | match &self.input2_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.key` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:97:15 [INFO] [stdout] | [INFO] [stdout] 97 | match self.key { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 98 | Some(s) => println!("Key: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 97 | match &self.key { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.key_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:101:15 [INFO] [stdout] | [INFO] [stdout] 101 | match self.key_type { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 102 | Some(s) => println!("Key Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 101 | match &self.key_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_key` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:105:15 [INFO] [stdout] | [INFO] [stdout] 105 | match self.expected_key { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 106 | Some(s) => println!("Expected Key: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 105 | match &self.expected_key { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_key` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:109:15 [INFO] [stdout] | [INFO] [stdout] 109 | match self.actual_key { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 110 | Some(s) => println!("Actual Key: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 109 | match &self.actual_key { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_key_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:113:15 [INFO] [stdout] | [INFO] [stdout] 113 | match self.expected_key_type { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 114 | Some(s) => println!("Expected Key Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 113 | match &self.expected_key_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_key_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:117:15 [INFO] [stdout] | [INFO] [stdout] 117 | match self.actual_key_type { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 118 | Some(s) => println!("Actual Key Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 117 | match &self.actual_key_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:121:15 [INFO] [stdout] | [INFO] [stdout] 121 | match self.expected_type { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 122 | Some(s) => println!("Expected Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 121 | match &self.expected_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:125:15 [INFO] [stdout] | [INFO] [stdout] 125 | match self.actual_type { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 126 | Some(s) => println!("Actual Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 125 | match &self.actual_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_answer` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:145:15 [INFO] [stdout] | [INFO] [stdout] 145 | match self.expected_answer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 146 | Some(s) => println!("Expected Answer: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 145 | match &self.expected_answer { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_answer` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:149:15 [INFO] [stdout] | [INFO] [stdout] 149 | match self.actual_answer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 150 | Some(s) => println!("Actual Answer: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 149 | match &self.actual_answer { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:178:9 [INFO] [stdout] | [INFO] [stdout] 178 | &self.input.unwrap() [INFO] [stdout] | ^------------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:178:10 [INFO] [stdout] | [INFO] [stdout] 178 | &self.input.unwrap() [INFO] [stdout] | ^^^^^^^^^^ -------- `self.input` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.input` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.input` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 178 | & as Clone>::clone(&self.input).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 178 | &self.input.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:182:9 [INFO] [stdout] | [INFO] [stdout] 182 | &self.input_file.unwrap() [INFO] [stdout] | ^------------------------ [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input_file` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:182:10 [INFO] [stdout] | [INFO] [stdout] 182 | &self.input_file.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^ -------- `self.input_file` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.input_file` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.input_file` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 182 | & as Clone>::clone(&self.input_file).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 182 | &self.input_file.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:186:9 [INFO] [stdout] | [INFO] [stdout] 186 | &self.input_type.unwrap() [INFO] [stdout] | ^------------------------ [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:186:10 [INFO] [stdout] | [INFO] [stdout] 186 | &self.input_type.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^ -------- `self.input_type` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.input_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.input_type` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 186 | & as Clone>::clone(&self.input_type).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 186 | &self.input_type.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:190:9 [INFO] [stdout] | [INFO] [stdout] 190 | &self.input2.unwrap() [INFO] [stdout] | ^-------------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input2` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:190:10 [INFO] [stdout] | [INFO] [stdout] 190 | &self.input2.unwrap() [INFO] [stdout] | ^^^^^^^^^^^ -------- `self.input2` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.input2` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.input2` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 190 | & as Clone>::clone(&self.input2).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 190 | &self.input2.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | &self.input2_type.unwrap() [INFO] [stdout] | ^------------------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input2_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:194:10 [INFO] [stdout] | [INFO] [stdout] 194 | &self.input2_type.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^ -------- `self.input2_type` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.input2_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.input2_type` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 194 | & as Clone>::clone(&self.input2_type).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 194 | &self.input2_type.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | &self.key.unwrap() [INFO] [stdout] | ^----------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.key` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:198:10 [INFO] [stdout] | [INFO] [stdout] 198 | &self.key.unwrap() [INFO] [stdout] | ^^^^^^^^ -------- `self.key` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.key` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.key` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 198 | & as Clone>::clone(&self.key).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 198 | &self.key.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:202:9 [INFO] [stdout] | [INFO] [stdout] 202 | &self.key_type.unwrap() [INFO] [stdout] | ^---------------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.key_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:202:10 [INFO] [stdout] | [INFO] [stdout] 202 | &self.key_type.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^ -------- `self.key_type` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.key_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.key_type` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 202 | & as Clone>::clone(&self.key_type).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 202 | &self.key_type.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:206:9 [INFO] [stdout] | [INFO] [stdout] 206 | &self.expected_type.unwrap() [INFO] [stdout] | ^--------------------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:206:10 [INFO] [stdout] | [INFO] [stdout] 206 | &self.expected_type.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ -------- `self.expected_type` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.expected_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.expected_type` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 206 | & as Clone>::clone(&self.expected_type).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 206 | &self.expected_type.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:210:9 [INFO] [stdout] | [INFO] [stdout] 210 | &self.expected_key_type.unwrap() [INFO] [stdout] | ^------------------------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_key_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:210:10 [INFO] [stdout] | [INFO] [stdout] 210 | &self.expected_key_type.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ -------- `self.expected_key_type` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.expected_key_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.expected_key_type` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 210 | & as Clone>::clone(&self.expected_key_type).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 210 | &self.expected_key_type.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.header` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:312:21 [INFO] [stdout] | [INFO] [stdout] 312 | header: self.header, [INFO] [stdout] | ^^^^^^^^^^^ move occurs because `self.header` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 312 | header: self.header.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:313:20 [INFO] [stdout] | [INFO] [stdout] 313 | input: self.input, [INFO] [stdout] | ^^^^^^^^^^ move occurs because `self.input` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 313 | input: self.input.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input_file` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:314:25 [INFO] [stdout] | [INFO] [stdout] 314 | input_file: self.input_file, [INFO] [stdout] | ^^^^^^^^^^^^^^^ move occurs because `self.input_file` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 314 | input_file: self.input_file.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:315:25 [INFO] [stdout] | [INFO] [stdout] 315 | input_type: self.input_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^ move occurs because `self.input_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 315 | input_type: self.input_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input2` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:316:21 [INFO] [stdout] | [INFO] [stdout] 316 | input2: self.input2, [INFO] [stdout] | ^^^^^^^^^^^ move occurs because `self.input2` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 316 | input2: self.input2.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input2_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:317:26 [INFO] [stdout] | [INFO] [stdout] 317 | input2_type: self.input2_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ move occurs because `self.input2_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 317 | input2_type: self.input2_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.key` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:318:18 [INFO] [stdout] | [INFO] [stdout] 318 | key: self.key, [INFO] [stdout] | ^^^^^^^^ move occurs because `self.key` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 318 | key: self.key.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.key_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:319:23 [INFO] [stdout] | [INFO] [stdout] 319 | key_type: self.key_type, [INFO] [stdout] | ^^^^^^^^^^^^^ move occurs because `self.key_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 319 | key_type: self.key_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:320:28 [INFO] [stdout] | [INFO] [stdout] 320 | expected_type: self.expected_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ move occurs because `self.expected_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 320 | expected_type: self.expected_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:321:26 [INFO] [stdout] | [INFO] [stdout] 321 | actual_type: self.actual_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ move occurs because `self.actual_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 321 | actual_type: self.actual_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_key` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:326:27 [INFO] [stdout] | [INFO] [stdout] 326 | expected_key: self.expected_key, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ move occurs because `self.expected_key` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 326 | expected_key: self.expected_key.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_key` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:327:25 [INFO] [stdout] | [INFO] [stdout] 327 | actual_key: self.actual_key, [INFO] [stdout] | ^^^^^^^^^^^^^^^ move occurs because `self.actual_key` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 327 | actual_key: self.actual_key.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_key_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:328:32 [INFO] [stdout] | [INFO] [stdout] 328 | expected_key_type: self.expected_key_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ move occurs because `self.expected_key_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 328 | expected_key_type: self.expected_key_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_key_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:329:30 [INFO] [stdout] | [INFO] [stdout] 329 | actual_key_type: self.actual_key_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ move occurs because `self.actual_key_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 329 | actual_key_type: self.actual_key_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_answer` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:330:30 [INFO] [stdout] | [INFO] [stdout] 330 | expected_answer: self.expected_answer, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ move occurs because `self.expected_answer` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 330 | expected_answer: self.expected_answer.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_answer` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:331:28 [INFO] [stdout] | [INFO] [stdout] 331 | actual_answer: self.actual_answer [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ move occurs because `self.actual_answer` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 331 | actual_answer: self.actual_answer.clone() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0716]: temporary value dropped while borrowed [INFO] [stdout] --> src/set1/helper.rs:121:18 [INFO] [stdout] | [INFO] [stdout] 118 | pub fn calc_key_expansion(keys: &mut Vec<&Storage>, s_box: &Vec, rcon: &Vec) { [INFO] [stdout] | - let's call the lifetime of this reference `'1` [INFO] [stdout] ... [INFO] [stdout] 121 | keys.push(&(keys[i] ^ &key_generated)); [INFO] [stdout] | -----------^^^^^^^^^^^^^^^^^^^^^^^^^^-- temporary value is freed at the end of this statement [INFO] [stdout] | | | [INFO] [stdout] | | creates a temporary value which is freed while still in use [INFO] [stdout] | argument requires that borrow lasts for `'1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 68 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0046, E0053, E0308, E0507, E0515, E0603, E0716. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0046`. [INFO] [stdout] [INFO] [stderr] error: could not compile `cryptopals` (bin "cryptopals") due to 69 previous errors [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/storage.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | &self.to_string() [INFO] [stdout] | ^---------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:77:15 [INFO] [stdout] | [INFO] [stdout] 77 | match self.input { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 78 | Some(s) => println!("Input: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 77 | match &self.input { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input_file` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:81:15 [INFO] [stdout] | [INFO] [stdout] 81 | match self.input_file { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 82 | Some(s) => println!("Input File: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 81 | match &self.input_file { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:85:15 [INFO] [stdout] | [INFO] [stdout] 85 | match self.input_type { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 86 | Some(s) => println!("Input Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 85 | match &self.input_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input2` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:89:15 [INFO] [stdout] | [INFO] [stdout] 89 | match self.input2 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 90 | Some(s) => println!("Input2: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 89 | match &self.input2 { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input2_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:93:15 [INFO] [stdout] | [INFO] [stdout] 93 | match self.input2_type { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 94 | Some(s) => println!("Input2 Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 93 | match &self.input2_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.key` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:97:15 [INFO] [stdout] | [INFO] [stdout] 97 | match self.key { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 98 | Some(s) => println!("Key: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 97 | match &self.key { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.key_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:101:15 [INFO] [stdout] | [INFO] [stdout] 101 | match self.key_type { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 102 | Some(s) => println!("Key Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 101 | match &self.key_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_key` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:105:15 [INFO] [stdout] | [INFO] [stdout] 105 | match self.expected_key { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 106 | Some(s) => println!("Expected Key: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 105 | match &self.expected_key { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_key` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:109:15 [INFO] [stdout] | [INFO] [stdout] 109 | match self.actual_key { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 110 | Some(s) => println!("Actual Key: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 109 | match &self.actual_key { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_key_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:113:15 [INFO] [stdout] | [INFO] [stdout] 113 | match self.expected_key_type { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 114 | Some(s) => println!("Expected Key Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 113 | match &self.expected_key_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_key_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:117:15 [INFO] [stdout] | [INFO] [stdout] 117 | match self.actual_key_type { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 118 | Some(s) => println!("Actual Key Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 117 | match &self.actual_key_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:121:15 [INFO] [stdout] | [INFO] [stdout] 121 | match self.expected_type { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 122 | Some(s) => println!("Expected Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 121 | match &self.expected_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_type` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:125:15 [INFO] [stdout] | [INFO] [stdout] 125 | match self.actual_type { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 126 | Some(s) => println!("Actual Type: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 125 | match &self.actual_type { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_answer` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:145:15 [INFO] [stdout] | [INFO] [stdout] 145 | match self.expected_answer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 146 | Some(s) => println!("Expected Answer: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 145 | match &self.expected_answer { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_answer` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:149:15 [INFO] [stdout] | [INFO] [stdout] 149 | match self.actual_answer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 150 | Some(s) => println!("Actual Answer: {}", s), [INFO] [stdout] | - [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `s` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 149 | match &self.actual_answer { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:178:9 [INFO] [stdout] | [INFO] [stdout] 178 | &self.input.unwrap() [INFO] [stdout] | ^------------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:178:10 [INFO] [stdout] | [INFO] [stdout] 178 | &self.input.unwrap() [INFO] [stdout] | ^^^^^^^^^^ -------- `self.input` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.input` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.input` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 178 | & as Clone>::clone(&self.input).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 178 | &self.input.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:182:9 [INFO] [stdout] | [INFO] [stdout] 182 | &self.input_file.unwrap() [INFO] [stdout] | ^------------------------ [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input_file` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:182:10 [INFO] [stdout] | [INFO] [stdout] 182 | &self.input_file.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^ -------- `self.input_file` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.input_file` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.input_file` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 182 | & as Clone>::clone(&self.input_file).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 182 | &self.input_file.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:186:9 [INFO] [stdout] | [INFO] [stdout] 186 | &self.input_type.unwrap() [INFO] [stdout] | ^------------------------ [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:186:10 [INFO] [stdout] | [INFO] [stdout] 186 | &self.input_type.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^ -------- `self.input_type` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.input_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.input_type` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 186 | & as Clone>::clone(&self.input_type).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 186 | &self.input_type.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:190:9 [INFO] [stdout] | [INFO] [stdout] 190 | &self.input2.unwrap() [INFO] [stdout] | ^-------------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input2` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:190:10 [INFO] [stdout] | [INFO] [stdout] 190 | &self.input2.unwrap() [INFO] [stdout] | ^^^^^^^^^^^ -------- `self.input2` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.input2` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.input2` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 190 | & as Clone>::clone(&self.input2).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 190 | &self.input2.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | &self.input2_type.unwrap() [INFO] [stdout] | ^------------------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input2_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:194:10 [INFO] [stdout] | [INFO] [stdout] 194 | &self.input2_type.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^ -------- `self.input2_type` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.input2_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.input2_type` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 194 | & as Clone>::clone(&self.input2_type).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 194 | &self.input2_type.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | &self.key.unwrap() [INFO] [stdout] | ^----------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.key` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:198:10 [INFO] [stdout] | [INFO] [stdout] 198 | &self.key.unwrap() [INFO] [stdout] | ^^^^^^^^ -------- `self.key` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.key` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.key` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 198 | & as Clone>::clone(&self.key).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 198 | &self.key.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:202:9 [INFO] [stdout] | [INFO] [stdout] 202 | &self.key_type.unwrap() [INFO] [stdout] | ^---------------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.key_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:202:10 [INFO] [stdout] | [INFO] [stdout] 202 | &self.key_type.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^ -------- `self.key_type` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.key_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.key_type` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 202 | & as Clone>::clone(&self.key_type).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 202 | &self.key_type.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:206:9 [INFO] [stdout] | [INFO] [stdout] 206 | &self.expected_type.unwrap() [INFO] [stdout] | ^--------------------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:206:10 [INFO] [stdout] | [INFO] [stdout] 206 | &self.expected_type.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ -------- `self.expected_type` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.expected_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.expected_type` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 206 | & as Clone>::clone(&self.expected_type).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 206 | &self.expected_type.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return reference to temporary value [INFO] [stdout] --> src/challenge.rs:210:9 [INFO] [stdout] | [INFO] [stdout] 210 | &self.expected_key_type.unwrap() [INFO] [stdout] | ^------------------------------- [INFO] [stdout] | || [INFO] [stdout] | |temporary value created here [INFO] [stdout] | returns a reference to data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_key_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:210:10 [INFO] [stdout] | [INFO] [stdout] 210 | &self.expected_key_type.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ -------- `self.expected_key_type` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] | move occurs because `self.expected_key_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `self.expected_key_type` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:929:25 [INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior [INFO] [stdout] | [INFO] [stdout] 210 | & as Clone>::clone(&self.expected_key_type).unwrap() [INFO] [stdout] | ++++++++++++++++++++++++++++++++++ + [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 210 | &self.expected_key_type.clone().unwrap() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.header` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:312:21 [INFO] [stdout] | [INFO] [stdout] 312 | header: self.header, [INFO] [stdout] | ^^^^^^^^^^^ move occurs because `self.header` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 312 | header: self.header.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:313:20 [INFO] [stdout] | [INFO] [stdout] 313 | input: self.input, [INFO] [stdout] | ^^^^^^^^^^ move occurs because `self.input` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 313 | input: self.input.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input_file` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:314:25 [INFO] [stdout] | [INFO] [stdout] 314 | input_file: self.input_file, [INFO] [stdout] | ^^^^^^^^^^^^^^^ move occurs because `self.input_file` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 314 | input_file: self.input_file.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:315:25 [INFO] [stdout] | [INFO] [stdout] 315 | input_type: self.input_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^ move occurs because `self.input_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 315 | input_type: self.input_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input2` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:316:21 [INFO] [stdout] | [INFO] [stdout] 316 | input2: self.input2, [INFO] [stdout] | ^^^^^^^^^^^ move occurs because `self.input2` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 316 | input2: self.input2.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.input2_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:317:26 [INFO] [stdout] | [INFO] [stdout] 317 | input2_type: self.input2_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ move occurs because `self.input2_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 317 | input2_type: self.input2_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.key` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:318:18 [INFO] [stdout] | [INFO] [stdout] 318 | key: self.key, [INFO] [stdout] | ^^^^^^^^ move occurs because `self.key` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 318 | key: self.key.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.key_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:319:23 [INFO] [stdout] | [INFO] [stdout] 319 | key_type: self.key_type, [INFO] [stdout] | ^^^^^^^^^^^^^ move occurs because `self.key_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 319 | key_type: self.key_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:320:28 [INFO] [stdout] | [INFO] [stdout] 320 | expected_type: self.expected_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ move occurs because `self.expected_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 320 | expected_type: self.expected_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:321:26 [INFO] [stdout] | [INFO] [stdout] 321 | actual_type: self.actual_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ move occurs because `self.actual_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 321 | actual_type: self.actual_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_key` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:326:27 [INFO] [stdout] | [INFO] [stdout] 326 | expected_key: self.expected_key, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ move occurs because `self.expected_key` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 326 | expected_key: self.expected_key.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_key` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:327:25 [INFO] [stdout] | [INFO] [stdout] 327 | actual_key: self.actual_key, [INFO] [stdout] | ^^^^^^^^^^^^^^^ move occurs because `self.actual_key` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 327 | actual_key: self.actual_key.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_key_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:328:32 [INFO] [stdout] | [INFO] [stdout] 328 | expected_key_type: self.expected_key_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ move occurs because `self.expected_key_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 328 | expected_key_type: self.expected_key_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_key_type` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:329:30 [INFO] [stdout] | [INFO] [stdout] 329 | actual_key_type: self.actual_key_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ move occurs because `self.actual_key_type` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 329 | actual_key_type: self.actual_key_type.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.expected_answer` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:330:30 [INFO] [stdout] | [INFO] [stdout] 330 | expected_answer: self.expected_answer, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ move occurs because `self.expected_answer` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 330 | expected_answer: self.expected_answer.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.actual_answer` which is behind a shared reference [INFO] [stdout] --> src/challenge.rs:331:28 [INFO] [stdout] | [INFO] [stdout] 331 | actual_answer: self.actual_answer [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ move occurs because `self.actual_answer` has type `Option`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 331 | actual_answer: self.actual_answer.clone() [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 68 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0046, E0053, E0308, E0507, E0515, E0603, E0716. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0046`. [INFO] [stdout] [INFO] [stderr] error: could not compile `cryptopals` (bin "cryptopals" test) due to 69 previous errors [INFO] running `Command { std: "docker" "inspect" "a39eea6d1922c706ffc5c5b80d1acb20d5a662f6f94d2127e8bc994ad9a7b8c0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a39eea6d1922c706ffc5c5b80d1acb20d5a662f6f94d2127e8bc994ad9a7b8c0", kill_on_drop: false }` [INFO] [stdout] a39eea6d1922c706ffc5c5b80d1acb20d5a662f6f94d2127e8bc994ad9a7b8c0