[INFO] cloning repository https://github.com/imachug/sunwalker-conductor [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/imachug/sunwalker-conductor" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fimachug%2Fsunwalker-conductor", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fimachug%2Fsunwalker-conductor'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 48e4573841f1f5f2d9a87418186abcabce866aaf [INFO] checking imachug/sunwalker-conductor/48e4573841f1f5f2d9a87418186abcabce866aaf against master#b44e14f762fd4062faeba97f8f2bc470298ec1ac for pr-135331 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fimachug%2Fsunwalker-conductor" "/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/imachug/sunwalker-conductor on toolchain b44e14f762fd4062faeba97f8f2bc470298ec1ac [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b44e14f762fd4062faeba97f8f2bc470298ec1ac" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/imachug/sunwalker-conductor [INFO] finished tweaking git repo https://github.com/imachug/sunwalker-conductor [INFO] tweaked toml for git repo https://github.com/imachug/sunwalker-conductor written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/imachug/sunwalker-conductor 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" "+b44e14f762fd4062faeba97f8f2bc470298ec1ac" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded serde_derive v1.0.139 [INFO] [stderr] Downloaded crypto-common v0.1.5 [INFO] [stderr] Downloaded clap v3.2.8 [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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+b44e14f762fd4062faeba97f8f2bc470298ec1ac" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] a38b59ab0c8305fe8e35dd5fa6deae2562fc20f35fa2224183c1116a842e375c [INFO] running `Command { std: "docker" "start" "-a" "a38b59ab0c8305fe8e35dd5fa6deae2562fc20f35fa2224183c1116a842e375c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a38b59ab0c8305fe8e35dd5fa6deae2562fc20f35fa2224183c1116a842e375c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a38b59ab0c8305fe8e35dd5fa6deae2562fc20f35fa2224183c1116a842e375c", kill_on_drop: false }` [INFO] [stdout] a38b59ab0c8305fe8e35dd5fa6deae2562fc20f35fa2224183c1116a842e375c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+b44e14f762fd4062faeba97f8f2bc470298ec1ac" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 7178573a59dc1fc243015ef40179314821b8119967c1b6f341fcd8c7fd74bde4 [INFO] running `Command { std: "docker" "start" "-a" "7178573a59dc1fc243015ef40179314821b8119967c1b6f341fcd8c7fd74bde4", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.126 [INFO] [stderr] Compiling proc-macro2 v1.0.40 [INFO] [stderr] Compiling quote v1.0.20 [INFO] [stderr] Compiling syn v1.0.98 [INFO] [stderr] Compiling typenum v1.15.0 [INFO] [stderr] Compiling cc v1.0.73 [INFO] [stderr] Compiling log v0.4.17 [INFO] [stderr] Compiling serde_derive v1.0.139 [INFO] [stderr] Checking tinyvec_macros v0.1.0 [INFO] [stderr] Compiling generic-array v0.14.5 [INFO] [stderr] Checking matches v0.1.9 [INFO] [stderr] Compiling serde v1.0.139 [INFO] [stderr] Compiling num-traits v0.2.15 [INFO] [stderr] Checking unicode-bidi v0.3.8 [INFO] [stderr] Compiling futures-core v0.3.21 [INFO] [stderr] Compiling indexmap v1.9.1 [INFO] [stderr] Checking tinyvec v1.6.0 [INFO] [stderr] Checking form_urlencoded v1.0.1 [INFO] [stderr] Checking pin-project-lite v0.2.9 [INFO] [stderr] Compiling rustls v0.20.6 [INFO] [stderr] Compiling futures-util v0.3.21 [INFO] [stderr] Checking cpufeatures v0.2.2 [INFO] [stderr] Compiling paste v1.0.7 [INFO] [stderr] Compiling heck v0.4.0 [INFO] [stderr] Checking futures-sink v0.3.21 [INFO] [stderr] Checking utf-8 v0.7.6 [INFO] [stderr] Checking base64 v0.13.0 [INFO] [stderr] Compiling anyhow v1.0.58 [INFO] [stderr] Checking os_str_bytes v6.1.0 [INFO] [stderr] Checking aho-corasick v0.7.18 [INFO] [stderr] Checking strsim v0.10.0 [INFO] [stderr] Checking xml-rs v0.8.4 [INFO] [stderr] Checking textwrap v0.15.0 [INFO] [stderr] Checking regex-syntax v0.6.27 [INFO] [stderr] Checking termcolor v1.1.3 [INFO] [stderr] Checking clap_lex v0.2.4 [INFO] [stderr] Checking rmp v0.8.11 [INFO] [stderr] Compiling ring v0.16.20 [INFO] [stderr] Checking unicode-normalization v0.1.21 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Checking getrandom v0.2.7 [INFO] [stderr] Checking parking_lot_core v0.9.3 [INFO] [stderr] Checking signal-hook-registry v1.4.0 [INFO] [stderr] Checking num_cpus v1.13.1 [INFO] [stderr] Checking mio v0.8.4 [INFO] [stderr] Checking socket2 v0.4.4 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking parking_lot v0.12.1 [INFO] [stderr] Checking rand_core v0.6.3 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking crypto-common v0.1.5 [INFO] [stderr] Checking block-buffer v0.10.2 [INFO] [stderr] Checking idna v0.2.3 [INFO] [stderr] Checking digest v0.10.3 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking sha-1 v0.10.0 [INFO] [stderr] Checking url v2.2.2 [INFO] [stderr] Checking regex v1.6.0 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Compiling thiserror-impl v1.0.31 [INFO] [stderr] Compiling futures-macro v0.3.21 [INFO] [stderr] Compiling tokio-macros v1.8.0 [INFO] [stderr] Compiling clap_derive v3.2.7 [INFO] [stderr] Checking tokio v1.19.2 [INFO] [stderr] Checking webpki v0.22.0 [INFO] [stderr] Checking sct v0.7.0 [INFO] [stderr] Checking thiserror v1.0.31 [INFO] [stderr] Checking tungstenite v0.17.2 [INFO] [stderr] Checking clap v3.2.8 [INFO] [stderr] Checking tokio-tungstenite v0.17.1 [INFO] [stderr] Checking toml v0.5.9 [INFO] [stderr] Checking serde-xml-rs v0.5.1 [INFO] [stderr] Checking rmp-serde v1.1.0 [INFO] [stderr] Checking sunwalker-conductor v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] error: expected identifier, found keyword `pub` [INFO] [stdout] --> src/polygon/converter.rs:258:9 [INFO] [stdout] | [INFO] [stdout] 257 | programs.insert(name, program::CachedProgram { [INFO] [stdout] | ---------------------- while parsing this struct [INFO] [stdout] 258 | pub package: String, [INFO] [stdout] | ^^^ expected identifier, found keyword [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found keyword `pub` [INFO] [stdout] --> src/polygon/converter.rs:259:9 [INFO] [stdout] | [INFO] [stdout] 257 | programs.insert(name, program::CachedProgram { [INFO] [stdout] | ---------------------- while parsing this struct [INFO] [stdout] 258 | pub package: String, [INFO] [stdout] 259 | pub prerequisites: Vec, [INFO] [stdout] | ^^^ expected identifier, found keyword [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found keyword `pub` [INFO] [stdout] --> src/polygon/converter.rs:258:9 [INFO] [stdout] | [INFO] [stdout] 257 | programs.insert(name, program::CachedProgram { [INFO] [stdout] | ---------------------- while parsing this struct [INFO] [stdout] 258 | pub package: String, [INFO] [stdout] | ^^^ expected identifier, found keyword [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found keyword `pub` [INFO] [stdout] --> src/polygon/converter.rs:259:9 [INFO] [stdout] | [INFO] [stdout] 257 | programs.insert(name, program::CachedProgram { [INFO] [stdout] | ---------------------- while parsing this struct [INFO] [stdout] 258 | pub package: String, [INFO] [stdout] 259 | pub prerequisites: Vec, [INFO] [stdout] | ^^^ expected identifier, found keyword [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Error::*` [INFO] [stdout] --> src/errors.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use Error::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Error::*` [INFO] [stdout] --> src/errors.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use Error::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the feature `let_else` has been stable since 1.65.0 and no longer requires an attribute to enable [INFO] [stdout] --> src/main.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(let_else, try_blocks, unzip_option)] [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(stable_features)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the feature `unzip_option` has been stable since 1.66.0 and no longer requires an attribute to enable [INFO] [stdout] --> src/main.rs:1:34 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(let_else, try_blocks, unzip_option)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/invoker.rs:29:33 [INFO] [stdout] | [INFO] [stdout] 29 | async fn update_mode(&self, message: message::i2c::UpdateMode) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/invoker.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | message: message::i2c::NotifyCompilationStatus, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the feature `let_else` has been stable since 1.65.0 and no longer requires an attribute to enable [INFO] [stdout] --> src/main.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(let_else, try_blocks, unzip_option)] [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(stable_features)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the feature `unzip_option` has been stable since 1.66.0 and no longer requires an attribute to enable [INFO] [stdout] --> src/main.rs:1:34 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(let_else, try_blocks, unzip_option)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/invoker.rs:40:40 [INFO] [stdout] | [INFO] [stdout] 40 | async fn notify_test_status(&self, message: message::i2c::NotifyTestStatus) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/invoker.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | message: message::i2c::NotifySubmissionError, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/invoker.rs:51:34 [INFO] [stdout] | [INFO] [stdout] 51 | async fn request_file(&self, message: message::i2c::RequestFile) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/invoker.rs:29:33 [INFO] [stdout] | [INFO] [stdout] 29 | async fn update_mode(&self, message: message::i2c::UpdateMode) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/invoker.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | message: message::i2c::NotifyCompilationStatus, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/invoker.rs:40:40 [INFO] [stdout] | [INFO] [stdout] 40 | async fn notify_test_status(&self, message: message::i2c::NotifyTestStatus) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/invoker.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | message: message::i2c::NotifySubmissionError, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `message` [INFO] [stdout] --> src/invoker.rs:51:34 [INFO] [stdout] | [INFO] [stdout] 51 | async fn request_file(&self, message: message::i2c::RequestFile) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/polygon/converter.rs:260:20 [INFO] [stdout] | [INFO] [stdout] 260 | argv: vec![binary_name] [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[E0063]: missing fields `package` and `prerequisites` in initializer of `CachedProgram` [INFO] [stdout] --> src/polygon/converter.rs:257:27 [INFO] [stdout] | [INFO] [stdout] 257 | programs.insert(name, program::CachedProgram { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ missing `package` and `prerequisites` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/polygon/converter.rs:260:20 [INFO] [stdout] | [INFO] [stdout] 260 | argv: vec![binary_name] [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[E0063]: missing fields `package` and `prerequisites` in initializer of `CachedProgram` [INFO] [stdout] --> src/polygon/converter.rs:257:27 [INFO] [stdout] | [INFO] [stdout] 257 | programs.insert(name, program::CachedProgram { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ missing `package` and `prerequisites` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/archive_store.rs:18:30 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn store_blob(&self, data: Vec) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/archive_store.rs:18:30 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn store_blob(&self, data: Vec) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `problem` [INFO] [stdout] --> src/polygon/converter.rs:235:9 [INFO] [stdout] | [INFO] [stdout] 235 | let problem = config::ProblemRevision { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_problem` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `problem` [INFO] [stdout] --> src/polygon/converter.rs:235:9 [INFO] [stdout] | [INFO] [stdout] 235 | let problem = config::ProblemRevision { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_problem` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `judging.testset` which is behind a shared reference [INFO] [stdout] --> src/polygon/tests.rs:96:20 [INFO] [stdout] | [INFO] [stdout] 96 | for testset in judging.testset { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `judging.testset` moved due to this implicit call to `.into_iter()` [INFO] [stdout] | move occurs because `judging.testset` has type `Vec`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `into_iter` takes ownership of the receiver `self`, which moves `judging.testset` [INFO] [stdout] --> /rustc/b44e14f762fd4062faeba97f8f2bc470298ec1ac/library/core/src/iter/traits/collect.rs:313:18 [INFO] [stdout] help: consider iterating over a slice of the `Vec`'s content to avoid moving into the `for` loop [INFO] [stdout] | [INFO] [stdout] 96 | for testset in &judging.testset { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `test.group` which is behind a shared reference [INFO] [stdout] --> src/polygon/tests.rs:117:24 [INFO] [stdout] | [INFO] [stdout] 117 | .entry(test.group) [INFO] [stdout] | ^^^^^^^^^^ move occurs because `test.group` has type `std::string::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] 117 | .entry(test.group.clone()) [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `dependencies.dependency` which is behind a shared reference [INFO] [stdout] --> src/polygon/tests.rs:205:35 [INFO] [stdout] | [INFO] [stdout] 205 | for dependency in dependencies.dependency { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `dependencies.dependency` moved due to this implicit call to `.into_iter()` [INFO] [stdout] | move occurs because `dependencies.dependency` has type `Vec`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider iterating over a slice of the `Vec`'s content to avoid moving into the `for` loop [INFO] [stdout] | [INFO] [stdout] 205 | for dependency in &dependencies.dependency { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `problem_xml.judging.testset` which is behind a shared reference [INFO] [stdout] --> src/polygon/tests.rs:245:20 [INFO] [stdout] | [INFO] [stdout] 245 | for testset in problem_xml.judging.testset { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `problem_xml.judging.testset` moved due to this implicit call to `.into_iter()` [INFO] [stdout] | move occurs because `problem_xml.judging.testset` has type `Vec`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `into_iter` takes ownership of the receiver `self`, which moves `problem_xml.judging.testset` [INFO] [stdout] --> /rustc/b44e14f762fd4062faeba97f8f2bc470298ec1ac/library/core/src/iter/traits/collect.rs:313:18 [INFO] [stdout] help: consider iterating over a slice of the `Vec`'s content to avoid moving into the `for` loop [INFO] [stdout] | [INFO] [stdout] 245 | for testset in &problem_xml.judging.testset { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0597]: `pattern.name` does not live long enough [INFO] [stdout] --> src/polygon/tests.rs:264:21 [INFO] [stdout] | [INFO] [stdout] 255 | for pattern in testset.path_pattern { [INFO] [stdout] | ------- binding `pattern` declared here [INFO] [stdout] ... [INFO] [stdout] 262 | if path_patterns [INFO] [stdout] | ------------- borrow later used here [INFO] [stdout] 263 | .insert( [INFO] [stdout] 264 | &pattern.name, [INFO] [stdout] | ^^^^^^^^^^^^^ borrowed value does not live long enough [INFO] [stdout] ... [INFO] [stdout] 271 | } [INFO] [stdout] | - `pattern.name` dropped here while still borrowed [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/problem/strategy_format.rs:77:25 [INFO] [stdout] | [INFO] [stdout] 77 | let name = it [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `text` [INFO] [stdout] --> src/problem/strategy_format.rs:92:33 [INFO] [stdout] | [INFO] [stdout] 92 | if let Some(text) = it.next() { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_text` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `name` [INFO] [stdout] --> src/problem/strategy_format.rs:23:61 [INFO] [stdout] | [INFO] [stdout] 20 | if let Some((name, lines)) = current_block.take() { [INFO] [stdout] | ---- move occurs because `name` has type `std::string::String`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 23 | .push(parse_block(name, lines).with_context(|| format!("In block {name}"))?); [INFO] [stdout] | ---- ^^ ---- borrow occurs due to use in closure [INFO] [stdout] | | | [INFO] [stdout] | value moved here value borrowed here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `parse_block` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> src/problem/strategy_format.rs:114:22 [INFO] [stdout] | [INFO] [stdout] 114 | fn parse_block(name: String, lines: Vec<&str>) -> Result { [INFO] [stdout] | ----------- ^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 23 | .push(parse_block(name.clone(), lines).with_context(|| format!("In block {name}"))?); [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0499]: cannot borrow `current_block` as mutable more than once at a time [INFO] [stdout] --> src/problem/strategy_format.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 19 | let mut commit_current_block = || -> Result<()> { [INFO] [stdout] | ---------------- first mutable borrow occurs here [INFO] [stdout] 20 | if let Some((name, lines)) = current_block.take() { [INFO] [stdout] | ------------- first borrow occurs due to use of `current_block` in closure [INFO] [stdout] ... [INFO] [stdout] 33 | current_block [INFO] [stdout] | ^^^^^^^^^^^^^ second mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 109 | commit_current_block()?; [INFO] [stdout] | -------------------- first borrow later used here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `current_block` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:49:24 [INFO] [stdout] | [INFO] [stdout] 19 | let mut commit_current_block = || -> Result<()> { [INFO] [stdout] | ---------------- mutable borrow occurs here [INFO] [stdout] 20 | if let Some((name, lines)) = current_block.take() { [INFO] [stdout] | ------------- first borrow occurs due to use of `current_block` in closure [INFO] [stdout] ... [INFO] [stdout] 49 | if current_block.is_some() || !strategy_format.blocks.is_empty() { [INFO] [stdout] | ^^^^^^^^^^^^^ immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 109 | commit_current_block()?; [INFO] [stdout] | -------------------- mutable borrow later used here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `strategy_format.blocks` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:49:52 [INFO] [stdout] | [INFO] [stdout] 19 | let mut commit_current_block = || -> Result<()> { [INFO] [stdout] | ---------------- mutable borrow occurs here [INFO] [stdout] 20 | if let Some((name, lines)) = current_block.take() { [INFO] [stdout] 21 | / strategy_format [INFO] [stdout] 22 | | .blocks [INFO] [stdout] | |_______________________- first borrow occurs due to use of `strategy_format.blocks` in closure [INFO] [stdout] ... [INFO] [stdout] 49 | if current_block.is_some() || !strategy_format.blocks.is_empty() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 109 | commit_current_block()?; [INFO] [stdout] | -------------------- mutable borrow later used here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0506]: cannot assign to `current_block` because it is borrowed [INFO] [stdout] --> src/problem/strategy_format.rs:98:21 [INFO] [stdout] | [INFO] [stdout] 19 | let mut commit_current_block = || -> Result<()> { [INFO] [stdout] | ---------------- `current_block` is borrowed here [INFO] [stdout] 20 | if let Some((name, lines)) = current_block.take() { [INFO] [stdout] | ------------- borrow occurs due to use in closure [INFO] [stdout] ... [INFO] [stdout] 98 | current_block = Some((name, Vec::new())); [INFO] [stdout] | ^^^^^^^^^^^^^ `current_block` is assigned to here but it was already borrowed [INFO] [stdout] ... [INFO] [stdout] 109 | commit_current_block()?; [INFO] [stdout] | -------------------- borrow later used here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `text` [INFO] [stdout] --> src/problem/strategy_format.rs:150:29 [INFO] [stdout] | [INFO] [stdout] 150 | if let Some(text) = it.next() { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_text` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `as_word` [INFO] [stdout] --> src/problem/strategy_format.rs:181:21 [INFO] [stdout] | [INFO] [stdout] 181 | let as_word = "as".to_string(); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_as_word` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `as_word` [INFO] [stdout] --> src/problem/strategy_format.rs:183:35 [INFO] [stdout] | [INFO] [stdout] 183 | Token::String(as_word) => {} [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_as_word` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream_to` [INFO] [stdout] --> src/problem/strategy_format.rs:282:39 [INFO] [stdout] | [INFO] [stdout] 282 | Token::RedirectTo(stream, stream_to) => { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream_to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `judging.testset` which is behind a shared reference [INFO] [stdout] --> src/polygon/tests.rs:96:20 [INFO] [stdout] | [INFO] [stdout] 96 | for testset in judging.testset { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `judging.testset` moved due to this implicit call to `.into_iter()` [INFO] [stdout] | move occurs because `judging.testset` has type `Vec`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `into_iter` takes ownership of the receiver `self`, which moves `judging.testset` [INFO] [stdout] --> /rustc/b44e14f762fd4062faeba97f8f2bc470298ec1ac/library/core/src/iter/traits/collect.rs:313:18 [INFO] [stdout] help: consider iterating over a slice of the `Vec`'s content to avoid moving into the `for` loop [INFO] [stdout] | [INFO] [stdout] 96 | for testset in &judging.testset { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `test.group` which is behind a shared reference [INFO] [stdout] --> src/polygon/tests.rs:117:24 [INFO] [stdout] | [INFO] [stdout] 117 | .entry(test.group) [INFO] [stdout] | ^^^^^^^^^^ move occurs because `test.group` has type `std::string::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] 117 | .entry(test.group.clone()) [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `dependencies.dependency` which is behind a shared reference [INFO] [stdout] --> src/polygon/tests.rs:205:35 [INFO] [stdout] | [INFO] [stdout] 205 | for dependency in dependencies.dependency { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `dependencies.dependency` moved due to this implicit call to `.into_iter()` [INFO] [stdout] | move occurs because `dependencies.dependency` has type `Vec`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider iterating over a slice of the `Vec`'s content to avoid moving into the `for` loop [INFO] [stdout] | [INFO] [stdout] 205 | for dependency in &dependencies.dependency { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow `lines` as mutable, as it is not declared as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:118:25 [INFO] [stdout] | [INFO] [stdout] 118 | let shell_command = lines.pop().context("Block contains no content")?; [INFO] [stdout] | ^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 114 | fn parse_block(name: String, mut lines: Vec<&str>) -> Result { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `location` [INFO] [stdout] --> src/problem/strategy_format.rs:224:44 [INFO] [stdout] | [INFO] [stdout] 197 | let location = match location { [INFO] [stdout] | -------- move occurs because `location` has type `std::string::String`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 215 | location, [INFO] [stdout] | -------- value moved here [INFO] [stdout] ... [INFO] [stdout] 224 | bail!("Target location {location:?} is mapped twice"); [INFO] [stdout] | ^^^^^^^^^^^^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::private::format_args` which comes from the expansion of the macro `bail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 215 | location.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `it` [INFO] [stdout] --> src/problem/strategy_format.rs:253:34 [INFO] [stdout] | [INFO] [stdout] 248 | let mut it = tokens.into_iter(); [INFO] [stdout] | ------ move occurs because `it` has type `std::vec::IntoIter`, which does not implement the `Copy` trait [INFO] [stdout] 249 | [INFO] [stdout] 250 | for token in it { [INFO] [stdout] | -- `it` moved due to this implicit call to `.into_iter()` [INFO] [stdout] ... [INFO] [stdout] 253 | let next_token = it.next().with_context(|| { [INFO] [stdout] | ^^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] = note: a for loop advances the iterator for you, the result is stored in `token` [INFO] [stdout] note: `into_iter` takes ownership of the receiver `self`, which moves `it` [INFO] [stdout] --> /rustc/b44e14f762fd4062faeba97f8f2bc470298ec1ac/library/core/src/iter/traits/collect.rs:313:18 [INFO] [stdout] help: if you want to call `next` on a iterator within the loop, consider using `while let` [INFO] [stdout] | [INFO] [stdout] 250 | while let Some(token) = it.next() { [INFO] [stdout] | ~~~~~~~~~~~~~~~ ~~~ +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value [INFO] [stdout] --> src/problem/strategy_format.rs:276:56 [INFO] [stdout] | [INFO] [stdout] 257 | let file = match next_token { [INFO] [stdout] | ---- move occurs because `file` has type `strategy::Pattern`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 274 | *stream_object = Some(file); [INFO] [stdout] | ---- value moved here [INFO] [stdout] 275 | [INFO] [stdout] 276 | if let strategy::Pattern::VariableText(s) = file { [INFO] [stdout] | ^ value used here after move [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `block.stdin` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:290:46 [INFO] [stdout] | [INFO] [stdout] 284 | StandardStream::Stdin => &mut block.stdin, [INFO] [stdout] | ---------------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 289 | *stream_object = match stream { [INFO] [stdout] | -------------- mutable borrow later used here [INFO] [stdout] 290 | StandardStream::Stdin => &block.stdin, [INFO] [stdout] | ^^^^^^^^^^^^ immutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `block.stdout` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:291:47 [INFO] [stdout] | [INFO] [stdout] 285 | StandardStream::Stdout => &mut block.stdout, [INFO] [stdout] | ----------------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 289 | *stream_object = match stream { [INFO] [stdout] | -------------- mutable borrow later used here [INFO] [stdout] 290 | StandardStream::Stdin => &block.stdin, [INFO] [stdout] 291 | StandardStream::Stdout => &block.stdout, [INFO] [stdout] | ^^^^^^^^^^^^^ immutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `block.stderr` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:292:47 [INFO] [stdout] | [INFO] [stdout] 286 | StandardStream::Stderr => &mut block.stderr, [INFO] [stdout] | ----------------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 289 | *stream_object = match stream { [INFO] [stdout] | -------------- mutable borrow later used here [INFO] [stdout] ... [INFO] [stdout] 292 | StandardStream::Stderr => &block.stderr, [INFO] [stdout] | ^^^^^^^^^^^^^ immutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `problem_xml.judging.testset` which is behind a shared reference [INFO] [stdout] --> src/polygon/tests.rs:245:20 [INFO] [stdout] | [INFO] [stdout] 245 | for testset in problem_xml.judging.testset { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `problem_xml.judging.testset` moved due to this implicit call to `.into_iter()` [INFO] [stdout] | move occurs because `problem_xml.judging.testset` has type `Vec`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `into_iter` takes ownership of the receiver `self`, which moves `problem_xml.judging.testset` [INFO] [stdout] --> /rustc/b44e14f762fd4062faeba97f8f2bc470298ec1ac/library/core/src/iter/traits/collect.rs:313:18 [INFO] [stdout] help: consider iterating over a slice of the `Vec`'s content to avoid moving into the `for` loop [INFO] [stdout] | [INFO] [stdout] 245 | for testset in &problem_xml.judging.testset { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0597]: `pattern.name` does not live long enough [INFO] [stdout] --> src/polygon/tests.rs:264:21 [INFO] [stdout] | [INFO] [stdout] 255 | for pattern in testset.path_pattern { [INFO] [stdout] | ------- binding `pattern` declared here [INFO] [stdout] ... [INFO] [stdout] 262 | if path_patterns [INFO] [stdout] | ------------- borrow later used here [INFO] [stdout] 263 | .insert( [INFO] [stdout] 264 | &pattern.name, [INFO] [stdout] | ^^^^^^^^^^^^^ borrowed value does not live long enough [INFO] [stdout] ... [INFO] [stdout] 271 | } [INFO] [stdout] | - `pattern.name` dropped here while still borrowed [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/problem/strategy_format.rs:77:25 [INFO] [stdout] | [INFO] [stdout] 77 | let name = it [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `text` [INFO] [stdout] --> src/problem/strategy_format.rs:92:33 [INFO] [stdout] | [INFO] [stdout] 92 | if let Some(text) = it.next() { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_text` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `name` [INFO] [stdout] --> src/problem/strategy_format.rs:23:61 [INFO] [stdout] | [INFO] [stdout] 20 | if let Some((name, lines)) = current_block.take() { [INFO] [stdout] | ---- move occurs because `name` has type `std::string::String`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 23 | .push(parse_block(name, lines).with_context(|| format!("In block {name}"))?); [INFO] [stdout] | ---- ^^ ---- borrow occurs due to use in closure [INFO] [stdout] | | | [INFO] [stdout] | value moved here value borrowed here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `parse_block` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> src/problem/strategy_format.rs:114:22 [INFO] [stdout] | [INFO] [stdout] 114 | fn parse_block(name: String, lines: Vec<&str>) -> Result { [INFO] [stdout] | ----------- ^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 23 | .push(parse_block(name.clone(), lines).with_context(|| format!("In block {name}"))?); [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow `result` as mutable, as it is not declared as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:478:9 [INFO] [stdout] | [INFO] [stdout] 478 | let result: Vec = Vec::new(); [INFO] [stdout] | ^^^^^^ not mutable [INFO] [stdout] ... [INFO] [stdout] 483 | 'a' => result.push(b'\x07'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 484 | 'b' => result.push(b'\x08'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 485 | 'e' => result.push(b'\x1b'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 486 | 'f' => result.push(b'\x0c'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 487 | 'n' => result.push(b'\n'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 488 | 'r' => result.push(b'\r'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 489 | 't' => result.push(b'\t'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 490 | 'v' => result.push(b'\x0b'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 491 | 'x' => result.push(u8::from_str_radix(&s[1..], 16).unwrap()), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = note: ...and 1 other attempted mutable borrows [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 478 | let mut result: Vec = Vec::new(); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0499]: cannot borrow `current_block` as mutable more than once at a time [INFO] [stdout] --> src/problem/strategy_format.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 19 | let mut commit_current_block = || -> Result<()> { [INFO] [stdout] | ---------------- first mutable borrow occurs here [INFO] [stdout] 20 | if let Some((name, lines)) = current_block.take() { [INFO] [stdout] | ------------- first borrow occurs due to use of `current_block` in closure [INFO] [stdout] ... [INFO] [stdout] 33 | current_block [INFO] [stdout] | ^^^^^^^^^^^^^ second mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 109 | commit_current_block()?; [INFO] [stdout] | -------------------- first borrow later used here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `current_block` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:49:24 [INFO] [stdout] | [INFO] [stdout] 19 | let mut commit_current_block = || -> Result<()> { [INFO] [stdout] | ---------------- mutable borrow occurs here [INFO] [stdout] 20 | if let Some((name, lines)) = current_block.take() { [INFO] [stdout] | ------------- first borrow occurs due to use of `current_block` in closure [INFO] [stdout] ... [INFO] [stdout] 49 | if current_block.is_some() || !strategy_format.blocks.is_empty() { [INFO] [stdout] | ^^^^^^^^^^^^^ immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 109 | commit_current_block()?; [INFO] [stdout] | -------------------- mutable borrow later used here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `strategy_format.blocks` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:49:52 [INFO] [stdout] | [INFO] [stdout] 19 | let mut commit_current_block = || -> Result<()> { [INFO] [stdout] | ---------------- mutable borrow occurs here [INFO] [stdout] 20 | if let Some((name, lines)) = current_block.take() { [INFO] [stdout] 21 | / strategy_format [INFO] [stdout] 22 | | .blocks [INFO] [stdout] | |_______________________- first borrow occurs due to use of `strategy_format.blocks` in closure [INFO] [stdout] ... [INFO] [stdout] 49 | if current_block.is_some() || !strategy_format.blocks.is_empty() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 109 | commit_current_block()?; [INFO] [stdout] | -------------------- mutable borrow later used here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0506]: cannot assign to `current_block` because it is borrowed [INFO] [stdout] --> src/problem/strategy_format.rs:98:21 [INFO] [stdout] | [INFO] [stdout] 19 | let mut commit_current_block = || -> Result<()> { [INFO] [stdout] | ---------------- `current_block` is borrowed here [INFO] [stdout] 20 | if let Some((name, lines)) = current_block.take() { [INFO] [stdout] | ------------- borrow occurs due to use in closure [INFO] [stdout] ... [INFO] [stdout] 98 | current_block = Some((name, Vec::new())); [INFO] [stdout] | ^^^^^^^^^^^^^ `current_block` is assigned to here but it was already borrowed [INFO] [stdout] ... [INFO] [stdout] 109 | commit_current_block()?; [INFO] [stdout] | -------------------- borrow later used here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `text` [INFO] [stdout] --> src/problem/strategy_format.rs:150:29 [INFO] [stdout] | [INFO] [stdout] 150 | if let Some(text) = it.next() { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_text` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `as_word` [INFO] [stdout] --> src/problem/strategy_format.rs:181:21 [INFO] [stdout] | [INFO] [stdout] 181 | let as_word = "as".to_string(); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_as_word` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `as_word` [INFO] [stdout] --> src/problem/strategy_format.rs:183:35 [INFO] [stdout] | [INFO] [stdout] 183 | Token::String(as_word) => {} [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_as_word` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream_to` [INFO] [stdout] --> src/problem/strategy_format.rs:282:39 [INFO] [stdout] | [INFO] [stdout] 282 | Token::RedirectTo(stream, stream_to) => { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream_to` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow `lines` as mutable, as it is not declared as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:118:25 [INFO] [stdout] | [INFO] [stdout] 118 | let shell_command = lines.pop().context("Block contains no content")?; [INFO] [stdout] | ^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 114 | fn parse_block(name: String, mut lines: Vec<&str>) -> Result { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `location` [INFO] [stdout] --> src/problem/strategy_format.rs:224:44 [INFO] [stdout] | [INFO] [stdout] 197 | let location = match location { [INFO] [stdout] | -------- move occurs because `location` has type `std::string::String`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 215 | location, [INFO] [stdout] | -------- value moved here [INFO] [stdout] ... [INFO] [stdout] 224 | bail!("Target location {location:?} is mapped twice"); [INFO] [stdout] | ^^^^^^^^^^^^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::private::format_args` which comes from the expansion of the macro `bail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 215 | location.clone(), [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `it` [INFO] [stdout] --> src/problem/strategy_format.rs:253:34 [INFO] [stdout] | [INFO] [stdout] 248 | let mut it = tokens.into_iter(); [INFO] [stdout] | ------ move occurs because `it` has type `std::vec::IntoIter`, which does not implement the `Copy` trait [INFO] [stdout] 249 | [INFO] [stdout] 250 | for token in it { [INFO] [stdout] | -- `it` moved due to this implicit call to `.into_iter()` [INFO] [stdout] ... [INFO] [stdout] 253 | let next_token = it.next().with_context(|| { [INFO] [stdout] | ^^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] = note: a for loop advances the iterator for you, the result is stored in `token` [INFO] [stdout] note: `into_iter` takes ownership of the receiver `self`, which moves `it` [INFO] [stdout] --> /rustc/b44e14f762fd4062faeba97f8f2bc470298ec1ac/library/core/src/iter/traits/collect.rs:313:18 [INFO] [stdout] help: if you want to call `next` on a iterator within the loop, consider using `while let` [INFO] [stdout] | [INFO] [stdout] 250 | while let Some(token) = it.next() { [INFO] [stdout] | ~~~~~~~~~~~~~~~ ~~~ +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value [INFO] [stdout] --> src/problem/strategy_format.rs:276:56 [INFO] [stdout] | [INFO] [stdout] 257 | let file = match next_token { [INFO] [stdout] | ---- move occurs because `file` has type `strategy::Pattern`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 274 | *stream_object = Some(file); [INFO] [stdout] | ---- value moved here [INFO] [stdout] 275 | [INFO] [stdout] 276 | if let strategy::Pattern::VariableText(s) = file { [INFO] [stdout] | ^ value used here after move [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `block.stdin` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:290:46 [INFO] [stdout] | [INFO] [stdout] 284 | StandardStream::Stdin => &mut block.stdin, [INFO] [stdout] | ---------------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 289 | *stream_object = match stream { [INFO] [stdout] | -------------- mutable borrow later used here [INFO] [stdout] 290 | StandardStream::Stdin => &block.stdin, [INFO] [stdout] | ^^^^^^^^^^^^ immutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `block.stdout` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:291:47 [INFO] [stdout] | [INFO] [stdout] 285 | StandardStream::Stdout => &mut block.stdout, [INFO] [stdout] | ----------------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 289 | *stream_object = match stream { [INFO] [stdout] | -------------- mutable borrow later used here [INFO] [stdout] 290 | StandardStream::Stdin => &block.stdin, [INFO] [stdout] 291 | StandardStream::Stdout => &block.stdout, [INFO] [stdout] | ^^^^^^^^^^^^^ immutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `block.stderr` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:292:47 [INFO] [stdout] | [INFO] [stdout] 286 | StandardStream::Stderr => &mut block.stderr, [INFO] [stdout] | ----------------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 289 | *stream_object = match stream { [INFO] [stdout] | -------------- mutable borrow later used here [INFO] [stdout] ... [INFO] [stdout] 292 | StandardStream::Stderr => &block.stderr, [INFO] [stdout] | ^^^^^^^^^^^^^ immutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow `result` as mutable, as it is not declared as mutable [INFO] [stdout] --> src/problem/strategy_format.rs:478:9 [INFO] [stdout] | [INFO] [stdout] 478 | let result: Vec = Vec::new(); [INFO] [stdout] | ^^^^^^ not mutable [INFO] [stdout] ... [INFO] [stdout] 483 | 'a' => result.push(b'\x07'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 484 | 'b' => result.push(b'\x08'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 485 | 'e' => result.push(b'\x1b'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 486 | 'f' => result.push(b'\x0c'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 487 | 'n' => result.push(b'\n'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 488 | 'r' => result.push(b'\r'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 489 | 't' => result.push(b'\t'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 490 | 'v' => result.push(b'\x0b'), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] 491 | 'x' => result.push(u8::from_str_radix(&s[1..], 16).unwrap()), [INFO] [stdout] | ------ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] = note: ...and 1 other attempted mutable borrows [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 478 | let mut result: Vec = Vec::new(); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0063, E0308, E0382, E0499, E0502, E0506, E0507, E0596, E0597. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0063`. [INFO] [stdout] [INFO] [stderr] error: could not compile `sunwalker-conductor` (bin "sunwalker-conductor" test) due to 22 previous errors; 16 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] Some errors have detailed explanations: E0063, E0308, E0382, E0499, E0502, E0506, E0507, E0596, E0597. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0063`. [INFO] [stdout] [INFO] [stderr] error: could not compile `sunwalker-conductor` (bin "sunwalker-conductor") due to 22 previous errors; 16 warnings emitted [INFO] running `Command { std: "docker" "inspect" "7178573a59dc1fc243015ef40179314821b8119967c1b6f341fcd8c7fd74bde4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7178573a59dc1fc243015ef40179314821b8119967c1b6f341fcd8c7fd74bde4", kill_on_drop: false }` [INFO] [stdout] 7178573a59dc1fc243015ef40179314821b8119967c1b6f341fcd8c7fd74bde4