[INFO] fetching crate rust-overture 0.4.0... [INFO] testing rust-overture-0.4.0 against try#b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b for pr-145330-1 [INFO] extracting crate rust-overture 0.4.0 into /workspace/builds/worker-1-tc2/source [INFO] started tweaking crates.io crate rust-overture 0.4.0 [INFO] finished tweaking crates.io crate rust-overture 0.4.0 [INFO] tweaked toml for crates.io crate rust-overture 0.4.0 written to /workspace/builds/worker-1-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate rust-overture 0.4.0 on toolchain b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate rust-overture 0.4.0 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" "+b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] fd119d97c09507f1c609d81c57dc1380da5cedd7c43fdc0e6c2a2dd2b2dee89a [INFO] running `Command { std: "docker" "start" "-a" "fd119d97c09507f1c609d81c57dc1380da5cedd7c43fdc0e6c2a2dd2b2dee89a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "fd119d97c09507f1c609d81c57dc1380da5cedd7c43fdc0e6c2a2dd2b2dee89a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fd119d97c09507f1c609d81c57dc1380da5cedd7c43fdc0e6c2a2dd2b2dee89a", kill_on_drop: false }` [INFO] [stdout] fd119d97c09507f1c609d81c57dc1380da5cedd7c43fdc0e6c2a2dd2b2dee89a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 35e65ecb7b5e166fc444fc381c2a469dd91b1a3383023a12cc5cd4fc62ea4f76 [INFO] running `Command { std: "docker" "start" "-a" "35e65ecb7b5e166fc444fc381c2a469dd91b1a3383023a12cc5cd4fc62ea4f76", kill_on_drop: false }` [INFO] [stderr] Compiling rust-overture v0.4.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::collections::VecDeque` [INFO] [stdout] --> src/suites.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::VecDeque; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.80s [INFO] running `Command { std: "docker" "inspect" "35e65ecb7b5e166fc444fc381c2a469dd91b1a3383023a12cc5cd4fc62ea4f76", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "35e65ecb7b5e166fc444fc381c2a469dd91b1a3383023a12cc5cd4fc62ea4f76", kill_on_drop: false }` [INFO] [stdout] 35e65ecb7b5e166fc444fc381c2a469dd91b1a3383023a12cc5cd4fc62ea4f76 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 381815ce9f1d5a8a30cb61e9777bbcc7e1e52646dd121b0dded890e479c93afd [INFO] running `Command { std: "docker" "start" "-a" "381815ce9f1d5a8a30cb61e9777bbcc7e1e52646dd121b0dded890e479c93afd", kill_on_drop: false }` [INFO] [stdout] warning: unused import: `std::collections::VecDeque` [INFO] [stdout] --> src/suites.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::VecDeque; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling rust-overture v0.4.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: duplicated attribute [INFO] [stdout] --> src/compose.rs:137:5 [INFO] [stdout] | [INFO] [stdout] 137 | #[test] [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(duplicate_macro_attributes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::VecDeque` [INFO] [stdout] --> src/suites.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::VecDeque; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/result.rs:213:28 [INFO] [stdout] | [INFO] [stdout] 213 | let results = vec![Ok(1), Ok(2), Ok(3)]; [INFO] [stdout] | ^^ cannot infer type of the type parameter `E` declared on the enum `Result` [INFO] [stdout] | [INFO] [stdout] help: consider specifying the generic arguments [INFO] [stdout] | [INFO] [stdout] 213 | let results = vec![Ok::(1), Ok(2), Ok(3)]; [INFO] [stdout] | ++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0271]: expected `{closure@result.rs:243:40}` to return `{closure@result.rs:243:40}`, but it returns `String` [INFO] [stdout] --> src/result.rs:243:44 [INFO] [stdout] | [INFO] [stdout] 243 | let mapped = map_error(result, |e| format!("Error: {}", e)); [INFO] [stdout] | --------- --- ^^^^^^^^^^^^^^^^^^^^^^^ expected closure, found `String` [INFO] [stdout] | | | [INFO] [stdout] | | this closure [INFO] [stdout] | | the expected closure [INFO] [stdout] | required by a bound introduced by this call [INFO] [stdout] | [INFO] [stdout] = note: expected closure `{closure@src/result.rs:243:40: 243:43}` [INFO] [stdout] found struct `String` [INFO] [stdout] note: required by a bound in `result::map_error` [INFO] [stdout] --> src/result.rs:114:21 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn map_error(result: Result, transform: F) -> Result [INFO] [stdout] | --------- required by a bound in this function [INFO] [stdout] 113 | where [INFO] [stdout] 114 | F: FnOnce(E) -> F, [INFO] [stdout] | ^ required by this bound in `map_error` [INFO] [stdout] = note: this error originates in the macro `format` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Result` [INFO] [stdout] --> src/result.rs:244:9 [INFO] [stdout] | [INFO] [stdout] 244 | assert_eq!(mapped, Err("Error: error".to_string())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | Result [INFO] [stdout] | Result<_, String> [INFO] [stdout] | [INFO] [stdout] note: the foreign item type `Result` doesn't implement `PartialEq>` [INFO] [stdout] --> /rustc/b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b/library/core/src/result.rs:549:1 [INFO] [stdout] | [INFO] [stdout] = note: not implement `PartialEq>` [INFO] [stdout] = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `{closure@src/result.rs:243:40: 243:43}` doesn't implement `Debug` [INFO] [stdout] --> src/result.rs:244:9 [INFO] [stdout] | [INFO] [stdout] 243 | let mapped = map_error(result, |e| format!("Error: {}", e)); [INFO] [stdout] | --- consider calling this closure [INFO] [stdout] 244 | assert_eq!(mapped, Err("Error: error".to_string())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Debug` is not implemented for closure `{closure@src/result.rs:243:40: 243:43}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `Debug` is implemented for `Result` [INFO] [stdout] = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0271]: expected `{closure@setter.rs:205:22}` to return `Box _>`, but it returns `Box<{closure@setter.rs:205:60}>` [INFO] [stdout] --> src/setter.rs:205:51 [INFO] [stdout] | [INFO] [stdout] 205 | let setter = |f: Box i32>| Box::new(move |x: i32| f(x)); [INFO] [stdout] | ---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Box _>`, found `Box<{closure@setter.rs:205:60}>` [INFO] [stdout] | | [INFO] [stdout] | this closure [INFO] [stdout] 206 | let transform = over(setter, |x| x * 2); [INFO] [stdout] | ---- ------ closure used here [INFO] [stdout] | | [INFO] [stdout] | required by a bound introduced by this call [INFO] [stdout] | [INFO] [stdout] = note: expected struct `Box<(dyn Fn(_) -> _ + 'static)>` [INFO] [stdout] found struct `Box<{closure@src/setter.rs:205:60: 205:73}>` [INFO] [stdout] note: required by a bound in `setter::over` [INFO] [stdout] --> src/setter.rs:26:40 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn over( [INFO] [stdout] | ---- required by a bound in this function [INFO] [stdout] ... [INFO] [stdout] 26 | Setter: Fn(Box B>) -> Box T>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ required by this bound in `over` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0271]: expected `{closure@setter.rs:213:22}` to return `Box _>`, but it returns `Box<{closure@setter.rs:213:60}>` [INFO] [stdout] --> src/setter.rs:213:51 [INFO] [stdout] | [INFO] [stdout] 213 | let setter = |f: Box i32>| Box::new(move |x: i32| f(x)); [INFO] [stdout] | ---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Box _>`, found `Box<{closure@setter.rs:213:60}>` [INFO] [stdout] | | [INFO] [stdout] | this closure [INFO] [stdout] 214 | let set_value = set(setter, 42); [INFO] [stdout] | --- ------ closure used here [INFO] [stdout] | | [INFO] [stdout] | required by a bound introduced by this call [INFO] [stdout] | [INFO] [stdout] = note: expected struct `Box<(dyn Fn(_) -> _ + 'static)>` [INFO] [stdout] found struct `Box<{closure@src/setter.rs:213:60: 213:73}>` [INFO] [stdout] note: required by a bound in `setter::set` [INFO] [stdout] --> src/setter.rs:52:40 [INFO] [stdout] | [INFO] [stdout] 43 | pub fn set( [INFO] [stdout] | --- required by a bound in this function [INFO] [stdout] ... [INFO] [stdout] 52 | Setter: Fn(Box B>) -> Box T>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ required by this bound in `set` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0271]: expected `{closure@setter.rs:221:22}` to return `Box`, but it returns `Box<{closure@setter.rs:221:61}>` [INFO] [stdout] --> src/setter.rs:221:52 [INFO] [stdout] | [INFO] [stdout] 221 | let setter = |f: Box| Box::new(move |x: &mut i32| f(x)); [INFO] [stdout] | ----------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Box`, found `Box<{closure@setter.rs:221:61}>` [INFO] [stdout] | | [INFO] [stdout] | this closure [INFO] [stdout] 222 | let mut_transform = mver(setter, |x| *x *= 2); [INFO] [stdout] | ---- ------ closure used here [INFO] [stdout] | | [INFO] [stdout] | required by a bound introduced by this call [INFO] [stdout] | [INFO] [stdout] = note: expected struct `Box<(dyn for<'a> FnMut(&'a mut _) + 'static)>` [INFO] [stdout] found struct `Box<{closure@src/setter.rs:221:61: 221:79}>` [INFO] [stdout] note: required by a bound in `setter::mver` [INFO] [stdout] --> src/setter.rs:80:43 [INFO] [stdout] | [INFO] [stdout] 72 | pub fn mver( [INFO] [stdout] | ---- required by a bound in this function [INFO] [stdout] ... [INFO] [stdout] 80 | Setter: Fn(Box) -> Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `mver` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0271]: expected `{closure@setter.rs:230:22}` to return `Box`, but it returns `Box<{closure@setter.rs:230:61}>` [INFO] [stdout] --> src/setter.rs:230:52 [INFO] [stdout] | [INFO] [stdout] 230 | let setter = |f: Box| Box::new(move |x: Rc>| f(&mut x.borrow_mut())); [INFO] [stdout] | ----------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Box`, found `Box<{closure@setter.rs:230:61}>` [INFO] [stdout] | | [INFO] [stdout] | this closure [INFO] [stdout] 231 | let mut_transform = mver_ref(setter, |x| *x *= 2); [INFO] [stdout] | -------- ------ closure used here [INFO] [stdout] | | [INFO] [stdout] | required by a bound introduced by this call [INFO] [stdout] | [INFO] [stdout] = note: expected struct `Box<(dyn FnMut(_) + 'static)>` [INFO] [stdout] found struct `Box<{closure@src/setter.rs:230:61: 230:87}>` [INFO] [stdout] note: required by a bound in `setter::mver_ref` [INFO] [stdout] --> src/setter.rs:108:43 [INFO] [stdout] | [INFO] [stdout] 100 | pub fn mver_ref( [INFO] [stdout] | -------- required by a bound in this function [INFO] [stdout] ... [INFO] [stdout] 108 | Setter: Fn(Box) -> Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ required by this bound in `mver_ref` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0271]: expected `{closure@setter.rs:239:22}` to return `Box`, but it returns `Box<{closure@setter.rs:239:66}>` [INFO] [stdout] --> src/setter.rs:239:57 [INFO] [stdout] | [INFO] [stdout] 239 | let setter = |f: Box>)>| Box::new(move |x: Rc>| f(x)); [INFO] [stdout] | ---------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Box`, found `Box<{closure@setter.rs:239:66}>` [INFO] [stdout] | | [INFO] [stdout] | this closure [INFO] [stdout] 240 | let mut_transform = mver_ref_mut(setter, |x| *x.borrow_mut() *= 2); [INFO] [stdout] | ------------ ------ closure used here [INFO] [stdout] | | [INFO] [stdout] | required by a bound introduced by this call [INFO] [stdout] | [INFO] [stdout] = note: expected struct `Box<(dyn Fn(_) + 'static)>` [INFO] [stdout] found struct `Box<{closure@src/setter.rs:239:66: 239:92}>` [INFO] [stdout] note: required by a bound in `setter::mver_ref_mut` [INFO] [stdout] --> src/setter.rs:136:35 [INFO] [stdout] | [INFO] [stdout] 128 | pub fn mver_ref_mut( [INFO] [stdout] | ------------ required by a bound in this function [INFO] [stdout] ... [INFO] [stdout] 136 | Setter: Fn(Box) -> Box, [INFO] [stdout] | ^^^^^^^^^^^^^^ required by this bound in `mver_ref_mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0271]: expected `{closure@setter.rs:248:22}` to return `Box`, but it returns `Box<{closure@setter.rs:248:61}>` [INFO] [stdout] --> src/setter.rs:248:52 [INFO] [stdout] | [INFO] [stdout] 248 | let setter = |f: Box| Box::new(move |x: &mut i32| f(x)); [INFO] [stdout] | ----------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Box`, found `Box<{closure@setter.rs:248:61}>` [INFO] [stdout] | | [INFO] [stdout] | this closure [INFO] [stdout] 249 | let set_value = mut_set(setter, 42); [INFO] [stdout] | ------- ------ closure used here [INFO] [stdout] | | [INFO] [stdout] | required by a bound introduced by this call [INFO] [stdout] | [INFO] [stdout] = note: expected struct `Box<(dyn for<'a> FnMut(&'a mut _) + 'static)>` [INFO] [stdout] found struct `Box<{closure@src/setter.rs:248:61: 248:79}>` [INFO] [stdout] note: required by a bound in `setter::mut_set` [INFO] [stdout] --> src/setter.rs:161:43 [INFO] [stdout] | [INFO] [stdout] 154 | pub fn mut_set( [INFO] [stdout] | ------- required by a bound in this function [INFO] [stdout] ... [INFO] [stdout] 161 | Setter: Fn(Box) -> Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `mut_set` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0271]: expected `{closure@setter.rs:257:22}` to return `Box`, but it returns `Box<{closure@setter.rs:257:61}>` [INFO] [stdout] --> src/setter.rs:257:52 [INFO] [stdout] | [INFO] [stdout] 257 | let setter = |f: Box| Box::new(move |x: Rc>| f(&mut x.borrow_mut())); [INFO] [stdout] | ----------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Box`, found `Box<{closure@setter.rs:257:61}>` [INFO] [stdout] | | [INFO] [stdout] | this closure [INFO] [stdout] 258 | let set_value = mut_set_ref(setter, 42); [INFO] [stdout] | ----------- ------ closure used here [INFO] [stdout] | | [INFO] [stdout] | required by a bound introduced by this call [INFO] [stdout] | [INFO] [stdout] = note: expected struct `Box<(dyn FnMut(_) + 'static)>` [INFO] [stdout] found struct `Box<{closure@src/setter.rs:257:61: 257:87}>` [INFO] [stdout] note: required by a bound in `setter::mut_set_ref` [INFO] [stdout] --> src/setter.rs:188:43 [INFO] [stdout] | [INFO] [stdout] 181 | pub fn mut_set_ref( [INFO] [stdout] | ----------- required by a bound in this function [INFO] [stdout] ... [INFO] [stdout] 188 | Setter: Fn(Box) -> Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ required by this bound in `mut_set_ref` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0271]: expected `{closure@setter.rs:266:22}` to return `Box`, but it returns `Box<{closure@setter.rs:266:61}>` [INFO] [stdout] --> src/setter.rs:266:52 [INFO] [stdout] | [INFO] [stdout] 266 | let setter = |f: Box| Box::new(move |x: &mut i32| f(x)); [INFO] [stdout] | ----------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Box`, found `Box<{closure@setter.rs:266:61}>` [INFO] [stdout] | | [INFO] [stdout] | this closure [INFO] [stdout] 267 | let set_value = mset(setter, 42); [INFO] [stdout] | ---- ------ closure used here [INFO] [stdout] | | [INFO] [stdout] | required by a bound introduced by this call [INFO] [stdout] | [INFO] [stdout] = note: expected struct `Box<(dyn for<'a> FnMut(&'a mut _) + 'static)>` [INFO] [stdout] found struct `Box<{closure@src/setter.rs:266:61: 266:79}>` [INFO] [stdout] note: required by a bound in `setter::mut_set` [INFO] [stdout] --> src/setter.rs:161:43 [INFO] [stdout] | [INFO] [stdout] 154 | pub fn mut_set( [INFO] [stdout] | ------- required by a bound in this function [INFO] [stdout] ... [INFO] [stdout] 161 | Setter: Fn(Box) -> Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `mut_set` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0271]: expected `{closure@setter.rs:275:22}` to return `Box`, but it returns `Box<{closure@setter.rs:275:61}>` [INFO] [stdout] --> src/setter.rs:275:52 [INFO] [stdout] | [INFO] [stdout] 275 | let setter = |f: Box| Box::new(move |x: Rc>| f(&mut x.borrow_mut())); [INFO] [stdout] | ----------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Box`, found `Box<{closure@setter.rs:275:61}>` [INFO] [stdout] | | [INFO] [stdout] | this closure [INFO] [stdout] 276 | let set_value = mset_ref(setter, 42); [INFO] [stdout] | -------- ------ closure used here [INFO] [stdout] | | [INFO] [stdout] | required by a bound introduced by this call [INFO] [stdout] | [INFO] [stdout] = note: expected struct `Box<(dyn FnMut(_) + 'static)>` [INFO] [stdout] found struct `Box<{closure@src/setter.rs:275:61: 275:87}>` [INFO] [stdout] note: required by a bound in `setter::mut_set_ref` [INFO] [stdout] --> src/setter.rs:188:43 [INFO] [stdout] | [INFO] [stdout] 181 | pub fn mut_set_ref( [INFO] [stdout] | ----------- required by a bound in this function [INFO] [stdout] ... [INFO] [stdout] 188 | Setter: Fn(Box) -> Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ required by this bound in `mut_set_ref` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed for `Result, _>` [INFO] [stdout] --> src/with.rs:234:13 [INFO] [stdout] | [INFO] [stdout] 234 | let result = with_mut_throwing(vec![1, 2, 3], |v| { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 235 | v.push(4); [INFO] [stdout] 236 | Ok(()) [INFO] [stdout] | ------ type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `result` an explicit type, where the type for type parameter `E` is specified [INFO] [stdout] | [INFO] [stdout] 234 | let result: Result<_, E> = with_mut_throwing(vec![1, 2, 3], |v| { [INFO] [stdout] | ++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed for `Result` [INFO] [stdout] --> src/with.rs:261:13 [INFO] [stdout] | [INFO] [stdout] 261 | let result = with_chain_throwing(5, [ [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 262 | |x| Ok(x * 2), [INFO] [stdout] | --------- type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `result` an explicit type, where the type for type parameter `E` is specified [INFO] [stdout] | [INFO] [stdout] 261 | let result: Result<_, E> = with_chain_throwing(5, [ [INFO] [stdout] | ++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed for `Result` [INFO] [stdout] --> src/zurry.rs:294:13 [INFO] [stdout] | [INFO] [stdout] 294 | let result = zurry_throwing(|| Ok(42)); [INFO] [stdout] | ^^^^^^ ------ type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `result` an explicit type, where the type for type parameter `E` is specified [INFO] [stdout] | [INFO] [stdout] 294 | let result: Result<_, E> = zurry_throwing(|| Ok(42)); [INFO] [stdout] | ++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed for `Result` [INFO] [stdout] --> src/zurry.rs:311:13 [INFO] [stdout] | [INFO] [stdout] 310 | let lazy_value = unzurry_throwing(|| Ok(42)); [INFO] [stdout] | ------ type must be known at this point [INFO] [stdout] 311 | let result = lazy_value(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: consider giving `result` an explicit type, where the type for type parameter `E` is specified [INFO] [stdout] | [INFO] [stdout] 311 | let result: Result<_, E> = lazy_value(); [INFO] [stdout] | ++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: lifetime may not live long enough [INFO] [stdout] --> src/combinig.rs:399:38 [INFO] [stdout] | [INFO] [stdout] 399 | let eq = their_eq(|u: &User| &u.name); [INFO] [stdout] | - - ^^^^^^^ returning this value requires that `'1` must outlive `'2` [INFO] [stdout] | | | [INFO] [stdout] | | return type of closure is &'2 String [INFO] [stdout] | let's call the lifetime of this reference `'1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `result2` [INFO] [stdout] --> src/result.rs:178:46 [INFO] [stdout] | [INFO] [stdout] 172 | let result2: Result = Ok("hello".to_string()); [INFO] [stdout] | ------- move occurs because `result2` has type `Result`, which does not implement the `Copy` trait [INFO] [stdout] 173 | [INFO] [stdout] 174 | let zipped = zip(result1, result2); [INFO] [stdout] | ------- value moved here [INFO] [stdout] ... [INFO] [stdout] 178 | let zipped_error = zip(error_result, result2); [INFO] [stdout] | ^^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `zip` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> src/result.rs:8:14 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn zip( [INFO] [stdout] | --- in this function [INFO] [stdout] 7 | result1: Result, [INFO] [stdout] 8 | result2: Result, [INFO] [stdout] | ^^^^^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 174 | let zipped = zip(result1, result2.clone()); [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0594]: cannot assign to `counter`, as it is a captured variable in a `Fn` closure [INFO] [stdout] --> src/zurry.rs:319:13 [INFO] [stdout] | [INFO] [stdout] 83 | pub fn unzurry_repeatable(value: impl Fn() -> A + 'static) -> impl Fn() -> A { [INFO] [stdout] | ------------------------ change this to accept `FnMut` instead of `Fn` [INFO] [stdout] ... [INFO] [stdout] 318 | let lazy_value = unzurry_repeatable(|| { [INFO] [stdout] | ------------------ -- in this closure [INFO] [stdout] | | [INFO] [stdout] | expects `Fn` instead of `FnMut` [INFO] [stdout] 319 | counter += 1; [INFO] [stdout] | ^^^^^^^^^^^^ cannot assign [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0373]: closure may outlive the current function, but it borrows `counter`, which is owned by the current function [INFO] [stdout] --> src/zurry.rs:318:45 [INFO] [stdout] | [INFO] [stdout] 318 | let lazy_value = unzurry_repeatable(|| { [INFO] [stdout] | ^^ may outlive borrowed value `counter` [INFO] [stdout] 319 | counter += 1; [INFO] [stdout] | ------- `counter` is borrowed here [INFO] [stdout] | [INFO] [stdout] note: function requires argument type to outlive `'static` [INFO] [stdout] --> src/zurry.rs:318:26 [INFO] [stdout] | [INFO] [stdout] 318 | let lazy_value = unzurry_repeatable(|| { [INFO] [stdout] | __________________________^ [INFO] [stdout] 319 | | counter += 1; [INFO] [stdout] 320 | | counter [INFO] [stdout] 321 | | }); [INFO] [stdout] | |__________^ [INFO] [stdout] help: to force the closure to take ownership of `counter` (and any other referenced variables), use the `move` keyword [INFO] [stdout] | [INFO] [stdout] 318 | let lazy_value = unzurry_repeatable(move || { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0594]: cannot assign to `call_count`, as it is a captured variable in a `Fn` closure [INFO] [stdout] --> src/zurry.rs:339:13 [INFO] [stdout] | [INFO] [stdout] 138 | pub fn lazy(f: F) -> impl Fn() -> A [INFO] [stdout] | - change this to accept `FnMut` instead of `Fn` [INFO] [stdout] ... [INFO] [stdout] 338 | let lazy_value = lazy(|| { [INFO] [stdout] | ---- -- in this closure [INFO] [stdout] | | [INFO] [stdout] | expects `Fn` instead of `FnMut` [INFO] [stdout] 339 | call_count += 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^ cannot assign [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0373]: closure may outlive the current function, but it borrows `call_count`, which is owned by the current function [INFO] [stdout] --> src/zurry.rs:338:31 [INFO] [stdout] | [INFO] [stdout] 338 | let lazy_value = lazy(|| { [INFO] [stdout] | ^^ may outlive borrowed value `call_count` [INFO] [stdout] 339 | call_count += 1; [INFO] [stdout] | ---------- `call_count` is borrowed here [INFO] [stdout] | [INFO] [stdout] note: function requires argument type to outlive `'static` [INFO] [stdout] --> src/zurry.rs:338:26 [INFO] [stdout] | [INFO] [stdout] 338 | let lazy_value = lazy(|| { [INFO] [stdout] | __________________________^ [INFO] [stdout] 339 | | call_count += 1; [INFO] [stdout] 340 | | 42 [INFO] [stdout] 341 | | }); [INFO] [stdout] | |__________^ [INFO] [stdout] help: to force the closure to take ownership of `call_count` (and any other referenced variables), use the `move` keyword [INFO] [stdout] | [INFO] [stdout] 338 | let lazy_value = lazy(move || { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0594]: cannot assign to `call_count`, as it is a captured variable in a `Fn` closure [INFO] [stdout] --> src/zurry.rs:356:13 [INFO] [stdout] | [INFO] [stdout] 200 | pub fn memoize(f: F) -> impl Fn(A) -> B [INFO] [stdout] | - change this to accept `FnMut` instead of `Fn` [INFO] [stdout] ... [INFO] [stdout] 355 | let memoized = memoize(|x: i32| { [INFO] [stdout] | ------- -------- in this closure [INFO] [stdout] | | [INFO] [stdout] | expects `Fn` instead of `FnMut` [INFO] [stdout] 356 | call_count += 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^ cannot assign [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0373]: closure may outlive the current function, but it borrows `call_count`, which is owned by the current function [INFO] [stdout] --> src/zurry.rs:355:32 [INFO] [stdout] | [INFO] [stdout] 355 | let memoized = memoize(|x: i32| { [INFO] [stdout] | ^^^^^^^^ may outlive borrowed value `call_count` [INFO] [stdout] 356 | call_count += 1; [INFO] [stdout] | ---------- `call_count` is borrowed here [INFO] [stdout] | [INFO] [stdout] note: function requires argument type to outlive `'static` [INFO] [stdout] --> src/zurry.rs:355:24 [INFO] [stdout] | [INFO] [stdout] 355 | let memoized = memoize(|x: i32| { [INFO] [stdout] | ________________________^ [INFO] [stdout] 356 | | call_count += 1; [INFO] [stdout] 357 | | x * x [INFO] [stdout] 358 | | }); [INFO] [stdout] | |__________^ [INFO] [stdout] help: to force the closure to take ownership of `call_count` (and any other referenced variables), use the `move` keyword [INFO] [stdout] | [INFO] [stdout] 355 | let memoized = memoize(move |x: i32| { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `rust-overture` (lib test) due to 25 previous errors; 2 warnings emitted [INFO] [stdout] Some errors have detailed explanations: E0271, E0277, E0282, E0369, E0373, E0382, E0594. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0271`. [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "381815ce9f1d5a8a30cb61e9777bbcc7e1e52646dd121b0dded890e479c93afd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "381815ce9f1d5a8a30cb61e9777bbcc7e1e52646dd121b0dded890e479c93afd", kill_on_drop: false }` [INFO] [stdout] 381815ce9f1d5a8a30cb61e9777bbcc7e1e52646dd121b0dded890e479c93afd