[INFO] cloning repository https://github.com/Harmful-Alchemist/rukanren [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Harmful-Alchemist/rukanren" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHarmful-Alchemist%2Frukanren", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHarmful-Alchemist%2Frukanren'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ee3ab02f4ca881467d136a68171907f3b9072e2b [INFO] linting Harmful-Alchemist/rukanren against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHarmful-Alchemist%2Frukanren" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/Harmful-Alchemist/rukanren [INFO] finished tweaking git repo https://github.com/Harmful-Alchemist/rukanren [INFO] tweaked toml for git repo https://github.com/Harmful-Alchemist/rukanren written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Harmful-Alchemist/rukanren on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/Harmful-Alchemist/rukanren 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" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 388ea45d298596cbfc51e6040c46fab9857085f62f40d24a683e7d11da67bead [INFO] running `Command { std: "docker" "start" "-a" "388ea45d298596cbfc51e6040c46fab9857085f62f40d24a683e7d11da67bead", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "388ea45d298596cbfc51e6040c46fab9857085f62f40d24a683e7d11da67bead", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "388ea45d298596cbfc51e6040c46fab9857085f62f40d24a683e7d11da67bead", kill_on_drop: false }` [INFO] [stdout] 388ea45d298596cbfc51e6040c46fab9857085f62f40d24a683e7d11da67bead [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] ccf6f7f39024a582a7a7c9742133b27e2a978197449cd293ef74238281d6bbb2 [INFO] running `Command { std: "docker" "start" "-a" "ccf6f7f39024a582a7a7c9742133b27e2a978197449cd293ef74238281d6bbb2", kill_on_drop: false }` [INFO] [stderr] Checking ukanren v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/main.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | fn walk(u: &Term, s: Substitution) -> Term [INFO] [stdout] | ^ [INFO] [stdout] 48 | where [INFO] [stdout] 49 | T: Debug + Hash + Eq + Clone + 'static, [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] = note: `#[warn(clippy::multiple_bound_locations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/main.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | fn walk(u: &Term, s: Substitution) -> Term [INFO] [stdout] | ^ [INFO] [stdout] 48 | where [INFO] [stdout] 49 | T: Debug + Hash + Eq + Clone + 'static, [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] = note: `#[warn(clippy::multiple_bound_locations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reify_state` is never used [INFO] [stdout] --> src/main.rs:479:4 [INFO] [stdout] | [INFO] [stdout] 479 | fn reify_state((s, _c): (Substitution, i32)) -> Vec> [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `walk_star` is never used [INFO] [stdout] --> src/main.rs:492:4 [INFO] [stdout] | [INFO] [stdout] 492 | fn walk_star(x: Rc>>, s: Substitution) -> Vec> [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reify_state` is never used [INFO] [stdout] --> src/main.rs:479:4 [INFO] [stdout] | [INFO] [stdout] 479 | fn reify_state((s, _c): (Substitution, i32)) -> Vec> [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `walk_star` is never used [INFO] [stdout] --> src/main.rs:492:4 [INFO] [stdout] | [INFO] [stdout] 492 | fn walk_star(x: Rc>>, s: Substitution) -> Vec> [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `from_*` usually take no `self` [INFO] [stdout] --> src/main.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | &self, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:60:5 [INFO] [stdout] | [INFO] [stdout] 60 | return pr.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 60 - return pr.clone(); [INFO] [stdout] 60 + pr.clone() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:98:16 [INFO] [stdout] | [INFO] [stdout] 98 | c: c.clone(), [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:125:35 [INFO] [stdout] | [INFO] [stdout] 125 | Some((self.s.clone(), self.c.clone())) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:170:56 [INFO] [stdout] | [INFO] [stdout] 170 | let x = self.g1.borrow().from_state(s.clone(), c.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:171:56 [INFO] [stdout] | [INFO] [stdout] 171 | let y = self.g2.borrow().from_state(s.clone(), c.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:195:16 [INFO] [stdout] | [INFO] [stdout] 195 | if !opt.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `opt.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/main.rs:192:12 [INFO] [stdout] | [INFO] [stdout] 192 | if self.m % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace with: `self.m.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:196:17 [INFO] [stdout] | [INFO] [stdout] 196 | self.m = self.m + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.m += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:200:9 [INFO] [stdout] | [INFO] [stdout] 200 | self.m = self.m + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.m += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `from_*` usually take no `self` [INFO] [stdout] --> src/main.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | &self, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:223:56 [INFO] [stdout] | [INFO] [stdout] 223 | let x = self.g1.borrow().from_state(s.clone(), c.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/main.rs:238:11 [INFO] [stdout] | [INFO] [stdout] 238 | next: Option, i32)>>>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:60:5 [INFO] [stdout] | [INFO] [stdout] 60 | return pr.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 60 - return pr.clone(); [INFO] [stdout] 60 + pr.clone() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:255:73 [INFO] [stdout] | [INFO] [stdout] 255 | self.next = Some(self.g.borrow().from_state(s_.clone(), c_.clone())); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `c_` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/main.rs:256:24 [INFO] [stdout] | [INFO] [stdout] 256 | return (&self.next.as_ref().unwrap().borrow_mut().next()).clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.next.as_ref().unwrap().borrow_mut().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:98:16 [INFO] [stdout] | [INFO] [stdout] 98 | c: c.clone(), [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/main.rs:288:13 [INFO] [stdout] | [INFO] [stdout] 288 | / if u == v { [INFO] [stdout] 289 | | true [INFO] [stdout] 290 | | } else { [INFO] [stdout] 291 | | false [INFO] [stdout] 292 | | } [INFO] [stdout] | |_____________^ help: you can reduce it to: `u == v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] = note: `#[warn(clippy::needless_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:125:35 [INFO] [stdout] | [INFO] [stdout] 125 | Some((self.s.clone(), self.c.clone())) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:317:47 [INFO] [stdout] | [INFO] [stdout] 317 | for s in &mut *disj.from_state(s.clone(), c.clone()).borrow_mut() { [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:349:47 [INFO] [stdout] | [INFO] [stdout] 349 | for s in &mut *conj.from_state(s.clone(), c.clone()).borrow_mut() { [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:362:47 [INFO] [stdout] | [INFO] [stdout] 362 | for s in &mut *disj.from_state(s.clone(), c.clone()).borrow_mut() { [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:170:56 [INFO] [stdout] | [INFO] [stdout] 170 | let x = self.g1.borrow().from_state(s.clone(), c.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:171:56 [INFO] [stdout] | [INFO] [stdout] 171 | let y = self.g2.borrow().from_state(s.clone(), c.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:195:16 [INFO] [stdout] | [INFO] [stdout] 195 | if !opt.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `opt.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/main.rs:192:12 [INFO] [stdout] | [INFO] [stdout] 192 | if self.m % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace with: `self.m.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:196:17 [INFO] [stdout] | [INFO] [stdout] 196 | self.m = self.m + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.m += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:200:9 [INFO] [stdout] | [INFO] [stdout] 200 | self.m = self.m + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.m += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:388:51 [INFO] [stdout] | [INFO] [stdout] 388 | for s in &mut *noanswer.from_state(s.clone(), c.clone()).borrow_mut() { [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:223:56 [INFO] [stdout] | [INFO] [stdout] 223 | let x = self.g1.borrow().from_state(s.clone(), c.clone()); [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/main.rs:238:11 [INFO] [stdout] | [INFO] [stdout] 238 | next: Option, i32)>>>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:255:73 [INFO] [stdout] | [INFO] [stdout] 255 | self.next = Some(self.g.borrow().from_state(s_.clone(), c_.clone())); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `c_` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/main.rs:256:24 [INFO] [stdout] | [INFO] [stdout] 256 | return (&self.next.as_ref().unwrap().borrow_mut().next()).clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.next.as_ref().unwrap().borrow_mut().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/main.rs:288:13 [INFO] [stdout] | [INFO] [stdout] 288 | / if u == v { [INFO] [stdout] 289 | | true [INFO] [stdout] 290 | | } else { [INFO] [stdout] 291 | | false [INFO] [stdout] 292 | | } [INFO] [stdout] | |_____________^ help: you can reduce it to: `u == v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] = note: `#[warn(clippy::needless_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:317:47 [INFO] [stdout] | [INFO] [stdout] 317 | for s in &mut *disj.from_state(s.clone(), c.clone()).borrow_mut() { [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:437:48 [INFO] [stdout] | [INFO] [stdout] 437 | for s in &mut *fresh.from_state(s.clone(), c.clone()).borrow_mut() { [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:349:47 [INFO] [stdout] | [INFO] [stdout] 349 | for s in &mut *conj.from_state(s.clone(), c.clone()).borrow_mut() { [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be written as a `let` statement [INFO] [stdout] --> src/main.rs:484:5 [INFO] [stdout] | [INFO] [stdout] 484 | / match walk(&fst_var, s.clone()) { [INFO] [stdout] 485 | | // Pair(x, y) => {let mut a = walk_star(x, s.clone()); let mut b = walk_star(y,s); a.append(&mut b); a }, [INFO] [stdout] 486 | | x => { [INFO] [stdout] 487 | | vec![x] [INFO] [stdout] 488 | | } [INFO] [stdout] 489 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] help: consider using a `let` statement [INFO] [stdout] | [INFO] [stdout] 484 ~ let x = walk(&fst_var, s.clone()); [INFO] [stdout] 485 + vec![x] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be written as a `let` statement [INFO] [stdout] --> src/main.rs:496:5 [INFO] [stdout] | [INFO] [stdout] 496 | / match walk(&x.borrow(), s.clone()) { [INFO] [stdout] 497 | | // Pair(x, y) => {let mut a = walk_star(x, s.clone()); let mut b = walk_star(y,s); a.append(&mut b); a }, [INFO] [stdout] 498 | | x => { [INFO] [stdout] 499 | | vec![x] [INFO] [stdout] 500 | | } [INFO] [stdout] 501 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] help: consider using a `let` statement [INFO] [stdout] | [INFO] [stdout] 496 ~ let x = walk(&x.borrow(), s.clone()); [INFO] [stdout] 497 + vec![x] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:362:47 [INFO] [stdout] | [INFO] [stdout] 362 | for s in &mut *disj.from_state(s.clone(), c.clone()).borrow_mut() { [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be written as a `let` statement [INFO] [stdout] --> src/main.rs:513:9 [INFO] [stdout] | [INFO] [stdout] 513 | / match walk(&fst_var, s.clone()) { [INFO] [stdout] 514 | | // Pair(x, y) => {let mut a = walk_star(x, s.clone()); let mut b = walk_star(y,s); a.append(&mut b); a }, [INFO] [stdout] 515 | | x => ret.append(&mut vec![x]), [INFO] [stdout] 516 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] help: consider using a `let` statement [INFO] [stdout] | [INFO] [stdout] 513 ~ let x = walk(&fst_var, s.clone()); [INFO] [stdout] 514 + ret.append(&mut vec![x]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be written as a `let` statement [INFO] [stdout] --> src/main.rs:529:9 [INFO] [stdout] | [INFO] [stdout] 529 | / match walk(&fst_var, s.clone()) { [INFO] [stdout] 530 | | // Pair(x, y) => {let mut a = walk_star(x, s.clone()); let mut b = walk_star(y,s); a.append(&mut b); a }, [INFO] [stdout] 531 | | x => ret.append(&mut vec![x]), [INFO] [stdout] 532 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] help: consider using a `let` statement [INFO] [stdout] | [INFO] [stdout] 529 ~ let x = walk(&fst_var, s.clone()); [INFO] [stdout] 530 + ret.append(&mut vec![x]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:388:51 [INFO] [stdout] | [INFO] [stdout] 388 | for s in &mut *noanswer.from_state(s.clone(), c.clone()).borrow_mut() { [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:618:39 [INFO] [stdout] | [INFO] [stdout] 618 | eq.from_state(self.s.clone(), self.c.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:437:48 [INFO] [stdout] | [INFO] [stdout] 437 | for s in &mut *fresh.from_state(s.clone(), c.clone()).borrow_mut() { [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be written as a `let` statement [INFO] [stdout] --> src/main.rs:484:5 [INFO] [stdout] | [INFO] [stdout] 484 | / match walk(&fst_var, s.clone()) { [INFO] [stdout] 485 | | // Pair(x, y) => {let mut a = walk_star(x, s.clone()); let mut b = walk_star(y,s); a.append(&mut b); a }, [INFO] [stdout] 486 | | x => { [INFO] [stdout] 487 | | vec![x] [INFO] [stdout] 488 | | } [INFO] [stdout] 489 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] help: consider using a `let` statement [INFO] [stdout] | [INFO] [stdout] 484 ~ let x = walk(&fst_var, s.clone()); [INFO] [stdout] 485 + vec![x] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be written as a `let` statement [INFO] [stdout] --> src/main.rs:496:5 [INFO] [stdout] | [INFO] [stdout] 496 | / match walk(&x.borrow(), s.clone()) { [INFO] [stdout] 497 | | // Pair(x, y) => {let mut a = walk_star(x, s.clone()); let mut b = walk_star(y,s); a.append(&mut b); a }, [INFO] [stdout] 498 | | x => { [INFO] [stdout] 499 | | vec![x] [INFO] [stdout] 500 | | } [INFO] [stdout] 501 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] help: consider using a `let` statement [INFO] [stdout] | [INFO] [stdout] 496 ~ let x = walk(&x.borrow(), s.clone()); [INFO] [stdout] 497 + vec![x] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be written as a `let` statement [INFO] [stdout] --> src/main.rs:513:9 [INFO] [stdout] | [INFO] [stdout] 513 | / match walk(&fst_var, s.clone()) { [INFO] [stdout] 514 | | // Pair(x, y) => {let mut a = walk_star(x, s.clone()); let mut b = walk_star(y,s); a.append(&mut b); a }, [INFO] [stdout] 515 | | x => ret.append(&mut vec![x]), [INFO] [stdout] 516 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] help: consider using a `let` statement [INFO] [stdout] | [INFO] [stdout] 513 ~ let x = walk(&fst_var, s.clone()); [INFO] [stdout] 514 + ret.append(&mut vec![x]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be written as a `let` statement [INFO] [stdout] --> src/main.rs:529:9 [INFO] [stdout] | [INFO] [stdout] 529 | / match walk(&fst_var, s.clone()) { [INFO] [stdout] 530 | | // Pair(x, y) => {let mut a = walk_star(x, s.clone()); let mut b = walk_star(y,s); a.append(&mut b); a }, [INFO] [stdout] 531 | | x => ret.append(&mut vec![x]), [INFO] [stdout] 532 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] help: consider using a `let` statement [INFO] [stdout] | [INFO] [stdout] 529 ~ let x = walk(&fst_var, s.clone()); [INFO] [stdout] 530 + ret.append(&mut vec![x]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:618:39 [INFO] [stdout] | [INFO] [stdout] 618 | eq.from_state(self.s.clone(), self.c.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.44s [INFO] running `Command { std: "docker" "inspect" "ccf6f7f39024a582a7a7c9742133b27e2a978197449cd293ef74238281d6bbb2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ccf6f7f39024a582a7a7c9742133b27e2a978197449cd293ef74238281d6bbb2", kill_on_drop: false }` [INFO] [stdout] ccf6f7f39024a582a7a7c9742133b27e2a978197449cd293ef74238281d6bbb2