[INFO] fetching crate you-can 0.0.14... [INFO] testing you-can-0.0.14 against master#caccb4d0368bd918ef6668af8e13834d07040417 for pr-146098-1 [INFO] extracting crate you-can 0.0.14 into /workspace/builds/worker-4-tc1/source [INFO] removed /workspace/builds/worker-4-tc1/source/rust-toolchain.toml [INFO] started tweaking crates.io crate you-can 0.0.14 [INFO] finished tweaking crates.io crate you-can 0.0.14 [INFO] tweaked toml for crates.io crate you-can 0.0.14 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate you-can 0.0.14 on toolchain caccb4d0368bd918ef6668af8e13834d07040417 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+caccb4d0368bd918ef6668af8e13834d07040417" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate you-can 0.0.14 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" "+caccb4d0368bd918ef6668af8e13834d07040417" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded serde_derive v1.0.143 [INFO] [stderr] Downloaded rustfix v0.6.1 [INFO] [stderr] Downloaded semver v1.0.13 [INFO] [stderr] Downloaded tester v0.9.0 [INFO] [stderr] Downloaded anyhow v1.0.61 [INFO] [stderr] Downloaded filetime v0.2.17 [INFO] [stderr] Downloaded libc v0.2.131 [INFO] [stderr] Downloaded serde v1.0.143 [INFO] [stderr] Downloaded serde_json v1.0.83 [INFO] [stderr] Downloaded you-can-build-macros v0.0.14 [INFO] [stderr] Downloaded compiletest_rs v0.8.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+caccb4d0368bd918ef6668af8e13834d07040417" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 622d1bcfd618f4c90bfcc9edceaa8f9fbbb4f3714dbdba27fe0b2665f5ba2abf [INFO] running `Command { std: "docker" "start" "-a" "622d1bcfd618f4c90bfcc9edceaa8f9fbbb4f3714dbdba27fe0b2665f5ba2abf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "622d1bcfd618f4c90bfcc9edceaa8f9fbbb4f3714dbdba27fe0b2665f5ba2abf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "622d1bcfd618f4c90bfcc9edceaa8f9fbbb4f3714dbdba27fe0b2665f5ba2abf", kill_on_drop: false }` [INFO] [stdout] 622d1bcfd618f4c90bfcc9edceaa8f9fbbb4f3714dbdba27fe0b2665f5ba2abf [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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+caccb4d0368bd918ef6668af8e13834d07040417" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e283248796d55653f34c0b2baebd0cec169d4e442fd96b510f420dab40819ebf [INFO] running `Command { std: "docker" "start" "-a" "e283248796d55653f34c0b2baebd0cec169d4e442fd96b510f420dab40819ebf", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.43 [INFO] [stderr] Compiling semver-parser v0.7.0 [INFO] [stderr] Compiling unicode-ident v1.0.3 [INFO] [stderr] Compiling quote v1.0.21 [INFO] [stderr] Compiling syn v1.0.99 [INFO] [stderr] Compiling semver v0.9.0 [INFO] [stderr] Compiling rustc_version v0.2.3 [INFO] [stderr] Compiling you-can-build-macros v0.0.14 [INFO] [stderr] Compiling you-can v0.0.14 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.82s [INFO] running `Command { std: "docker" "inspect" "e283248796d55653f34c0b2baebd0cec169d4e442fd96b510f420dab40819ebf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e283248796d55653f34c0b2baebd0cec169d4e442fd96b510f420dab40819ebf", kill_on_drop: false }` [INFO] [stdout] e283248796d55653f34c0b2baebd0cec169d4e442fd96b510f420dab40819ebf [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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+caccb4d0368bd918ef6668af8e13834d07040417" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 26c3d27eae6b17898a990dbdbd44274ec75e5b71bea55f2b7dc6c60615e316f9 [INFO] running `Command { std: "docker" "start" "-a" "26c3d27eae6b17898a990dbdbd44274ec75e5b71bea55f2b7dc6c60615e316f9", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.43 [INFO] [stderr] Compiling libc v0.2.131 [INFO] [stderr] Compiling serde_derive v1.0.143 [INFO] [stderr] Compiling serde v1.0.143 [INFO] [stderr] Compiling anyhow v1.0.61 [INFO] [stderr] Compiling serde_json v1.0.83 [INFO] [stderr] Compiling unicode-width v0.1.9 [INFO] [stderr] Compiling itoa v1.0.3 [INFO] [stderr] Compiling semver v1.0.13 [INFO] [stderr] Compiling ryu v1.0.11 [INFO] [stderr] Compiling getopts v0.2.21 [INFO] [stderr] Compiling regex-syntax v0.6.27 [INFO] [stderr] Compiling fastrand v1.8.0 [INFO] [stderr] Compiling compiletest_rs v0.8.0 [INFO] [stderr] Compiling diff v0.1.13 [INFO] [stderr] Compiling rustc_version v0.4.0 [INFO] [stderr] Compiling quote v1.0.21 [INFO] [stderr] Compiling syn v1.0.99 [INFO] [stderr] Compiling dirs-sys-next v0.1.2 [INFO] [stderr] Compiling num_cpus v1.13.1 [INFO] [stderr] Compiling filetime v0.2.17 [INFO] [stderr] Compiling tempfile v3.3.0 [INFO] [stderr] Compiling dirs-next v2.0.0 [INFO] [stderr] Compiling term v0.7.0 [INFO] [stderr] Compiling tester v0.9.0 [INFO] [stderr] Compiling regex v1.6.0 [INFO] [stderr] Compiling you-can-build-macros v0.0.14 [INFO] [stderr] Compiling you-can v0.0.14 (/opt/rustwide/workdir) [INFO] [stderr] Compiling rustfix v0.6.1 [INFO] [stdout] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] --> examples/on_statement.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | #[you_can::turn_off_the_borrow_checker] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] --> examples/on_fn.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | #[you_can::turn_off_the_borrow_checker] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] --> examples/on_statement.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | #[you_can::turn_off_the_borrow_checker] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrow checker is suppressed for these references. [INFO] [stdout] --> examples/on_fn.rs:6:17 [INFO] [stdout] | [INFO] [stdout] 6 | let mut_1 = &mut owned[0]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 7 | let mut_2 = &mut owned[1]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] --> examples/on_mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | #[you_can::turn_off_the_borrow_checker] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] --> examples/on_block.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | #[you_can::turn_off_the_borrow_checker] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrow checker is suppressed for these references. [INFO] [stdout] --> examples/on_mod.rs:7:21 [INFO] [stdout] | [INFO] [stdout] 7 | let mut_1 = &mut owned[0]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 8 | let mut_2 = &mut owned[1]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrow checker is suppressed for these references. [INFO] [stdout] --> examples/on_block.rs:9:21 [INFO] [stdout] | [INFO] [stdout] 9 | let mut_1 = &mut owned[0]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 10 | let mut_2 = &mut owned[1]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] --> examples/in_fn.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | #![you_can::turn_off_the_borrow_checker] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrow checker is suppressed for these references. [INFO] [stdout] --> examples/in_fn.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | let mut_1 = &mut owned[0]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 10 | let mut_2 = &mut owned[1]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] --> examples/in_mod.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | #![you_can::turn_off_the_borrow_checker] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrow checker is suppressed for these references. [INFO] [stdout] --> examples/in_mod.rs:10:21 [INFO] [stdout] | [INFO] [stdout] 10 | let mut_1 = &mut owned[0]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 11 | let mut_2 = &mut owned[1]; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 7.66s [INFO] running `Command { std: "docker" "inspect" "26c3d27eae6b17898a990dbdbd44274ec75e5b71bea55f2b7dc6c60615e316f9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "26c3d27eae6b17898a990dbdbd44274ec75e5b71bea55f2b7dc6c60615e316f9", kill_on_drop: false }` [INFO] [stdout] 26c3d27eae6b17898a990dbdbd44274ec75e5b71bea55f2b7dc6c60615e316f9 [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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+caccb4d0368bd918ef6668af8e13834d07040417" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 6d0f1ebd0b29194fea5f5756fa00057e68b2fad7d6eb3a4260ab7650d2a2ea2b [INFO] running `Command { std: "docker" "start" "-a" "6d0f1ebd0b29194fea5f5756fa00057e68b2fad7d6eb3a4260ab7650d2a2ea2b", kill_on_drop: false }` [INFO] [stderr] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stderr] --> examples/on_block.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | #[you_can::turn_off_the_borrow_checker] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the borrow checker is suppressed for these references. [INFO] [stderr] --> examples/on_block.rs:9:21 [INFO] [stderr] | [INFO] [stderr] 9 | let mut_1 = &mut owned[0]; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] 10 | let mut_2 = &mut owned[1]; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stderr] --> examples/on_fn.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #[you_can::turn_off_the_borrow_checker] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the borrow checker is suppressed for these references. [INFO] [stderr] --> examples/on_fn.rs:6:17 [INFO] [stderr] | [INFO] [stderr] 6 | let mut_1 = &mut owned[0]; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] 7 | let mut_2 = &mut owned[1]; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stderr] --> examples/on_mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #[you_can::turn_off_the_borrow_checker] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the borrow checker is suppressed for these references. [INFO] [stderr] --> examples/on_mod.rs:7:21 [INFO] [stderr] | [INFO] [stderr] 7 | let mut_1 = &mut owned[0]; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] 8 | let mut_2 = &mut owned[1]; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stderr] --> examples/in_mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | #![you_can::turn_off_the_borrow_checker] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the borrow checker is suppressed for these references. [INFO] [stderr] --> examples/in_mod.rs:10:21 [INFO] [stderr] | [INFO] [stderr] 10 | let mut_1 = &mut owned[0]; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] 11 | let mut_2 = &mut owned[1]; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stderr] --> examples/on_statement.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | #[you_can::turn_off_the_borrow_checker] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stderr] --> examples/on_statement.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | #[you_can::turn_off_the_borrow_checker] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stderr] --> examples/in_fn.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | #![you_can::turn_off_the_borrow_checker] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the borrow checker is suppressed for these references. [INFO] [stderr] --> examples/in_fn.rs:9:17 [INFO] [stderr] | [INFO] [stderr] 9 | let mut_1 = &mut owned[0]; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] 10 | let mut_2 = &mut owned[1]; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `you-can` (example "on_block") generated 2 warnings [INFO] [stderr] warning: `you-can` (example "on_fn") generated 2 warnings [INFO] [stderr] warning: `you-can` (example "on_mod") generated 2 warnings [INFO] [stderr] warning: `you-can` (example "in_mod") generated 2 warnings [INFO] [stderr] warning: `you-can` (example "on_statement") generated 2 warnings [INFO] [stderr] warning: `you-can` (example "in_fn") generated 2 warnings [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.03s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/you_can-151222f76ee6aef7) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/compile_tests.rs (/opt/rustwide/target/debug/deps/compile_tests-73a6e752113ac615) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test [ui] unstable-pass/in_mod.rs ... FAILED [INFO] [stdout] test [ui] unstable-pass/on_block.rs ... FAILED [INFO] [stdout] test [compile-fail] unstable-fail/not_on_fn.rs ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s [INFO] [stdout] [INFO] [stdout] test compile_fail ... ok [INFO] [stdout] test [ui] unstable-pass/on_fn.rs ... FAILED [INFO] [stdout] test [ui] unstable-pass/in_fn.rs ... FAILED [INFO] [stdout] test [ui] unstable-pass/on_fn_empty.rs ... FAILED [INFO] [stdout] test [ui] unstable-pass/on_mod.rs ... FAILED [INFO] [stdout] test [ui] unstable-pass/on_statement.rs ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [ui] unstable-pass/in_fn.rs [INFO] [stdout] [ui] unstable-pass/in_mod.rs [INFO] [stdout] [ui] unstable-pass/on_block.rs [INFO] [stdout] [ui] unstable-pass/on_fn.rs [INFO] [stdout] [ui] unstable-pass/on_fn_empty.rs [INFO] [stdout] [ui] unstable-pass/on_mod.rs [INFO] [stdout] [ui] unstable-pass/on_statement.rs [INFO] [stdout] [INFO] [stdout] test result: FAILED. 0 passed; 7 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s [INFO] [stdout] [INFO] [stdout] test run_pass ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- run_pass stdout ---- [INFO] [stdout] diff of stderr: [INFO] [stdout] [INFO] [stdout] -warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] - --> $DIR/in_mod.rs:4:5 [INFO] [stdout] +error[E0464]: multiple candidates for `rlib` dependency `you_can` found [INFO] [stdout] + --> $DIR/in_mod.rs:4:8 [INFO] [stdout] | [INFO] [stdout] 4 | #![you_can::turn_off_the_borrow_checker] [INFO] [stdout] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] + | ^^^^^^^ [INFO] [stdout] + | [INFO] [stdout] + = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib [INFO] [stdout] + = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib [INFO] [stdout] [INFO] [stdout] -warning: the borrow checker is suppressed for these references. [INFO] [stdout] - --> $DIR/in_mod.rs:10:21 [INFO] [stdout] +error[E0499]: cannot borrow `owned` as mutable more than once at a time [INFO] [stdout] + --> $DIR/in_mod.rs:11:26 [INFO] [stdout] | [INFO] [stdout] 10 | let mut_1 = &mut owned[0]; [INFO] [stdout] - | ^^^^^^^^^^^^^ [INFO] [stdout] + | ----- first mutable borrow occurs here [INFO] [stdout] 11 | let mut_2 = &mut owned[1]; [INFO] [stdout] - | ^^^^^^^^^^^^^ [INFO] [stdout] + | ^^^^^ second mutable borrow occurs here [INFO] [stdout] +... [INFO] [stdout] +15 | let undefined = *mut_1 + *mut_2; [INFO] [stdout] + | ------ first borrow later used here [INFO] [stdout] + | [INFO] [stdout] + = help: use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices [INFO] [stdout] [INFO] [stdout] -warning: 2 warnings emitted [INFO] [stdout] +error[E0505]: cannot move out of `owned` because it is borrowed [INFO] [stdout] + --> $DIR/in_mod.rs:14:14 [INFO] [stdout] + | [INFO] [stdout] + 7 | let mut owned = vec![1, 32]; [INFO] [stdout] + | --------- binding `owned` declared here [INFO] [stdout] +... [INFO] [stdout] +10 | let mut_1 = &mut owned[0]; [INFO] [stdout] + | ----- borrow of `owned` occurs here [INFO] [stdout] +... [INFO] [stdout] +14 | drop(owned); [INFO] [stdout] + | ^^^^^ move out of `owned` occurs here [INFO] [stdout] +15 | let undefined = *mut_1 + *mut_2; [INFO] [stdout] + | ------ borrow later used here [INFO] [stdout] + | [INFO] [stdout] +help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] + | [INFO] [stdout] +10 | let mut_1 = &mut owned.clone()[0]; [INFO] [stdout] + | ++++++++ [INFO] [stdout] [INFO] [stdout] +error: aborting due to 3 previous errors [INFO] [stdout] + [INFO] [stdout] +Some errors have detailed explanations: E0464, E0499, E0505. [INFO] [stdout] +For more information about an error, try `rustc --explain E0464`. [INFO] [stdout] [INFO] [stdout] diff of stderr: [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] The actual stderr differed from the expected stderr. [INFO] [stdout] Actual stderr saved to /tmp/in_mod.stage-id.stderr [INFO] [stdout] To update references, rerun the tests and pass the `--bless` flag [INFO] [stdout] To only update this specific test, also pass `--test-args in_mod.rs` [INFO] [stdout] [INFO] [stdout] error: 1 errors occurred comparing output. [INFO] [stdout] status: exit status: 1 [INFO] [stdout] command: "rustc" "tests/unstable-pass/in_mod.rs" "-L" "/tmp" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-C" "prefer-dynamic" "-o" "/tmp/in_mod.stage-id" "-A" "unused" "--extern" "you_can" "--extern" "unbounded" "-L" "target/debug/deps" "-L" "/opt/rustwide/target/debug/deps" "-L" "/opt/rustwide/target/debug" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib" "--edition=2021" "-L" "/tmp/in_mod.stage-id.aux" [INFO] [stdout] stdout: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] stderr: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] {"$message_type":"diagnostic","message":"multiple candidates for `rlib` dependency `you_can` found","code":{"code":"E0464","explanation":"The compiler found multiple library files with the requested crate name.\n\n```compile_fail\n// aux-build:crateresolve-1.rs\n// aux-build:crateresolve-2.rs\n// aux-build:crateresolve-3.rs\n\nextern crate crateresolve;\n//~^ ERROR multiple candidates for `rlib` dependency `crateresolve` found\n\nfn main() {}\n```\n\nThis error can occur in several different cases -- for example, when using\n`extern crate` or passing `--extern` options without crate paths. It can also be\ncaused by caching issues with the build directory, in which case `cargo clean`\nmay help.\n\nIn the above example, there are three different library files, all of which\ndefine the same crate name. Without providing a full path, there is no way for\nthe compiler to know which crate it should use.\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/in_mod.rs","byte_start":57,"byte_end":64,"line_start":4,"line_end":4,"column_start":8,"column_end":15,"is_primary":true,"text":[{"text":" #![you_can::turn_off_the_borrow_checker]","highlight_start":8,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"candidate #2: /opt/rustwide/target/debug/libyou_can.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"error[E0464]: multiple candidates for `rlib` dependency `you_can` found\n --> tests/unstable-pass/in_mod.rs:4:8\n |\n4 | #![you_can::turn_off_the_borrow_checker]\n | ^^^^^^^\n |\n = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib\n = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"cannot borrow `owned` as mutable more than once at a time","code":{"code":"E0499","explanation":"A variable was borrowed as mutable more than once.\n\nErroneous code example:\n\n```compile_fail,E0499\nlet mut i = 0;\nlet mut x = &mut i;\nlet mut a = &mut i;\nx;\n// error: cannot borrow `i` as mutable more than once at a time\n```\n\nPlease note that in Rust, you can either have many immutable references, or one\nmutable reference. For more details you may want to read the\n[References & Borrowing][references-and-borrowing] section of the Book.\n\n[references-and-borrowing]: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html\n\nExample:\n\n```\nlet mut i = 0;\nlet mut x = &mut i; // ok!\n\n// or:\nlet mut i = 0;\nlet a = &i; // ok!\nlet b = &i; // still ok!\nlet c = &i; // still ok!\nb;\na;\n```\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/in_mod.rs","byte_start":215,"byte_end":220,"line_start":10,"line_end":10,"column_start":26,"column_end":31,"is_primary":false,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":26,"highlight_end":31}],"label":"first mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/in_mod.rs","byte_start":250,"byte_end":255,"line_start":11,"line_end":11,"column_start":26,"column_end":31,"is_primary":true,"text":[{"text":" let mut_2 = &mut owned[1];","highlight_start":26,"highlight_end":31}],"label":"second mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/in_mod.rs","byte_start":332,"byte_end":338,"line_start":15,"line_end":15,"column_start":25,"column_end":31,"is_primary":false,"text":[{"text":" let undefined = *mut_1 + *mut_2;","highlight_start":25,"highlight_end":31}],"label":"first borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"error[E0499]: cannot borrow `owned` as mutable more than once at a time\n --> tests/unstable-pass/in_mod.rs:11:26\n |\n10 | let mut_1 = &mut owned[0];\n | ----- first mutable borrow occurs here\n11 | let mut_2 = &mut owned[1];\n | ^^^^^ second mutable borrow occurs here\n...\n15 | let undefined = *mut_1 + *mut_2;\n | ------ first borrow later used here\n |\n = help: use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"cannot move out of `owned` because it is borrowed","code":{"code":"E0505","explanation":"A value was moved out while it was still borrowed.\n\nErroneous code example:\n\n```compile_fail,E0505\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n let _ref_to_val: &Value = &x;\n eat(x);\n borrow(_ref_to_val);\n}\n```\n\nHere, the function `eat` takes ownership of `x`. However,\n`x` cannot be moved because the borrow to `_ref_to_val`\nneeds to last till the function `borrow`.\nTo fix that you can do a few different things:\n\n* Try to avoid moving the variable.\n* Release borrow before move.\n* Implement the `Copy` trait on the type.\n\nExamples:\n\n```\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: &Value) {}\n\nfn main() {\n let x = Value{};\n\n let ref_to_val: &Value = &x;\n eat(&x); // pass by reference, if it's possible\n borrow(ref_to_val);\n}\n```\n\nOr:\n\n```\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n\n let ref_to_val: &Value = &x;\n borrow(ref_to_val);\n // ref_to_val is no longer used.\n eat(x);\n}\n```\n\nOr:\n\n```\n#[derive(Clone, Copy)] // implement Copy trait\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n let ref_to_val: &Value = &x;\n eat(x); // it will be copied here.\n borrow(ref_to_val);\n}\n```\n\nFor more information on Rust's ownership system, take a look at the\n[References & Borrowing][references-and-borrowing] section of the Book.\n\n[references-and-borrowing]: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/in_mod.rs","byte_start":300,"byte_end":305,"line_start":14,"line_end":14,"column_start":14,"column_end":19,"is_primary":true,"text":[{"text":" drop(owned);","highlight_start":14,"highlight_end":19}],"label":"move out of `owned` occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/in_mod.rs","byte_start":215,"byte_end":220,"line_start":10,"line_end":10,"column_start":26,"column_end":31,"is_primary":false,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":26,"highlight_end":31}],"label":"borrow of `owned` occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/in_mod.rs","byte_start":128,"byte_end":137,"line_start":7,"line_end":7,"column_start":13,"column_end":22,"is_primary":false,"text":[{"text":" let mut owned = vec![1, 32];","highlight_start":13,"highlight_end":22}],"label":"binding `owned` declared here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/in_mod.rs","byte_start":332,"byte_end":338,"line_start":15,"line_end":15,"column_start":25,"column_end":31,"is_primary":false,"text":[{"text":" let undefined = *mut_1 + *mut_2;","highlight_start":25,"highlight_end":31}],"label":"borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider cloning the value if the performance cost is acceptable","code":null,"level":"help","spans":[{"file_name":"tests/unstable-pass/in_mod.rs","byte_start":220,"byte_end":220,"line_start":10,"line_end":10,"column_start":31,"column_end":31,"is_primary":true,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":31,"highlight_end":31}],"label":null,"suggested_replacement":".clone()","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error[E0505]: cannot move out of `owned` because it is borrowed\n --> tests/unstable-pass/in_mod.rs:14:14\n |\n 7 | let mut owned = vec![1, 32];\n | --------- binding `owned` declared here\n...\n10 | let mut_1 = &mut owned[0];\n | ----- borrow of `owned` occurs here\n...\n14 | drop(owned);\n | ^^^^^ move out of `owned` occurs here\n15 | let undefined = *mut_1 + *mut_2;\n | ------ borrow later used here\n |\nhelp: consider cloning the value if the performance cost is acceptable\n |\n10 | let mut_1 = &mut owned.clone()[0];\n | ++++++++\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"aborting due to 3 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 3 previous errors\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0464, E0499, E0505.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"Some errors have detailed explanations: E0464, E0499, E0505.\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0464`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"For more information about an error, try `rustc --explain E0464`.\n"} [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] -warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] - --> $DIR/on_block.rs:6:5 [INFO] [stdout] +error[E0464]: multiple candidates for `rlib` dependency `you_can` found [INFO] [stdout] + --> $DIR/on_block.rs:6:7 [INFO] [stdout] | [INFO] [stdout] 6 | #[you_can::turn_off_the_borrow_checker] [INFO] [stdout] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] + | ^^^^^^^ [INFO] [stdout] + | [INFO] [stdout] + = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib [INFO] [stdout] + = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib [INFO] [stdout] [INFO] [stdout] -warning: the borrow checker is suppressed for these references. [INFO] [stdout] - --> $DIR/on_block.rs:9:21 [INFO] [stdout] +error[E0499]: cannot borrow `owned` as mutable more than once at a time [INFO] [stdout] + --> $DIR/on_block.rs:10:26 [INFO] [stdout] | [INFO] [stdout] -9 | let mut_1 = &mut owned[0]; [INFO] [stdout] - | ^^^^^^^^^^^^^ [INFO] [stdout] + 9 | let mut_1 = &mut owned[0]; [INFO] [stdout] + | ----- first mutable borrow occurs here [INFO] [stdout] 10 | let mut_2 = &mut owned[1]; [INFO] [stdout] - | ^^^^^^^^^^^^^ [INFO] [stdout] + | ^^^^^ second mutable borrow occurs here [INFO] [stdout] +... [INFO] [stdout] +14 | let undefined = *mut_1 + *mut_2; [INFO] [stdout] + | ------ first borrow later used here [INFO] [stdout] + | [INFO] [stdout] + = help: use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices [INFO] [stdout] [INFO] [stdout] -warning: 2 warnings emitted [INFO] [stdout] +error[E0505]: cannot move out of `owned` because it is borrowed [INFO] [stdout] + --> $DIR/on_block.rs:13:14 [INFO] [stdout] + | [INFO] [stdout] + 4 | let mut owned = vec![1, 32]; [INFO] [stdout] + | --------- binding `owned` declared here [INFO] [stdout] +... [INFO] [stdout] + 9 | let mut_1 = &mut owned[0]; [INFO] [stdout] + | ----- borrow of `owned` occurs here [INFO] [stdout] +... [INFO] [stdout] +13 | drop(owned); [INFO] [stdout] + | ^^^^^ move out of `owned` occurs here [INFO] [stdout] +14 | let undefined = *mut_1 + *mut_2; [INFO] [stdout] + | ------ borrow later used here [INFO] [stdout] + | [INFO] [stdout] +help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] + | [INFO] [stdout] + 9 | let mut_1 = &mut owned.clone()[0]; [INFO] [stdout] + | ++++++++ [INFO] [stdout] [INFO] [stdout] +error: aborting due to 3 previous errors [INFO] [stdout] + [INFO] [stdout] +Some errors have detailed explanations: E0464, E0499, E0505. [INFO] [stdout] +For more information about an error, try `rustc --explain E0464`. [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] The actual stderr differed from the expected stderr. [INFO] [stdout] Actual stderr saved to /tmp/on_block.stage-id.stderr [INFO] [stdout] To update references, rerun the tests and pass the `--bless` flag [INFO] [stdout] To only update this specific test, also pass `--test-args on_block.rs` [INFO] [stdout] [INFO] [stdout] error: 1 errors occurred comparing output. [INFO] [stdout] status: exit status: 1 [INFO] [stdout] command: "rustc" "tests/unstable-pass/on_block.rs" "-L" "/tmp" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-C" "prefer-dynamic" "-o" "/tmp/on_block.stage-id" "-A" "unused" "--extern" "you_can" "--extern" "unbounded" "-L" "target/debug/deps" "-L" "/opt/rustwide/target/debug/deps" "-L" "/opt/rustwide/target/debug" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib" "--edition=2021" "-L" "/tmp/on_block.stage-id.aux" [INFO] [stdout] stdout: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] stderr: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] {"$message_type":"diagnostic","message":"multiple candidates for `rlib` dependency `you_can` found","code":{"code":"E0464","explanation":"The compiler found multiple library files with the requested crate name.\n\n```compile_fail\n// aux-build:crateresolve-1.rs\n// aux-build:crateresolve-2.rs\n// aux-build:crateresolve-3.rs\n\nextern crate crateresolve;\n//~^ ERROR multiple candidates for `rlib` dependency `crateresolve` found\n\nfn main() {}\n```\n\nThis error can occur in several different cases -- for example, when using\n`extern crate` or passing `--extern` options without crate paths. It can also be\ncaused by caching issues with the build directory, in which case `cargo clean`\nmay help.\n\nIn the above example, there are three different library files, all of which\ndefine the same crate name. Without providing a full path, there is no way for\nthe compiler to know which crate it should use.\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/on_block.rs","byte_start":111,"byte_end":118,"line_start":6,"line_end":6,"column_start":7,"column_end":14,"is_primary":true,"text":[{"text":" #[you_can::turn_off_the_borrow_checker]","highlight_start":7,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"candidate #2: /opt/rustwide/target/debug/libyou_can.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"error[E0464]: multiple candidates for `rlib` dependency `you_can` found\n --> tests/unstable-pass/on_block.rs:6:7\n |\n6 | #[you_can::turn_off_the_borrow_checker]\n | ^^^^^^^\n |\n = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib\n = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"cannot borrow `owned` as mutable more than once at a time","code":{"code":"E0499","explanation":"A variable was borrowed as mutable more than once.\n\nErroneous code example:\n\n```compile_fail,E0499\nlet mut i = 0;\nlet mut x = &mut i;\nlet mut a = &mut i;\nx;\n// error: cannot borrow `i` as mutable more than once at a time\n```\n\nPlease note that in Rust, you can either have many immutable references, or one\nmutable reference. For more details you may want to read the\n[References & Borrowing][references-and-borrowing] section of the Book.\n\n[references-and-borrowing]: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html\n\nExample:\n\n```\nlet mut i = 0;\nlet mut x = &mut i; // ok!\n\n// or:\nlet mut i = 0;\nlet a = &i; // ok!\nlet b = &i; // still ok!\nlet c = &i; // still ok!\nb;\na;\n```\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/on_block.rs","byte_start":216,"byte_end":221,"line_start":9,"line_end":9,"column_start":26,"column_end":31,"is_primary":false,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":26,"highlight_end":31}],"label":"first mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_block.rs","byte_start":251,"byte_end":256,"line_start":10,"line_end":10,"column_start":26,"column_end":31,"is_primary":true,"text":[{"text":" let mut_2 = &mut owned[1];","highlight_start":26,"highlight_end":31}],"label":"second mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_block.rs","byte_start":333,"byte_end":339,"line_start":14,"line_end":14,"column_start":25,"column_end":31,"is_primary":false,"text":[{"text":" let undefined = *mut_1 + *mut_2;","highlight_start":25,"highlight_end":31}],"label":"first borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"error[E0499]: cannot borrow `owned` as mutable more than once at a time\n --> tests/unstable-pass/on_block.rs:10:26\n |\n 9 | let mut_1 = &mut owned[0];\n | ----- first mutable borrow occurs here\n10 | let mut_2 = &mut owned[1];\n | ^^^^^ second mutable borrow occurs here\n...\n14 | let undefined = *mut_1 + *mut_2;\n | ------ first borrow later used here\n |\n = help: use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"cannot move out of `owned` because it is borrowed","code":{"code":"E0505","explanation":"A value was moved out while it was still borrowed.\n\nErroneous code example:\n\n```compile_fail,E0505\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n let _ref_to_val: &Value = &x;\n eat(x);\n borrow(_ref_to_val);\n}\n```\n\nHere, the function `eat` takes ownership of `x`. However,\n`x` cannot be moved because the borrow to `_ref_to_val`\nneeds to last till the function `borrow`.\nTo fix that you can do a few different things:\n\n* Try to avoid moving the variable.\n* Release borrow before move.\n* Implement the `Copy` trait on the type.\n\nExamples:\n\n```\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: &Value) {}\n\nfn main() {\n let x = Value{};\n\n let ref_to_val: &Value = &x;\n eat(&x); // pass by reference, if it's possible\n borrow(ref_to_val);\n}\n```\n\nOr:\n\n```\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n\n let ref_to_val: &Value = &x;\n borrow(ref_to_val);\n // ref_to_val is no longer used.\n eat(x);\n}\n```\n\nOr:\n\n```\n#[derive(Clone, Copy)] // implement Copy trait\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n let ref_to_val: &Value = &x;\n eat(x); // it will be copied here.\n borrow(ref_to_val);\n}\n```\n\nFor more information on Rust's ownership system, take a look at the\n[References & Borrowing][references-and-borrowing] section of the Book.\n\n[references-and-borrowing]: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/on_block.rs","byte_start":301,"byte_end":306,"line_start":13,"line_end":13,"column_start":14,"column_end":19,"is_primary":true,"text":[{"text":" drop(owned);","highlight_start":14,"highlight_end":19}],"label":"move out of `owned` occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_block.rs","byte_start":216,"byte_end":221,"line_start":9,"line_end":9,"column_start":26,"column_end":31,"is_primary":false,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":26,"highlight_end":31}],"label":"borrow of `owned` occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_block.rs","byte_start":79,"byte_end":88,"line_start":4,"line_end":4,"column_start":9,"column_end":18,"is_primary":false,"text":[{"text":" let mut owned = vec![1, 32];","highlight_start":9,"highlight_end":18}],"label":"binding `owned` declared here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_block.rs","byte_start":333,"byte_end":339,"line_start":14,"line_end":14,"column_start":25,"column_end":31,"is_primary":false,"text":[{"text":" let undefined = *mut_1 + *mut_2;","highlight_start":25,"highlight_end":31}],"label":"borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider cloning the value if the performance cost is acceptable","code":null,"level":"help","spans":[{"file_name":"tests/unstable-pass/on_block.rs","byte_start":221,"byte_end":221,"line_start":9,"line_end":9,"column_start":31,"column_end":31,"is_primary":true,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":31,"highlight_end":31}],"label":null,"suggested_replacement":".clone()","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error[E0505]: cannot move out of `owned` because it is borrowed\n --> tests/unstable-pass/on_block.rs:13:14\n |\n 4 | let mut owned = vec![1, 32];\n | --------- binding `owned` declared here\n...\n 9 | let mut_1 = &mut owned[0];\n | ----- borrow of `owned` occurs here\n...\n13 | drop(owned);\n | ^^^^^ move out of `owned` occurs here\n14 | let undefined = *mut_1 + *mut_2;\n | ------ borrow later used here\n |\nhelp: consider cloning the value if the performance cost is acceptable\n |\n 9 | let mut_1 = &mut owned.clone()[0];\n | ++++++++\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"aborting due to 3 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 3 previous errors\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0464, E0499, E0505.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"Some errors have detailed explanations: E0464, E0499, E0505.\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0464`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"For more information about an error, try `rustc --explain E0464`.\n"} [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] diff of stderr: [INFO] [stdout] [INFO] [stdout] -warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] - --> $DIR/on_fn.rs:1:1 [INFO] [stdout] +error[E0464]: multiple candidates for `rlib` dependency `you_can` found [INFO] [stdout] + --> $DIR/on_fn.rs:1:3 [INFO] [stdout] | [INFO] [stdout] 1 | #[you_can::turn_off_the_borrow_checker] [INFO] [stdout] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] - [INFO] [stdout] -warning: the borrow checker is suppressed for these references. [INFO] [stdout] - --> $DIR/on_fn.rs:6:17 [INFO] [stdout] + | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] -6 | let mut_1 = &mut owned[0]; [INFO] [stdout] - | ^^^^^^^^^^^^^ [INFO] [stdout] -7 | let mut_2 = &mut owned[1]; [INFO] [stdout] - | ^^^^^^^^^^^^^ [INFO] [stdout] + = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib [INFO] [stdout] + = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib [INFO] [stdout] [INFO] [stdout] -warning: 2 warnings emitted [INFO] [stdout] +error[E0499]: cannot borrow `owned` as mutable more than once at a time [INFO] [stdout] + --> $DIR/on_fn.rs:7:22 [INFO] [stdout] + | [INFO] [stdout] + 6 | let mut_1 = &mut owned[0]; [INFO] [stdout] + | ----- first mutable borrow occurs here [INFO] [stdout] + 7 | let mut_2 = &mut owned[1]; [INFO] [stdout] + | ^^^^^ second mutable borrow occurs here [INFO] [stdout] +... [INFO] [stdout] +11 | let undefined = *mut_1 + *mut_2; [INFO] [stdout] + | ------ first borrow later used here [INFO] [stdout] + | [INFO] [stdout] + = help: use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices [INFO] [stdout] [INFO] [stdout] +error[E0505]: cannot move out of `owned` because it is borrowed [INFO] [stdout] + --> $DIR/on_fn.rs:10:10 [INFO] [stdout] + | [INFO] [stdout] + 3 | let mut owned = vec![1, 32]; [INFO] [stdout] + | --------- binding `owned` declared here [INFO] [stdout] +... [INFO] [stdout] + 6 | let mut_1 = &mut owned[0]; [INFO] [stdout] + | ----- borrow of `owned` occurs here [INFO] [stdout] +... [INFO] [stdout] +10 | drop(owned); [INFO] [stdout] + | ^^^^^ move out of `owned` occurs here [INFO] [stdout] +11 | let undefined = *mut_1 + *mut_2; [INFO] [stdout] + | ------ borrow later used here [INFO] [stdout] + | [INFO] [stdout] +help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] + | [INFO] [stdout] + 6 | let mut_1 = &mut owned.clone()[0]; [INFO] [stdout] + | ++++++++ [INFO] [stdout] + [INFO] [stdout] +error: aborting due to 3 previous errors [INFO] [stdout] + [INFO] [stdout] +Some errors have detailed explanations: E0464, E0499, E0505. [INFO] [stdout] +For more information about an error, try `rustc --explain E0464`. [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] The actual stderr differed from the expected stderr. [INFO] [stdout] Actual stderr saved to /tmp/on_fn.stage-id.stderr [INFO] [stdout] To update references, rerun the tests and pass the `--bless` flag [INFO] [stdout] To only update this specific test, also pass `--test-args on_fn.rs` [INFO] [stdout] [INFO] [stdout] error: 1 errors occurred comparing output. [INFO] [stdout] status: exit status: 1 [INFO] [stdout] command: "rustc" "tests/unstable-pass/on_fn.rs" "-L" "/tmp" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-C" "prefer-dynamic" "-o" "/tmp/on_fn.stage-id" "-A" "unused" "--extern" "you_can" "--extern" "unbounded" "-L" "target/debug/deps" "-L" "/opt/rustwide/target/debug/deps" "-L" "/opt/rustwide/target/debug" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib" "--edition=2021" "-L" "/tmp/on_fn.stage-id.aux" [INFO] [stdout] stdout: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] stderr: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] {"$message_type":"diagnostic","message":"multiple candidates for `rlib` dependency `you_can` found","code":{"code":"E0464","explanation":"The compiler found multiple library files with the requested crate name.\n\n```compile_fail\n// aux-build:crateresolve-1.rs\n// aux-build:crateresolve-2.rs\n// aux-build:crateresolve-3.rs\n\nextern crate crateresolve;\n//~^ ERROR multiple candidates for `rlib` dependency `crateresolve` found\n\nfn main() {}\n```\n\nThis error can occur in several different cases -- for example, when using\n`extern crate` or passing `--extern` options without crate paths. It can also be\ncaused by caching issues with the build directory, in which case `cargo clean`\nmay help.\n\nIn the above example, there are three different library files, all of which\ndefine the same crate name. Without providing a full path, there is no way for\nthe compiler to know which crate it should use.\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/on_fn.rs","byte_start":2,"byte_end":9,"line_start":1,"line_end":1,"column_start":3,"column_end":10,"is_primary":true,"text":[{"text":"#[you_can::turn_off_the_borrow_checker]","highlight_start":3,"highlight_end":10}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"candidate #2: /opt/rustwide/target/debug/libyou_can.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"error[E0464]: multiple candidates for `rlib` dependency `you_can` found\n --> tests/unstable-pass/on_fn.rs:1:3\n |\n1 | #[you_can::turn_off_the_borrow_checker]\n | ^^^^^^^\n |\n = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib\n = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"cannot borrow `owned` as mutable more than once at a time","code":{"code":"E0499","explanation":"A variable was borrowed as mutable more than once.\n\nErroneous code example:\n\n```compile_fail,E0499\nlet mut i = 0;\nlet mut x = &mut i;\nlet mut a = &mut i;\nx;\n// error: cannot borrow `i` as mutable more than once at a time\n```\n\nPlease note that in Rust, you can either have many immutable references, or one\nmutable reference. For more details you may want to read the\n[References & Borrowing][references-and-borrowing] section of the Book.\n\n[references-and-borrowing]: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html\n\nExample:\n\n```\nlet mut i = 0;\nlet mut x = &mut i; // ok!\n\n// or:\nlet mut i = 0;\nlet a = &i; // ok!\nlet b = &i; // still ok!\nlet c = &i; // still ok!\nb;\na;\n```\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/on_fn.rs","byte_start":139,"byte_end":144,"line_start":6,"line_end":6,"column_start":22,"column_end":27,"is_primary":false,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":22,"highlight_end":27}],"label":"first mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_fn.rs","byte_start":170,"byte_end":175,"line_start":7,"line_end":7,"column_start":22,"column_end":27,"is_primary":true,"text":[{"text":" let mut_2 = &mut owned[1];","highlight_start":22,"highlight_end":27}],"label":"second mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_fn.rs","byte_start":240,"byte_end":246,"line_start":11,"line_end":11,"column_start":21,"column_end":27,"is_primary":false,"text":[{"text":" let undefined = *mut_1 + *mut_2;","highlight_start":21,"highlight_end":27}],"label":"first borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"error[E0499]: cannot borrow `owned` as mutable more than once at a time\n --> tests/unstable-pass/on_fn.rs:7:22\n |\n 6 | let mut_1 = &mut owned[0];\n | ----- first mutable borrow occurs here\n 7 | let mut_2 = &mut owned[1];\n | ^^^^^ second mutable borrow occurs here\n...\n11 | let undefined = *mut_1 + *mut_2;\n | ------ first borrow later used here\n |\n = help: use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"cannot move out of `owned` because it is borrowed","code":{"code":"E0505","explanation":"A value was moved out while it was still borrowed.\n\nErroneous code example:\n\n```compile_fail,E0505\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n let _ref_to_val: &Value = &x;\n eat(x);\n borrow(_ref_to_val);\n}\n```\n\nHere, the function `eat` takes ownership of `x`. However,\n`x` cannot be moved because the borrow to `_ref_to_val`\nneeds to last till the function `borrow`.\nTo fix that you can do a few different things:\n\n* Try to avoid moving the variable.\n* Release borrow before move.\n* Implement the `Copy` trait on the type.\n\nExamples:\n\n```\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: &Value) {}\n\nfn main() {\n let x = Value{};\n\n let ref_to_val: &Value = &x;\n eat(&x); // pass by reference, if it's possible\n borrow(ref_to_val);\n}\n```\n\nOr:\n\n```\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n\n let ref_to_val: &Value = &x;\n borrow(ref_to_val);\n // ref_to_val is no longer used.\n eat(x);\n}\n```\n\nOr:\n\n```\n#[derive(Clone, Copy)] // implement Copy trait\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n let ref_to_val: &Value = &x;\n eat(x); // it will be copied here.\n borrow(ref_to_val);\n}\n```\n\nFor more information on Rust's ownership system, take a look at the\n[References & Borrowing][references-and-borrowing] section of the Book.\n\n[references-and-borrowing]: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/on_fn.rs","byte_start":212,"byte_end":217,"line_start":10,"line_end":10,"column_start":10,"column_end":15,"is_primary":true,"text":[{"text":" drop(owned);","highlight_start":10,"highlight_end":15}],"label":"move out of `owned` occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_fn.rs","byte_start":139,"byte_end":144,"line_start":6,"line_end":6,"column_start":22,"column_end":27,"is_primary":false,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":22,"highlight_end":27}],"label":"borrow of `owned` occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_fn.rs","byte_start":60,"byte_end":69,"line_start":3,"line_end":3,"column_start":9,"column_end":18,"is_primary":false,"text":[{"text":" let mut owned = vec![1, 32];","highlight_start":9,"highlight_end":18}],"label":"binding `owned` declared here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_fn.rs","byte_start":240,"byte_end":246,"line_start":11,"line_end":11,"column_start":21,"column_end":27,"is_primary":false,"text":[{"text":" let undefined = *mut_1 + *mut_2;","highlight_start":21,"highlight_end":27}],"label":"borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider cloning the value if the performance cost is acceptable","code":null,"level":"help","spans":[{"file_name":"tests/unstable-pass/on_fn.rs","byte_start":144,"byte_end":144,"line_start":6,"line_end":6,"column_start":27,"column_end":27,"is_primary":true,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":27,"highlight_end":27}],"label":null,"suggested_replacement":".clone()","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error[E0505]: cannot move out of `owned` because it is borrowed\n --> tests/unstable-pass/on_fn.rs:10:10\n |\n 3 | let mut owned = vec![1, 32];\n | --------- binding `owned` declared here\n...\n 6 | let mut_1 = &mut owned[0];\n | ----- borrow of `owned` occurs here\n...\n10 | drop(owned);\n | ^^^^^ move out of `owned` occurs here\n11 | let undefined = *mut_1 + *mut_2;\n | ------ borrow later used here\n |\nhelp: consider cloning the value if the performance cost is acceptable\n |\n 6 | let mut_1 = &mut owned.clone()[0];\n | ++++++++\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"aborting due to 3 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 3 previous errors\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0464, E0499, E0505.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"Some errors have detailed explanations: E0464, E0499, E0505.\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0464`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"For more information about an error, try `rustc --explain E0464`.\n"} [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] diff of stderr: [INFO] [stdout] [INFO] [stdout] -warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] - --> $DIR/in_fn.rs:4:5 [INFO] [stdout] +error[E0464]: multiple candidates for `rlib` dependency `you_can` found [INFO] [stdout] + --> $DIR/in_fn.rs:4:8 [INFO] [stdout] | [INFO] [stdout] 4 | #![you_can::turn_off_the_borrow_checker] [INFO] [stdout] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] + | ^^^^^^^ [INFO] [stdout] + | [INFO] [stdout] + = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib [INFO] [stdout] + = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib [INFO] [stdout] [INFO] [stdout] -warning: the borrow checker is suppressed for these references. [INFO] [stdout] - --> $DIR/in_fn.rs:9:17 [INFO] [stdout] +error[E0499]: cannot borrow `owned` as mutable more than once at a time [INFO] [stdout] + --> $DIR/in_fn.rs:10:22 [INFO] [stdout] | [INFO] [stdout] -9 | let mut_1 = &mut owned[0]; [INFO] [stdout] - | ^^^^^^^^^^^^^ [INFO] [stdout] + 9 | let mut_1 = &mut owned[0]; [INFO] [stdout] + | ----- first mutable borrow occurs here [INFO] [stdout] 10 | let mut_2 = &mut owned[1]; [INFO] [stdout] - | ^^^^^^^^^^^^^ [INFO] [stdout] + | ^^^^^ second mutable borrow occurs here [INFO] [stdout] +... [INFO] [stdout] +14 | let undefined = *mut_1 + *mut_2; [INFO] [stdout] + | ------ first borrow later used here [INFO] [stdout] + | [INFO] [stdout] + = help: use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices [INFO] [stdout] [INFO] [stdout] -warning: 2 warnings emitted [INFO] [stdout] +error[E0505]: cannot move out of `owned` because it is borrowed [INFO] [stdout] + --> $DIR/in_fn.rs:13:10 [INFO] [stdout] + | [INFO] [stdout] + 6 | let mut owned = vec![1, 32]; [INFO] [stdout] + | --------- binding `owned` declared here [INFO] [stdout] +... [INFO] [stdout] + 9 | let mut_1 = &mut owned[0]; [INFO] [stdout] + | ----- borrow of `owned` occurs here [INFO] [stdout] +... [INFO] [stdout] +13 | drop(owned); [INFO] [stdout] + | ^^^^^ move out of `owned` occurs here [INFO] [stdout] +14 | let undefined = *mut_1 + *mut_2; [INFO] [stdout] + | ------ borrow later used here [INFO] [stdout] + | [INFO] [stdout] +help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] + | [INFO] [stdout] + 9 | let mut_1 = &mut owned.clone()[0]; [INFO] [stdout] + | ++++++++ [INFO] [stdout] [INFO] [stdout] +error: aborting due to 3 previous errors [INFO] [stdout] + [INFO] [stdout] +Some errors have detailed explanations: E0464, E0499, E0505. [INFO] [stdout] +For more information about an error, try `rustc --explain E0464`. [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] The actual stderr differed from the expected stderr. [INFO] [stdout] Actual stderr saved to /tmp/in_fn.stage-id.stderr [INFO] [stdout] To update references, rerun the tests and pass the `--bless` flag [INFO] [stdout] To only update this specific test, also pass `--test-args in_fn.rs` [INFO] [stdout] [INFO] [stdout] error: 1 errors occurred comparing output. [INFO] [stdout] status: exit status: 1 [INFO] [stdout] command: "rustc" "tests/unstable-pass/in_fn.rs" "-L" "/tmp" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-C" "prefer-dynamic" "-o" "/tmp/in_fn.stage-id" "-A" "unused" "--extern" "you_can" "--extern" "unbounded" "-L" "target/debug/deps" "-L" "/opt/rustwide/target/debug/deps" "-L" "/opt/rustwide/target/debug" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib" "--edition=2021" "-L" "/tmp/in_fn.stage-id.aux" [INFO] [stdout] stdout: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] stderr: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] {"$message_type":"diagnostic","message":"multiple candidates for `rlib` dependency `you_can` found","code":{"code":"E0464","explanation":"The compiler found multiple library files with the requested crate name.\n\n```compile_fail\n// aux-build:crateresolve-1.rs\n// aux-build:crateresolve-2.rs\n// aux-build:crateresolve-3.rs\n\nextern crate crateresolve;\n//~^ ERROR multiple candidates for `rlib` dependency `crateresolve` found\n\nfn main() {}\n```\n\nThis error can occur in several different cases -- for example, when using\n`extern crate` or passing `--extern` options without crate paths. It can also be\ncaused by caching issues with the build directory, in which case `cargo clean`\nmay help.\n\nIn the above example, there are three different library files, all of which\ndefine the same crate name. Without providing a full path, there is no way for\nthe compiler to know which crate it should use.\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/in_fn.rs","byte_start":61,"byte_end":68,"line_start":4,"line_end":4,"column_start":8,"column_end":15,"is_primary":true,"text":[{"text":" #![you_can::turn_off_the_borrow_checker]","highlight_start":8,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"candidate #2: /opt/rustwide/target/debug/libyou_can.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"error[E0464]: multiple candidates for `rlib` dependency `you_can` found\n --> tests/unstable-pass/in_fn.rs:4:8\n |\n4 | #![you_can::turn_off_the_borrow_checker]\n | ^^^^^^^\n |\n = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib\n = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"cannot borrow `owned` as mutable more than once at a time","code":{"code":"E0499","explanation":"A variable was borrowed as mutable more than once.\n\nErroneous code example:\n\n```compile_fail,E0499\nlet mut i = 0;\nlet mut x = &mut i;\nlet mut a = &mut i;\nx;\n// error: cannot borrow `i` as mutable more than once at a time\n```\n\nPlease note that in Rust, you can either have many immutable references, or one\nmutable reference. For more details you may want to read the\n[References & Borrowing][references-and-borrowing] section of the Book.\n\n[references-and-borrowing]: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html\n\nExample:\n\n```\nlet mut i = 0;\nlet mut x = &mut i; // ok!\n\n// or:\nlet mut i = 0;\nlet a = &i; // ok!\nlet b = &i; // still ok!\nlet c = &i; // still ok!\nb;\na;\n```\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/in_fn.rs","byte_start":187,"byte_end":192,"line_start":9,"line_end":9,"column_start":22,"column_end":27,"is_primary":false,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":22,"highlight_end":27}],"label":"first mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/in_fn.rs","byte_start":218,"byte_end":223,"line_start":10,"line_end":10,"column_start":22,"column_end":27,"is_primary":true,"text":[{"text":" let mut_2 = &mut owned[1];","highlight_start":22,"highlight_end":27}],"label":"second mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/in_fn.rs","byte_start":288,"byte_end":294,"line_start":14,"line_end":14,"column_start":21,"column_end":27,"is_primary":false,"text":[{"text":" let undefined = *mut_1 + *mut_2;","highlight_start":21,"highlight_end":27}],"label":"first borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"error[E0499]: cannot borrow `owned` as mutable more than once at a time\n --> tests/unstable-pass/in_fn.rs:10:22\n |\n 9 | let mut_1 = &mut owned[0];\n | ----- first mutable borrow occurs here\n10 | let mut_2 = &mut owned[1];\n | ^^^^^ second mutable borrow occurs here\n...\n14 | let undefined = *mut_1 + *mut_2;\n | ------ first borrow later used here\n |\n = help: use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"cannot move out of `owned` because it is borrowed","code":{"code":"E0505","explanation":"A value was moved out while it was still borrowed.\n\nErroneous code example:\n\n```compile_fail,E0505\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n let _ref_to_val: &Value = &x;\n eat(x);\n borrow(_ref_to_val);\n}\n```\n\nHere, the function `eat` takes ownership of `x`. However,\n`x` cannot be moved because the borrow to `_ref_to_val`\nneeds to last till the function `borrow`.\nTo fix that you can do a few different things:\n\n* Try to avoid moving the variable.\n* Release borrow before move.\n* Implement the `Copy` trait on the type.\n\nExamples:\n\n```\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: &Value) {}\n\nfn main() {\n let x = Value{};\n\n let ref_to_val: &Value = &x;\n eat(&x); // pass by reference, if it's possible\n borrow(ref_to_val);\n}\n```\n\nOr:\n\n```\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n\n let ref_to_val: &Value = &x;\n borrow(ref_to_val);\n // ref_to_val is no longer used.\n eat(x);\n}\n```\n\nOr:\n\n```\n#[derive(Clone, Copy)] // implement Copy trait\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n let ref_to_val: &Value = &x;\n eat(x); // it will be copied here.\n borrow(ref_to_val);\n}\n```\n\nFor more information on Rust's ownership system, take a look at the\n[References & Borrowing][references-and-borrowing] section of the Book.\n\n[references-and-borrowing]: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/in_fn.rs","byte_start":260,"byte_end":265,"line_start":13,"line_end":13,"column_start":10,"column_end":15,"is_primary":true,"text":[{"text":" drop(owned);","highlight_start":10,"highlight_end":15}],"label":"move out of `owned` occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/in_fn.rs","byte_start":187,"byte_end":192,"line_start":9,"line_end":9,"column_start":22,"column_end":27,"is_primary":false,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":22,"highlight_end":27}],"label":"borrow of `owned` occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/in_fn.rs","byte_start":108,"byte_end":117,"line_start":6,"line_end":6,"column_start":9,"column_end":18,"is_primary":false,"text":[{"text":" let mut owned = vec![1, 32];","highlight_start":9,"highlight_end":18}],"label":"binding `owned` declared here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/in_fn.rs","byte_start":288,"byte_end":294,"line_start":14,"line_end":14,"column_start":21,"column_end":27,"is_primary":false,"text":[{"text":" let undefined = *mut_1 + *mut_2;","highlight_start":21,"highlight_end":27}],"label":"borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider cloning the value if the performance cost is acceptable","code":null,"level":"help","spans":[{"file_name":"tests/unstable-pass/in_fn.rs","byte_start":192,"byte_end":192,"line_start":9,"line_end":9,"column_start":27,"column_end":27,"is_primary":true,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":27,"highlight_end":27}],"label":null,"suggested_replacement":".clone()","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error[E0505]: cannot move out of `owned` because it is borrowed\n --> tests/unstable-pass/in_fn.rs:13:10\n |\n 6 | let mut owned = vec![1, 32];\n | --------- binding `owned` declared here\n...\n 9 | let mut_1 = &mut owned[0];\n | ----- borrow of `owned` occurs here\n...\n13 | drop(owned);\n | ^^^^^ move out of `owned` occurs here\n14 | let undefined = *mut_1 + *mut_2;\n | ------ borrow later used here\n |\nhelp: consider cloning the value if the performance cost is acceptable\n |\n 9 | let mut_1 = &mut owned.clone()[0];\n | ++++++++\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"aborting due to 3 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 3 previous errors\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0464, E0499, E0505.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"Some errors have detailed explanations: E0464, E0499, E0505.\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0464`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"For more information about an error, try `rustc --explain E0464`.\n"} [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] diff of stderr: [INFO] [stdout] [INFO] [stdout] -warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] - --> $DIR/on_fn_empty.rs:1:1 [INFO] [stdout] +error[E0464]: multiple candidates for `rlib` dependency `you_can` found [INFO] [stdout] + --> $DIR/on_fn_empty.rs:1:3 [INFO] [stdout] | [INFO] [stdout] 1 | #[you_can::turn_off_the_borrow_checker] [INFO] [stdout] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] + | ^^^^^^^ [INFO] [stdout] + | [INFO] [stdout] + = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib [INFO] [stdout] + = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib [INFO] [stdout] [INFO] [stdout] -warning: 1 warning emitted [INFO] [stdout] +error: aborting due to 1 previous error [INFO] [stdout] [INFO] [stdout] +For more information about this error, try `rustc --explain E0464`. [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] The actual stderr differed from the expected stderr. [INFO] [stdout] Actual stderr saved to /tmp/on_fn_empty.stage-id.stderr [INFO] [stdout] To update references, rerun the tests and pass the `--bless` flag [INFO] [stdout] To only update this specific test, also pass `--test-args on_fn_empty.rs` [INFO] [stdout] [INFO] [stdout] error: 1 errors occurred comparing output. [INFO] [stdout] status: exit status: 1 [INFO] [stdout] command: "rustc" "tests/unstable-pass/on_fn_empty.rs" "-L" "/tmp" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-C" "prefer-dynamic" "-o" "/tmp/on_fn_empty.stage-id" "-A" "unused" "--extern" "you_can" "--extern" "unbounded" "-L" "target/debug/deps" "-L" "/opt/rustwide/target/debug/deps" "-L" "/opt/rustwide/target/debug" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib" "--edition=2021" "-L" "/tmp/on_fn_empty.stage-id.aux" [INFO] [stdout] stdout: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] stderr: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] {"$message_type":"diagnostic","message":"multiple candidates for `rlib` dependency `you_can` found","code":{"code":"E0464","explanation":"The compiler found multiple library files with the requested crate name.\n\n```compile_fail\n// aux-build:crateresolve-1.rs\n// aux-build:crateresolve-2.rs\n// aux-build:crateresolve-3.rs\n\nextern crate crateresolve;\n//~^ ERROR multiple candidates for `rlib` dependency `crateresolve` found\n\nfn main() {}\n```\n\nThis error can occur in several different cases -- for example, when using\n`extern crate` or passing `--extern` options without crate paths. It can also be\ncaused by caching issues with the build directory, in which case `cargo clean`\nmay help.\n\nIn the above example, there are three different library files, all of which\ndefine the same crate name. Without providing a full path, there is no way for\nthe compiler to know which crate it should use.\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/on_fn_empty.rs","byte_start":2,"byte_end":9,"line_start":1,"line_end":1,"column_start":3,"column_end":10,"is_primary":true,"text":[{"text":"#[you_can::turn_off_the_borrow_checker]","highlight_start":3,"highlight_end":10}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"candidate #2: /opt/rustwide/target/debug/libyou_can.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"error[E0464]: multiple candidates for `rlib` dependency `you_can` found\n --> tests/unstable-pass/on_fn_empty.rs:1:3\n |\n1 | #[you_can::turn_off_the_borrow_checker]\n | ^^^^^^^\n |\n = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib\n = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"aborting due to 1 previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 1 previous error\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"For more information about this error, try `rustc --explain E0464`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"For more information about this error, try `rustc --explain E0464`.\n"} [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] diff of stderr: [INFO] [stdout] [INFO] [stdout] -warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] - --> $DIR/on_mod.rs:1:1 [INFO] [stdout] +error[E0464]: multiple candidates for `rlib` dependency `you_can` found [INFO] [stdout] + --> $DIR/on_mod.rs:1:3 [INFO] [stdout] | [INFO] [stdout] 1 | #[you_can::turn_off_the_borrow_checker] [INFO] [stdout] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] - [INFO] [stdout] -warning: the borrow checker is suppressed for these references. [INFO] [stdout] - --> $DIR/on_mod.rs:7:21 [INFO] [stdout] + | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] -7 | let mut_1 = &mut owned[0]; [INFO] [stdout] - | ^^^^^^^^^^^^^ [INFO] [stdout] -8 | let mut_2 = &mut owned[1]; [INFO] [stdout] - | ^^^^^^^^^^^^^ [INFO] [stdout] + = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib [INFO] [stdout] + = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib [INFO] [stdout] [INFO] [stdout] -warning: 2 warnings emitted [INFO] [stdout] +error[E0499]: cannot borrow `owned` as mutable more than once at a time [INFO] [stdout] + --> $DIR/on_mod.rs:8:26 [INFO] [stdout] + | [INFO] [stdout] + 7 | let mut_1 = &mut owned[0]; [INFO] [stdout] + | ----- first mutable borrow occurs here [INFO] [stdout] + 8 | let mut_2 = &mut owned[1]; [INFO] [stdout] + | ^^^^^ second mutable borrow occurs here [INFO] [stdout] +... [INFO] [stdout] +12 | let undefined = *mut_1 + *mut_2; [INFO] [stdout] + | ------ first borrow later used here [INFO] [stdout] + | [INFO] [stdout] + = help: use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices [INFO] [stdout] [INFO] [stdout] +error[E0505]: cannot move out of `owned` because it is borrowed [INFO] [stdout] + --> $DIR/on_mod.rs:11:14 [INFO] [stdout] + | [INFO] [stdout] + 4 | let mut owned = vec![1, 32]; [INFO] [stdout] + | --------- binding `owned` declared here [INFO] [stdout] +... [INFO] [stdout] + 7 | let mut_1 = &mut owned[0]; [INFO] [stdout] + | ----- borrow of `owned` occurs here [INFO] [stdout] +... [INFO] [stdout] +11 | drop(owned); [INFO] [stdout] + | ^^^^^ move out of `owned` occurs here [INFO] [stdout] +12 | let undefined = *mut_1 + *mut_2; [INFO] [stdout] + | ------ borrow later used here [INFO] [stdout] + | [INFO] [stdout] +help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] + | [INFO] [stdout] + 7 | let mut_1 = &mut owned.clone()[0]; [INFO] [stdout] + | ++++++++ [INFO] [stdout] + [INFO] [stdout] +error: aborting due to 3 previous errors [INFO] [stdout] + [INFO] [stdout] +Some errors have detailed explanations: E0464, E0499, E0505. [INFO] [stdout] +For more information about an error, try `rustc --explain E0464`. [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] The actual stderr differed from the expected stderr. [INFO] [stdout] Actual stderr saved to /tmp/on_mod.stage-id.stderr [INFO] [stdout] To update references, rerun the tests and pass the `--bless` flag [INFO] [stdout] To only update this specific test, also pass `--test-args on_mod.rs` [INFO] [stdout] [INFO] [stdout] error: 1 errors occurred comparing output. [INFO] [stdout] status: exit status: 1 [INFO] [stdout] command: "rustc" "tests/unstable-pass/on_mod.rs" "-L" "/tmp" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-C" "prefer-dynamic" "-o" "/tmp/on_mod.stage-id" "-A" "unused" "--extern" "you_can" "--extern" "unbounded" "-L" "target/debug/deps" "-L" "/opt/rustwide/target/debug/deps" "-L" "/opt/rustwide/target/debug" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib" "--edition=2021" "-L" "/tmp/on_mod.stage-id.aux" [INFO] [stdout] stdout: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] stderr: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] {"$message_type":"diagnostic","message":"multiple candidates for `rlib` dependency `you_can` found","code":{"code":"E0464","explanation":"The compiler found multiple library files with the requested crate name.\n\n```compile_fail\n// aux-build:crateresolve-1.rs\n// aux-build:crateresolve-2.rs\n// aux-build:crateresolve-3.rs\n\nextern crate crateresolve;\n//~^ ERROR multiple candidates for `rlib` dependency `crateresolve` found\n\nfn main() {}\n```\n\nThis error can occur in several different cases -- for example, when using\n`extern crate` or passing `--extern` options without crate paths. It can also be\ncaused by caching issues with the build directory, in which case `cargo clean`\nmay help.\n\nIn the above example, there are three different library files, all of which\ndefine the same crate name. Without providing a full path, there is no way for\nthe compiler to know which crate it should use.\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/on_mod.rs","byte_start":2,"byte_end":9,"line_start":1,"line_end":1,"column_start":3,"column_end":10,"is_primary":true,"text":[{"text":"#[you_can::turn_off_the_borrow_checker]","highlight_start":3,"highlight_end":10}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"candidate #2: /opt/rustwide/target/debug/libyou_can.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"error[E0464]: multiple candidates for `rlib` dependency `you_can` found\n --> tests/unstable-pass/on_mod.rs:1:3\n |\n1 | #[you_can::turn_off_the_borrow_checker]\n | ^^^^^^^\n |\n = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib\n = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"cannot borrow `owned` as mutable more than once at a time","code":{"code":"E0499","explanation":"A variable was borrowed as mutable more than once.\n\nErroneous code example:\n\n```compile_fail,E0499\nlet mut i = 0;\nlet mut x = &mut i;\nlet mut a = &mut i;\nx;\n// error: cannot borrow `i` as mutable more than once at a time\n```\n\nPlease note that in Rust, you can either have many immutable references, or one\nmutable reference. For more details you may want to read the\n[References & Borrowing][references-and-borrowing] section of the Book.\n\n[references-and-borrowing]: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html\n\nExample:\n\n```\nlet mut i = 0;\nlet mut x = &mut i; // ok!\n\n// or:\nlet mut i = 0;\nlet a = &i; // ok!\nlet b = &i; // still ok!\nlet c = &i; // still ok!\nb;\na;\n```\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/on_mod.rs","byte_start":171,"byte_end":176,"line_start":7,"line_end":7,"column_start":26,"column_end":31,"is_primary":false,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":26,"highlight_end":31}],"label":"first mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_mod.rs","byte_start":206,"byte_end":211,"line_start":8,"line_end":8,"column_start":26,"column_end":31,"is_primary":true,"text":[{"text":" let mut_2 = &mut owned[1];","highlight_start":26,"highlight_end":31}],"label":"second mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_mod.rs","byte_start":288,"byte_end":294,"line_start":12,"line_end":12,"column_start":25,"column_end":31,"is_primary":false,"text":[{"text":" let undefined = *mut_1 + *mut_2;","highlight_start":25,"highlight_end":31}],"label":"first borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"error[E0499]: cannot borrow `owned` as mutable more than once at a time\n --> tests/unstable-pass/on_mod.rs:8:26\n |\n 7 | let mut_1 = &mut owned[0];\n | ----- first mutable borrow occurs here\n 8 | let mut_2 = &mut owned[1];\n | ^^^^^ second mutable borrow occurs here\n...\n12 | let undefined = *mut_1 + *mut_2;\n | ------ first borrow later used here\n |\n = help: use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"cannot move out of `owned` because it is borrowed","code":{"code":"E0505","explanation":"A value was moved out while it was still borrowed.\n\nErroneous code example:\n\n```compile_fail,E0505\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n let _ref_to_val: &Value = &x;\n eat(x);\n borrow(_ref_to_val);\n}\n```\n\nHere, the function `eat` takes ownership of `x`. However,\n`x` cannot be moved because the borrow to `_ref_to_val`\nneeds to last till the function `borrow`.\nTo fix that you can do a few different things:\n\n* Try to avoid moving the variable.\n* Release borrow before move.\n* Implement the `Copy` trait on the type.\n\nExamples:\n\n```\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: &Value) {}\n\nfn main() {\n let x = Value{};\n\n let ref_to_val: &Value = &x;\n eat(&x); // pass by reference, if it's possible\n borrow(ref_to_val);\n}\n```\n\nOr:\n\n```\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n\n let ref_to_val: &Value = &x;\n borrow(ref_to_val);\n // ref_to_val is no longer used.\n eat(x);\n}\n```\n\nOr:\n\n```\n#[derive(Clone, Copy)] // implement Copy trait\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n let ref_to_val: &Value = &x;\n eat(x); // it will be copied here.\n borrow(ref_to_val);\n}\n```\n\nFor more information on Rust's ownership system, take a look at the\n[References & Borrowing][references-and-borrowing] section of the Book.\n\n[references-and-borrowing]: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/on_mod.rs","byte_start":256,"byte_end":261,"line_start":11,"line_end":11,"column_start":14,"column_end":19,"is_primary":true,"text":[{"text":" drop(owned);","highlight_start":14,"highlight_end":19}],"label":"move out of `owned` occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_mod.rs","byte_start":171,"byte_end":176,"line_start":7,"line_end":7,"column_start":26,"column_end":31,"is_primary":false,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":26,"highlight_end":31}],"label":"borrow of `owned` occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_mod.rs","byte_start":84,"byte_end":93,"line_start":4,"line_end":4,"column_start":13,"column_end":22,"is_primary":false,"text":[{"text":" let mut owned = vec![1, 32];","highlight_start":13,"highlight_end":22}],"label":"binding `owned` declared here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_mod.rs","byte_start":288,"byte_end":294,"line_start":12,"line_end":12,"column_start":25,"column_end":31,"is_primary":false,"text":[{"text":" let undefined = *mut_1 + *mut_2;","highlight_start":25,"highlight_end":31}],"label":"borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider cloning the value if the performance cost is acceptable","code":null,"level":"help","spans":[{"file_name":"tests/unstable-pass/on_mod.rs","byte_start":176,"byte_end":176,"line_start":7,"line_end":7,"column_start":31,"column_end":31,"is_primary":true,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":31,"highlight_end":31}],"label":null,"suggested_replacement":".clone()","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error[E0505]: cannot move out of `owned` because it is borrowed\n --> tests/unstable-pass/on_mod.rs:11:14\n |\n 4 | let mut owned = vec![1, 32];\n | --------- binding `owned` declared here\n...\n 7 | let mut_1 = &mut owned[0];\n | ----- borrow of `owned` occurs here\n...\n11 | drop(owned);\n | ^^^^^ move out of `owned` occurs here\n12 | let undefined = *mut_1 + *mut_2;\n | ------ borrow later used here\n |\nhelp: consider cloning the value if the performance cost is acceptable\n |\n 7 | let mut_1 = &mut owned.clone()[0];\n | ++++++++\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"aborting due to 3 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 3 previous errors\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0464, E0499, E0505.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"Some errors have detailed explanations: E0464, E0499, E0505.\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0464`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"For more information about an error, try `rustc --explain E0464`.\n"} [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] diff of stderr: [INFO] [stdout] [INFO] [stdout] -warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] - --> $DIR/on_statement.rs:6:5 [INFO] [stdout] +error[E0464]: multiple candidates for `rlib` dependency `you_can` found [INFO] [stdout] + --> $DIR/on_statement.rs:6:7 [INFO] [stdout] | [INFO] [stdout] 6 | #[you_can::turn_off_the_borrow_checker] [INFO] [stdout] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] - [INFO] [stdout] -warning: this suppresses the borrow checker in an unsafe, unsound, and unstable way that produces undefined behaviour. this is not suitable for any purpose beyond educational experimentation. [INFO] [stdout] - --> $DIR/on_statement.rs:8:5 [INFO] [stdout] + | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] -8 | #[you_can::turn_off_the_borrow_checker] [INFO] [stdout] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] + = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib [INFO] [stdout] + = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib [INFO] [stdout] [INFO] [stdout] -warning: 2 warnings emitted [INFO] [stdout] +error[E0499]: cannot borrow `owned` as mutable more than once at a time [INFO] [stdout] + --> $DIR/on_statement.rs:9:22 [INFO] [stdout] + | [INFO] [stdout] + 7 | let mut_1 = &mut owned[0]; [INFO] [stdout] + | ----- first mutable borrow occurs here [INFO] [stdout] + 8 | #[you_can::turn_off_the_borrow_checker] [INFO] [stdout] + 9 | let mut_2 = &mut owned[1]; [INFO] [stdout] + | ^^^^^ second mutable borrow occurs here [INFO] [stdout] +... [INFO] [stdout] +13 | let undefined = *mut_1 + *mut_2; [INFO] [stdout] + | ------ first borrow later used here [INFO] [stdout] + | [INFO] [stdout] + = help: use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices [INFO] [stdout] [INFO] [stdout] +error[E0505]: cannot move out of `owned` because it is borrowed [INFO] [stdout] + --> $DIR/on_statement.rs:12:10 [INFO] [stdout] + | [INFO] [stdout] + 4 | let mut owned = vec![1, 32]; [INFO] [stdout] + | --------- binding `owned` declared here [INFO] [stdout] +... [INFO] [stdout] + 7 | let mut_1 = &mut owned[0]; [INFO] [stdout] + | ----- borrow of `owned` occurs here [INFO] [stdout] +... [INFO] [stdout] +12 | drop(owned); [INFO] [stdout] + | ^^^^^ move out of `owned` occurs here [INFO] [stdout] +13 | let undefined = *mut_1 + *mut_2; [INFO] [stdout] + | ------ borrow later used here [INFO] [stdout] + | [INFO] [stdout] +help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] + | [INFO] [stdout] + 7 | let mut_1 = &mut owned.clone()[0]; [INFO] [stdout] + | ++++++++ [INFO] [stdout] + [INFO] [stdout] +error: aborting due to 3 previous errors [INFO] [stdout] + [INFO] [stdout] +Some errors have detailed explanations: E0464, E0499, E0505. [INFO] [stdout] +For more information about an error, try `rustc --explain E0464`. [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] The actual stderr differed from the expected stderr. [INFO] [stdout] Actual stderr saved to /tmp/on_statement.stage-id.stderr [INFO] [stdout] To update references, rerun the tests and pass the `--bless` flag [INFO] [stdout] To only update this specific test, also pass `--test-args on_statement.rs` [INFO] [stdout] [INFO] [stdout] error: 1 errors occurred comparing output. [INFO] [stdout] status: exit status: 1 [INFO] [stdout] command: "rustc" "tests/unstable-pass/on_statement.rs" "-L" "/tmp" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-C" "prefer-dynamic" "-o" "/tmp/on_statement.stage-id" "-A" "unused" "--extern" "you_can" "--extern" "unbounded" "-L" "target/debug/deps" "-L" "/opt/rustwide/target/debug/deps" "-L" "/opt/rustwide/target/debug" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-L" "/opt/rustwide/rustup-home/toolchains/caccb4d0368bd918ef6668af8e13834d07040417/lib" "--edition=2021" "-L" "/tmp/on_statement.stage-id.aux" [INFO] [stdout] stdout: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] stderr: [INFO] [stdout] ------------------------------------------ [INFO] [stdout] {"$message_type":"diagnostic","message":"multiple candidates for `rlib` dependency `you_can` found","code":{"code":"E0464","explanation":"The compiler found multiple library files with the requested crate name.\n\n```compile_fail\n// aux-build:crateresolve-1.rs\n// aux-build:crateresolve-2.rs\n// aux-build:crateresolve-3.rs\n\nextern crate crateresolve;\n//~^ ERROR multiple candidates for `rlib` dependency `crateresolve` found\n\nfn main() {}\n```\n\nThis error can occur in several different cases -- for example, when using\n`extern crate` or passing `--extern` options without crate paths. It can also be\ncaused by caching issues with the build directory, in which case `cargo clean`\nmay help.\n\nIn the above example, there are three different library files, all of which\ndefine the same crate name. Without providing a full path, there is no way for\nthe compiler to know which crate it should use.\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/on_statement.rs","byte_start":142,"byte_end":149,"line_start":6,"line_end":6,"column_start":7,"column_end":14,"is_primary":true,"text":[{"text":" #[you_can::turn_off_the_borrow_checker]","highlight_start":7,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"candidate #2: /opt/rustwide/target/debug/libyou_can.rlib","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"error[E0464]: multiple candidates for `rlib` dependency `you_can` found\n --> tests/unstable-pass/on_statement.rs:6:7\n |\n6 | #[you_can::turn_off_the_borrow_checker]\n | ^^^^^^^\n |\n = note: candidate #1: /opt/rustwide/target/debug/deps/libyou_can-b08806133707d29a.rlib\n = note: candidate #2: /opt/rustwide/target/debug/libyou_can.rlib\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"cannot borrow `owned` as mutable more than once at a time","code":{"code":"E0499","explanation":"A variable was borrowed as mutable more than once.\n\nErroneous code example:\n\n```compile_fail,E0499\nlet mut i = 0;\nlet mut x = &mut i;\nlet mut a = &mut i;\nx;\n// error: cannot borrow `i` as mutable more than once at a time\n```\n\nPlease note that in Rust, you can either have many immutable references, or one\nmutable reference. For more details you may want to read the\n[References & Borrowing][references-and-borrowing] section of the Book.\n\n[references-and-borrowing]: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html\n\nExample:\n\n```\nlet mut i = 0;\nlet mut x = &mut i; // ok!\n\n// or:\nlet mut i = 0;\nlet a = &i; // ok!\nlet b = &i; // still ok!\nlet c = &i; // still ok!\nb;\na;\n```\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/on_statement.rs","byte_start":201,"byte_end":206,"line_start":7,"line_end":7,"column_start":22,"column_end":27,"is_primary":false,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":22,"highlight_end":27}],"label":"first mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_statement.rs","byte_start":276,"byte_end":281,"line_start":9,"line_end":9,"column_start":22,"column_end":27,"is_primary":true,"text":[{"text":" let mut_2 = &mut owned[1];","highlight_start":22,"highlight_end":27}],"label":"second mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_statement.rs","byte_start":346,"byte_end":352,"line_start":13,"line_end":13,"column_start":21,"column_end":27,"is_primary":false,"text":[{"text":" let undefined = *mut_1 + *mut_2;","highlight_start":21,"highlight_end":27}],"label":"first borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"error[E0499]: cannot borrow `owned` as mutable more than once at a time\n --> tests/unstable-pass/on_statement.rs:9:22\n |\n 7 | let mut_1 = &mut owned[0];\n | ----- first mutable borrow occurs here\n 8 | #[you_can::turn_off_the_borrow_checker]\n 9 | let mut_2 = &mut owned[1];\n | ^^^^^ second mutable borrow occurs here\n...\n13 | let undefined = *mut_1 + *mut_2;\n | ------ first borrow later used here\n |\n = help: use `.split_at_mut(position)` to obtain two mutable non-overlapping sub-slices\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"cannot move out of `owned` because it is borrowed","code":{"code":"E0505","explanation":"A value was moved out while it was still borrowed.\n\nErroneous code example:\n\n```compile_fail,E0505\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n let _ref_to_val: &Value = &x;\n eat(x);\n borrow(_ref_to_val);\n}\n```\n\nHere, the function `eat` takes ownership of `x`. However,\n`x` cannot be moved because the borrow to `_ref_to_val`\nneeds to last till the function `borrow`.\nTo fix that you can do a few different things:\n\n* Try to avoid moving the variable.\n* Release borrow before move.\n* Implement the `Copy` trait on the type.\n\nExamples:\n\n```\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: &Value) {}\n\nfn main() {\n let x = Value{};\n\n let ref_to_val: &Value = &x;\n eat(&x); // pass by reference, if it's possible\n borrow(ref_to_val);\n}\n```\n\nOr:\n\n```\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n\n let ref_to_val: &Value = &x;\n borrow(ref_to_val);\n // ref_to_val is no longer used.\n eat(x);\n}\n```\n\nOr:\n\n```\n#[derive(Clone, Copy)] // implement Copy trait\nstruct Value {}\n\nfn borrow(val: &Value) {}\n\nfn eat(val: Value) {}\n\nfn main() {\n let x = Value{};\n let ref_to_val: &Value = &x;\n eat(x); // it will be copied here.\n borrow(ref_to_val);\n}\n```\n\nFor more information on Rust's ownership system, take a look at the\n[References & Borrowing][references-and-borrowing] section of the Book.\n\n[references-and-borrowing]: https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html\n"},"level":"error","spans":[{"file_name":"tests/unstable-pass/on_statement.rs","byte_start":318,"byte_end":323,"line_start":12,"line_end":12,"column_start":10,"column_end":15,"is_primary":true,"text":[{"text":" drop(owned);","highlight_start":10,"highlight_end":15}],"label":"move out of `owned` occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_statement.rs","byte_start":201,"byte_end":206,"line_start":7,"line_end":7,"column_start":22,"column_end":27,"is_primary":false,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":22,"highlight_end":27}],"label":"borrow of `owned` occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_statement.rs","byte_start":79,"byte_end":88,"line_start":4,"line_end":4,"column_start":9,"column_end":18,"is_primary":false,"text":[{"text":" let mut owned = vec![1, 32];","highlight_start":9,"highlight_end":18}],"label":"binding `owned` declared here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/unstable-pass/on_statement.rs","byte_start":346,"byte_end":352,"line_start":13,"line_end":13,"column_start":21,"column_end":27,"is_primary":false,"text":[{"text":" let undefined = *mut_1 + *mut_2;","highlight_start":21,"highlight_end":27}],"label":"borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider cloning the value if the performance cost is acceptable","code":null,"level":"help","spans":[{"file_name":"tests/unstable-pass/on_statement.rs","byte_start":206,"byte_end":206,"line_start":7,"line_end":7,"column_start":27,"column_end":27,"is_primary":true,"text":[{"text":" let mut_1 = &mut owned[0];","highlight_start":27,"highlight_end":27}],"label":null,"suggested_replacement":".clone()","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error[E0505]: cannot move out of `owned` because it is borrowed\n --> tests/unstable-pass/on_statement.rs:12:10\n |\n 4 | let mut owned = vec![1, 32];\n | --------- binding `owned` declared here\n...\n 7 | let mut_1 = &mut owned[0];\n | ----- borrow of `owned` occurs here\n...\n12 | drop(owned);\n | ^^^^^ move out of `owned` occurs here\n13 | let undefined = *mut_1 + *mut_2;\n | ------ borrow later used here\n |\nhelp: consider cloning the value if the performance cost is acceptable\n |\n 7 | let mut_1 = &mut owned.clone()[0];\n | ++++++++\n\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"aborting due to 3 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 3 previous errors\n\n"} [INFO] [stderr] error: test failed, to rerun pass `--test compile_tests` [INFO] [stdout] {"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0464, E0499, E0505.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"Some errors have detailed explanations: E0464, E0499, E0505.\n"} [INFO] [stdout] {"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0464`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"For more information about an error, try `rustc --explain E0464`.\n"} [INFO] [stdout] [INFO] [stdout] ------------------------------------------ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] thread 'run_pass' (19) panicked at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/compiletest_rs-0.8.0/src/lib.rs:111:22: [INFO] [stdout] Some tests failed [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x5fce746d94b2 - std::backtrace_rs::backtrace::libunwind::trace::h76861be37b31432e [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x5fce746d94b2 - std::backtrace_rs::backtrace::trace_unsynchronized::h58d4003082192c17 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x5fce746d94b2 - std::sys::backtrace::_print_fmt::hfe5857a399620d2a [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/sys/backtrace.rs:66:9 [INFO] [stdout] 3: 0x5fce746d94b2 - ::fmt::h52160e9da139e442 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/sys/backtrace.rs:39:26 [INFO] [stdout] 4: 0x5fce746ead0f - core::fmt::rt::Argument::fmt::h66fe6fef9ecca14a [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/core/src/fmt/rt.rs:173:76 [INFO] [stdout] 5: 0x5fce746ead0f - core::fmt::write::hf09a056a304e021a [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/core/src/fmt/mod.rs:1468:25 [INFO] [stdout] 6: 0x5fce746a0d31 - std::io::default_write_fmt::hf1a3645468226e09 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x5fce746a0d31 - std::io::Write::write_fmt::ha5ada6d6a18bde33 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/io/mod.rs:1954:13 [INFO] [stdout] 8: 0x5fce746ae502 - std::sys::backtrace::BacktraceLock::print::h15104dbcf0fd1f14 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/sys/backtrace.rs:42:9 [INFO] [stdout] 9: 0x5fce746b3a6f - std::panicking::default_hook::{{closure}}::h0fa6cd8dbe0dd76b [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/panicking.rs:301:27 [INFO] [stdout] 10: 0x5fce746b3901 - std::panicking::default_hook::h8d20506cf72e4831 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/panicking.rs:325:9 [INFO] [stdout] 11: 0x5fce74385aee - as core::ops::function::Fn>::call::h3d020961abd83a77 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/alloc/src/boxed.rs:1987:9 [INFO] [stdout] 12: 0x5fce74385aee - test::test_main_with_exit_callback::{{closure}}::h720dd2fdb2ddcdca [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x5fce746b41df - as core::ops::function::Fn>::call::h75334a5fed245bca [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/alloc/src/boxed.rs:1987:9 [INFO] [stdout] 14: 0x5fce746b41df - std::panicking::panic_with_hook::h746880a052e02c85 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/panicking.rs:842:13 [INFO] [stdout] 15: 0x5fce746b377c - std::panicking::begin_panic::{{closure}}::h90f509d0ce56dcf8 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/panicking.rs:771:9 [INFO] [stdout] 16: 0x5fce746ae649 - std::sys::backtrace::__rust_end_short_backtrace::h979a48b505515cda [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/sys/backtrace.rs:174:18 [INFO] [stdout] 17: 0x5fce746b3742 - std::panicking::begin_panic::h9756318d0a5bc692 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/panicking.rs:770:5 [INFO] [stdout] 18: 0x5fce74438b04 - compiletest_rs::run_tests::hd5fbba513fd7ba47 [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/compiletest_rs-0.8.0/src/lib.rs:111:22 [INFO] [stdout] 19: 0x5fce7434bcca - compile_tests::run_pass::h774c8ec8fcef1448 [INFO] [stdout] at /opt/rustwide/workdir/tests/compile_tests.rs:28:5 [INFO] [stdout] 20: 0x5fce7434bd27 - compile_tests::run_pass::{{closure}}::h2ecde294604d60f0 [INFO] [stdout] at /opt/rustwide/workdir/tests/compile_tests.rs:4:14 [INFO] [stdout] 21: 0x5fce7434bed6 - core::ops::function::FnOnce::call_once::hc1df91148dbc7b1a [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 22: 0x5fce7438591b - core::ops::function::FnOnce::call_once::h933a5d67211adff2 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 23: 0x5fce7438591b - test::__rust_begin_short_backtrace::h2157af19b0990ffb [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/test/src/lib.rs:663:18 [INFO] [stdout] 24: 0x5fce7439b4f5 - test::run_test_in_process::{{closure}}::hc3b17e0f313c900a [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/test/src/lib.rs:686:74 [INFO] [stdout] 25: 0x5fce7439b4f5 - as core::ops::function::FnOnce<()>>::call_once::ha23e4b490259273c [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 26: 0x5fce7439b4f5 - std::panicking::catch_unwind::do_call::h8dc9d5da83792f7a [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/panicking.rs:590:40 [INFO] [stdout] 27: 0x5fce7439b4f5 - std::panicking::catch_unwind::h0d8461330de4a18b [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/panicking.rs:553:19 [INFO] [stdout] 28: 0x5fce7439b4f5 - std::panic::catch_unwind::h0321b51397bf9811 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/panic.rs:359:14 [INFO] [stdout] 29: 0x5fce7439b4f5 - test::run_test_in_process::hcaaa440fdbe4a513 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/test/src/lib.rs:686:27 [INFO] [stdout] 30: 0x5fce7439b4f5 - test::run_test::{{closure}}::h6345da602b85d6c3 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/test/src/lib.rs:607:43 [INFO] [stdout] 31: 0x5fce74371d04 - test::run_test::{{closure}}::h90a3b75194d37b5d [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/test/src/lib.rs:637:41 [INFO] [stdout] 32: 0x5fce74371d04 - std::sys::backtrace::__rust_begin_short_backtrace::hae41a17001f53ede [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/sys/backtrace.rs:158:18 [INFO] [stdout] 33: 0x5fce743755ca - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h6ea895368381e0b1 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/thread/mod.rs:559:17 [INFO] [stdout] 34: 0x5fce743755ca - as core::ops::function::FnOnce<()>>::call_once::h9c39013633bb9237 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 35: 0x5fce743755ca - std::panicking::catch_unwind::do_call::hac7dba9ee4d99108 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/panicking.rs:590:40 [INFO] [stdout] 36: 0x5fce743755ca - std::panicking::catch_unwind::h73015d00e4866ebc [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/panicking.rs:553:19 [INFO] [stdout] 37: 0x5fce743755ca - std::panic::catch_unwind::h6f7b38e188aa4f62 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/panic.rs:359:14 [INFO] [stdout] 38: 0x5fce743755ca - std::thread::Builder::spawn_unchecked_::{{closure}}::h969a6a2dc1856df7 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/thread/mod.rs:557:30 [INFO] [stdout] 39: 0x5fce743755ca - core::ops::function::FnOnce::call_once{{vtable.shim}}::h269ad1ff23e72122 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 40: 0x5fce746a8fbf - as core::ops::function::FnOnce>::call_once::hdd09a470c130e806 [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/alloc/src/boxed.rs:1973:9 [INFO] [stdout] 41: 0x5fce746a8fbf - std::sys::thread::unix::Thread::new::thread_start::h14ea1ba6e320367c [INFO] [stdout] at /rustc/caccb4d0368bd918ef6668af8e13834d07040417/library/std/src/sys/thread/unix.rs:126:17 [INFO] [stdout] 42: 0x782959cfeaa4 - [INFO] [stdout] 43: 0x782959d8ba34 - clone [INFO] [stdout] 44: 0x0 - [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] run_pass [INFO] [stdout] [INFO] [stdout] test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "6d0f1ebd0b29194fea5f5756fa00057e68b2fad7d6eb3a4260ab7650d2a2ea2b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6d0f1ebd0b29194fea5f5756fa00057e68b2fad7d6eb3a4260ab7650d2a2ea2b", kill_on_drop: false }` [INFO] [stdout] 6d0f1ebd0b29194fea5f5756fa00057e68b2fad7d6eb3a4260ab7650d2a2ea2b