[INFO] fetching crate contracts-try 0.7.0... [INFO] linting contracts-try-0.7.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate contracts-try 0.7.0 into /workspace/builds/worker-4-tc1/source [INFO] started tweaking crates.io crate contracts-try 0.7.0 [INFO] removed 0 missing examples [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate contracts-try 0.7.0 [INFO] tweaked toml for crates.io crate contracts-try 0.7.0 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate contracts-try 0.7.0 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 crates.io crate contracts-try 0.7.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" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded syn v2.0.79 [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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 3743b96cbe84a20f612e42aca20b60ff78ffeb69ef37615c7f408e8bea66cd56 [INFO] running `Command { std: "docker" "start" "-a" "3743b96cbe84a20f612e42aca20b60ff78ffeb69ef37615c7f408e8bea66cd56", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3743b96cbe84a20f612e42aca20b60ff78ffeb69ef37615c7f408e8bea66cd56", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3743b96cbe84a20f612e42aca20b60ff78ffeb69ef37615c7f408e8bea66cd56", kill_on_drop: false }` [INFO] [stdout] 3743b96cbe84a20f612e42aca20b60ff78ffeb69ef37615c7f408e8bea66cd56 [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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f88f362646cd8ef5d5e9c74e8a26298643c9ee66bd54011d24c580a34c68a0d5 [INFO] running `Command { std: "docker" "start" "-a" "f88f362646cd8ef5d5e9c74e8a26298643c9ee66bd54011d24c580a34c68a0d5", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.86 [INFO] [stderr] Checking unicode-ident v1.0.13 [INFO] [stderr] Checking quote v1.0.37 [INFO] [stderr] Checking syn v2.0.79 [INFO] [stderr] Checking contracts-try v0.7.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/implementation/codegen.rs:189:17 [INFO] [stdout] | [INFO] [stdout] 189 | / quote::quote_spanned! { span=> [INFO] [stdout] 190 | | if !(#exec_expr) { [INFO] [stdout] 191 | | log::error!("{}", #format_args); [INFO] [stdout] ... | [INFO] [stdout] 194 | | .into_iter(), [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 193 - } [INFO] [stdout] 194 - .into_iter(), [INFO] [stdout] 193 + }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/implementation/codegen.rs:200:17 [INFO] [stdout] | [INFO] [stdout] 200 | / quote::quote_spanned! { span=> [INFO] [stdout] 201 | | #assert_macro!(#exec_expr, "{}", #format_args); [INFO] [stdout] 202 | | } [INFO] [stdout] 203 | | .into_iter(), [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 202 - } [INFO] [stdout] 203 - .into_iter(), [INFO] [stdout] 202 + }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/implementation/codegen.rs:232:17 [INFO] [stdout] | [INFO] [stdout] 232 | format!("{}", c.ty.message_name()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `c.ty.message_name().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/implementation/codegen.rs:274:17 [INFO] [stdout] | [INFO] [stdout] 274 | format!("{}", c.ty.message_name()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `c.ty.message_name().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `syn::visit::visit_block` doesn't need a mutable reference [INFO] [stdout] --> src/implementation/codegen.rs:345:60 [INFO] [stdout] | [INFO] [stdout] 345 | syn::visit::visit_block(&mut try_detector, &mut block); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 345 - syn::visit::visit_block(&mut try_detector, &mut block); [INFO] [stdout] 345 + syn::visit::visit_block(&mut try_detector, &block); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression can be written more simply using `.retain()` [INFO] [stdout] --> src/implementation/traits.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 193 | / trait_.items = trait_ [INFO] [stdout] 194 | | .items [INFO] [stdout] 195 | | .into_iter() [INFO] [stdout] 196 | | .filter(|item| !matches!(item, TraitItem::Fn(_))) [INFO] [stdout] 197 | | .collect(); [INFO] [stdout] | |__________________^ help: consider calling `.retain()` instead: `trait_.items.retain(|item| !matches!(item, TraitItem::Fn(_)))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_retain [INFO] [stdout] = note: `#[warn(clippy::manual_retain)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/implementation/codegen.rs:189:17 [INFO] [stdout] | [INFO] [stdout] 189 | / quote::quote_spanned! { span=> [INFO] [stdout] 190 | | if !(#exec_expr) { [INFO] [stdout] 191 | | log::error!("{}", #format_args); [INFO] [stdout] ... | [INFO] [stdout] 194 | | .into_iter(), [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 193 - } [INFO] [stdout] 194 - .into_iter(), [INFO] [stdout] 193 + }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/implementation/codegen.rs:200:17 [INFO] [stdout] | [INFO] [stdout] 200 | / quote::quote_spanned! { span=> [INFO] [stdout] 201 | | #assert_macro!(#exec_expr, "{}", #format_args); [INFO] [stdout] 202 | | } [INFO] [stdout] 203 | | .into_iter(), [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 202 - } [INFO] [stdout] 203 - .into_iter(), [INFO] [stdout] 202 + }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/implementation/codegen.rs:232:17 [INFO] [stdout] | [INFO] [stdout] 232 | format!("{}", c.ty.message_name()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `c.ty.message_name().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/implementation/codegen.rs:274:17 [INFO] [stdout] | [INFO] [stdout] 274 | format!("{}", c.ty.message_name()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `c.ty.message_name().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `syn::visit::visit_block` doesn't need a mutable reference [INFO] [stdout] --> src/implementation/codegen.rs:345:60 [INFO] [stdout] | [INFO] [stdout] 345 | syn::visit::visit_block(&mut try_detector, &mut block); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 345 - syn::visit::visit_block(&mut try_detector, &mut block); [INFO] [stdout] 345 + syn::visit::visit_block(&mut try_detector, &block); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression can be written more simply using `.retain()` [INFO] [stdout] --> src/implementation/traits.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 193 | / trait_.items = trait_ [INFO] [stdout] 194 | | .items [INFO] [stdout] 195 | | .into_iter() [INFO] [stdout] 196 | | .filter(|item| !matches!(item, TraitItem::Fn(_))) [INFO] [stdout] 197 | | .collect(); [INFO] [stdout] | |__________________^ help: consider calling `.retain()` instead: `trait_.items.retain(|item| !matches!(item, TraitItem::Fn(_)))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_retain [INFO] [stdout] = note: `#[warn(clippy::manual_retain)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/implementation/codegen.rs:189:17 [INFO] [stdout] | [INFO] [stdout] 189 | / quote::quote_spanned! { span=> [INFO] [stdout] 190 | | if !(#exec_expr) { [INFO] [stdout] 191 | | log::error!("{}", #format_args); [INFO] [stdout] ... | [INFO] [stdout] 194 | | .into_iter(), [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 193 - } [INFO] [stdout] 194 - .into_iter(), [INFO] [stdout] 193 + }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/implementation/codegen.rs:200:17 [INFO] [stdout] | [INFO] [stdout] 200 | / quote::quote_spanned! { span=> [INFO] [stdout] 201 | | #assert_macro!(#exec_expr, "{}", #format_args); [INFO] [stdout] 202 | | } [INFO] [stdout] 203 | | .into_iter(), [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 202 - } [INFO] [stdout] 203 - .into_iter(), [INFO] [stdout] 202 + }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/implementation/codegen.rs:232:17 [INFO] [stdout] | [INFO] [stdout] 232 | format!("{}", c.ty.message_name()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `c.ty.message_name().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/implementation/codegen.rs:274:17 [INFO] [stdout] | [INFO] [stdout] 274 | format!("{}", c.ty.message_name()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `c.ty.message_name().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `syn::visit::visit_block` doesn't need a mutable reference [INFO] [stdout] --> src/implementation/codegen.rs:345:60 [INFO] [stdout] | [INFO] [stdout] 345 | syn::visit::visit_block(&mut try_detector, &mut block); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 345 - syn::visit::visit_block(&mut try_detector, &mut block); [INFO] [stdout] 345 + syn::visit::visit_block(&mut try_detector, &block); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression can be written more simply using `.retain()` [INFO] [stdout] --> src/implementation/traits.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 193 | / trait_.items = trait_ [INFO] [stdout] 194 | | .items [INFO] [stdout] 195 | | .into_iter() [INFO] [stdout] 196 | | .filter(|item| !matches!(item, TraitItem::Fn(_))) [INFO] [stdout] 197 | | .collect(); [INFO] [stdout] | |__________________^ help: consider calling `.retain()` instead: `trait_.items.retain(|item| !matches!(item, TraitItem::Fn(_)))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_retain [INFO] [stdout] = note: `#[warn(clippy::manual_retain)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> tests/methods.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | x % 2 == 0 [INFO] [stdout] | ^^^^^^^^^^ help: replace with: `x.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 `.is_multiple_of()` [INFO] [stdout] --> tests/methods.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | x % 2 == 0 [INFO] [stdout] | ^^^^^^^^^^ help: replace with: `x.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] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> tests/implication.rs:13:26 [INFO] [stdout] | [INFO] [stdout] 13 | #[ensures(!do_thing -> ret.is_none(), "!do_thing should cause a None")] [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `do_thing || ret.is_none()` [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: this boolean expression can be simplified [INFO] [stdout] --> tests/implication.rs:13:26 [INFO] [stdout] | [INFO] [stdout] 13 | #[ensures(!do_thing -> ret.is_none(), "!do_thing should cause a None")] [INFO] [stdout] | ^ help: try: `do_thing` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> tests/implication.rs:28:33 [INFO] [stdout] | [INFO] [stdout] 28 | #[ensures(old(*x) % 2 == 0 -> *x % 2 == 0)] [INFO] [stdout] | ^ help: try: `(old(*x) % 2 != 0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> tests/implication.rs:29:33 [INFO] [stdout] | [INFO] [stdout] 29 | #[ensures(old(*x) % 2 == 1 -> *x % 2 == 1)] [INFO] [stdout] | ^ help: try: `(old(*x) % 2 != 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> tests/implication.rs:28:15 [INFO] [stdout] | [INFO] [stdout] 28 | #[ensures(old(*x) % 2 == 0 -> *x % 2 == 0)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `old(*x).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 `.is_multiple_of()` [INFO] [stdout] --> tests/implication.rs:28:35 [INFO] [stdout] | [INFO] [stdout] 28 | #[ensures(old(*x) % 2 == 0 -> *x % 2 == 0)] [INFO] [stdout] | ^^^^^^^^^^^ help: replace with: `(*x).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] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> examples/library.rs:31:27 [INFO] [stdout] | [INFO] [stdout] 31 | #[debug_ensures(!ret -> self.lent.contains(book_id), "Book already lent")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `ret || self.lent.contains(book_id)` [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: this boolean expression can be simplified [INFO] [stdout] --> examples/library.rs:31:27 [INFO] [stdout] | [INFO] [stdout] 31 | #[debug_ensures(!ret -> self.lent.contains(book_id), "Book already lent")] [INFO] [stdout] | ^ help: try: `ret` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> tests/implication.rs:43:27 [INFO] [stdout] | [INFO] [stdout] 43 | #[requires(!negative -> value >= 0)] [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `negative || value >= 0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> tests/implication.rs:43:27 [INFO] [stdout] | [INFO] [stdout] 43 | #[requires(!negative -> value >= 0)] [INFO] [stdout] | ^ help: try: `negative` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.63s [INFO] running `Command { std: "docker" "inspect" "f88f362646cd8ef5d5e9c74e8a26298643c9ee66bd54011d24c580a34c68a0d5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f88f362646cd8ef5d5e9c74e8a26298643c9ee66bd54011d24c580a34c68a0d5", kill_on_drop: false }` [INFO] [stdout] f88f362646cd8ef5d5e9c74e8a26298643c9ee66bd54011d24c580a34c68a0d5