[INFO] fetching crate libreda-logic 0.0.3... [INFO] linting libreda-logic-0.0.3 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate libreda-logic 0.0.3 into /workspace/builds/worker-1-tc1/source [INFO] started tweaking crates.io crate libreda-logic 0.0.3 [INFO] finished tweaking crates.io crate libreda-logic 0.0.3 [INFO] tweaked toml for crates.io crate libreda-logic 0.0.3 written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate libreda-logic 0.0.3 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] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Locking 68 packages to latest compatible versions [INFO] [stderr] Adding blanket v0.3.0 (available: v0.4.0) [INFO] [stderr] Adding criterion v0.5.1 (available: v0.8.2) [INFO] [stderr] Adding itertools v0.13.0 (available: v0.14.0) [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] Downloading crates ... [INFO] [stderr] Downloaded blanket v0.3.0 [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] f570265f8b33a995f6002d9aef713215ab06bb95520bdd74c0ea493480a1144d [INFO] running `Command { std: "docker" "start" "-a" "f570265f8b33a995f6002d9aef713215ab06bb95520bdd74c0ea493480a1144d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f570265f8b33a995f6002d9aef713215ab06bb95520bdd74c0ea493480a1144d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f570265f8b33a995f6002d9aef713215ab06bb95520bdd74c0ea493480a1144d", kill_on_drop: false }` [INFO] [stdout] f570265f8b33a995f6002d9aef713215ab06bb95520bdd74c0ea493480a1144d [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] e8a93365880d950588018f61d9b64f7f5ed9adf6be712c93d8b8a907ca942896 [INFO] running `Command { std: "docker" "start" "-a" "e8a93365880d950588018f61d9b64f7f5ed9adf6be712c93d8b8a907ca942896", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Checking streaming-iterator v0.1.9 [INFO] [stderr] Compiling zerocopy-derive v0.8.42 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling blanket v0.3.0 [INFO] [stderr] Checking libreda-logic v0.0.3 (/opt/rustwide/workdir) [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/algorithms/cut_enumeration.rs:50:18 [INFO] [stdout] | [INFO] [stdout] 50 | fn cut_union<'a, NodeId: 'a>( [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | NodeId: Clone + Ord + Eq, [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: use of deprecated method `itertools::Itertools::group_by`: Use .chunk_by() instead [INFO] [stdout] --> src/networks/mig/transforms/distributivity.rs:56:14 [INFO] [stdout] | [INFO] [stdout] 56 | .group_by(|(nid, _i)| *nid); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new` [INFO] [stdout] --> src/networks/generic_network.rs:483:49 [INFO] [stdout] | [INFO] [stdout] 483 | fn substitute(&mut self, old: Self::Signal, new: Self::Signal) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_new` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `list_of_references` [INFO] [stdout] --> src/networks/generic_network.rs:485:17 [INFO] [stdout] | [INFO] [stdout] 485 | let list_of_references = &mut self.storage[idx].references; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_list_of_references` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `list_of_edges` [INFO] [stdout] --> src/networks/generic_network.rs:486:17 [INFO] [stdout] | [INFO] [stdout] 486 | let list_of_edges = &mut self.storage[idx].outgoing_edges; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_list_of_edges` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StaticLut` is never constructed [INFO] [stdout] --> src/truth_table/static_lut.rs:7:8 [INFO] [stdout] | [INFO] [stdout] 7 | struct StaticLut { [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 `lut_size` is never used [INFO] [stdout] --> src/truth_table/static_lut.rs:11:10 [INFO] [stdout] | [INFO] [stdout] 11 | const fn lut_size(num_inputs: usize) -> usize { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `size` is never used [INFO] [stdout] --> src/truth_table/static_lut.rs:16:18 [INFO] [stdout] | [INFO] [stdout] 15 | impl StaticLut { [INFO] [stdout] | ---------------------------------------------------------------------- associated function in this implementation [INFO] [stdout] 16 | pub const fn size() -> usize { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/linked_lists.rs:22:1 [INFO] [stdout] | [INFO] [stdout] 22 | / impl Default for ListIndex { [INFO] [stdout] 23 | | fn default() -> Self { [INFO] [stdout] 24 | | Self::Empty [INFO] [stdout] 25 | | } [INFO] [stdout] 26 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 15 + #[derive(Default)] [INFO] [stdout] 16 | pub enum ListIndex { [INFO] [stdout] 17 | /// An empty list. [INFO] [stdout] 18 ~ #[default] [INFO] [stdout] 19 ~ Empty, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking zerocopy v0.8.42 [INFO] [stdout] warning: order comparisons between booleans can be simplified [INFO] [stdout] --> src/truth_table/small_lut.rs:502:39 [INFO] [stdout] | [INFO] [stdout] 502 | SmallTruthTable::new(|[a, b]| a < b) [INFO] [stdout] | ^^^^^ help: try: `!a & b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: order comparisons between booleans can be simplified [INFO] [stdout] --> src/truth_table/small_lut.rs:512:39 [INFO] [stdout] | [INFO] [stdout] 512 | SmallTruthTable::new(|[a, b]| a > b) [INFO] [stdout] | ^^^^^ help: try: `a & !b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/linked_lists.rs:249:17 [INFO] [stdout] | [INFO] [stdout] 249 | fn iter_idx(&self, list: &ListIndex) -> LinkedListIdxIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 249 | fn iter_idx(&self, list: &ListIndex) -> LinkedListIdxIter<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/linked_lists.rs:258:13 [INFO] [stdout] | [INFO] [stdout] 258 | fn iter(&self, list: &ListIndex) -> LinkedListIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 258 | fn iter(&self, list: &ListIndex) -> LinkedListIter<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/linked_lists.rs:263:22 [INFO] [stdout] | [INFO] [stdout] 263 | fn iter_idx_from(&self, idx: ElementIndex) -> LinkedListIdxIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 263 | fn iter_idx_from(&self, idx: ElementIndex) -> LinkedListIdxIter<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/linked_lists.rs:272:18 [INFO] [stdout] | [INFO] [stdout] 272 | fn iter_from(&self, idx: ElementIndex) -> LinkedListIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 272 | fn iter_from(&self, idx: ElementIndex) -> LinkedListIter<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking tinytemplate v1.2.1 [INFO] [stderr] Checking half v2.7.1 [INFO] [stderr] Checking ciborium-ll v0.2.2 [INFO] [stderr] Checking ciborium v0.2.2 [INFO] [stderr] Checking criterion v0.5.1 [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/algorithms/cut_enumeration.rs:50:18 [INFO] [stdout] | [INFO] [stdout] 50 | fn cut_union<'a, NodeId: 'a>( [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | NodeId: Clone + Ord + Eq, [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: use of deprecated method `itertools::Itertools::group_by`: Use .chunk_by() instead [INFO] [stdout] --> src/networks/mig/transforms/distributivity.rs:56:14 [INFO] [stdout] | [INFO] [stdout] 56 | .group_by(|(nid, _i)| *nid); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new` [INFO] [stdout] --> src/networks/generic_network.rs:483:49 [INFO] [stdout] | [INFO] [stdout] 483 | fn substitute(&mut self, old: Self::Signal, new: Self::Signal) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_new` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `list_of_references` [INFO] [stdout] --> src/networks/generic_network.rs:485:17 [INFO] [stdout] | [INFO] [stdout] 485 | let list_of_references = &mut self.storage[idx].references; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_list_of_references` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `list_of_edges` [INFO] [stdout] --> src/networks/generic_network.rs:486:17 [INFO] [stdout] | [INFO] [stdout] 486 | let list_of_edges = &mut self.storage[idx].outgoing_edges; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_list_of_edges` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StaticLut` is never constructed [INFO] [stdout] --> src/truth_table/static_lut.rs:7:8 [INFO] [stdout] | [INFO] [stdout] 7 | struct StaticLut { [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 `lut_size` is never used [INFO] [stdout] --> src/truth_table/static_lut.rs:11:10 [INFO] [stdout] | [INFO] [stdout] 11 | const fn lut_size(num_inputs: usize) -> usize { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `size` is never used [INFO] [stdout] --> src/truth_table/static_lut.rs:16:18 [INFO] [stdout] | [INFO] [stdout] 15 | impl StaticLut { [INFO] [stdout] | ---------------------------------------------------------------------- associated function in this implementation [INFO] [stdout] 16 | pub const fn size() -> usize { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/linked_lists.rs:22:1 [INFO] [stdout] | [INFO] [stdout] 22 | / impl Default for ListIndex { [INFO] [stdout] 23 | | fn default() -> Self { [INFO] [stdout] 24 | | Self::Empty [INFO] [stdout] 25 | | } [INFO] [stdout] 26 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 15 + #[derive(Default)] [INFO] [stdout] 16 | pub enum ListIndex { [INFO] [stdout] 17 | /// An empty list. [INFO] [stdout] 18 ~ #[default] [INFO] [stdout] 19 ~ Empty, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/native_boolean_functions.rs:178:5 [INFO] [stdout] | [INFO] [stdout] 178 | assert_eq!(result, false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 178 - assert_eq!(result, false); [INFO] [stdout] 178 + assert!(!result); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/native_boolean_functions.rs:185:5 [INFO] [stdout] | [INFO] [stdout] 185 | assert_eq!(result, true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 185 - assert_eq!(result, true); [INFO] [stdout] 185 + assert!(result); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/networks/klut.rs:133:49 [INFO] [stdout] | [INFO] [stdout] 133 | SimplifyResult::Simplified(_, _) => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] = note: `#[warn(clippy::assertions_on_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/networks/mig/transforms/distributivity.rs:184:13 [INFO] [stdout] | [INFO] [stdout] 184 | assert!((u1, v1) == (u, v) || (u1, v1) == (u, v)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(u1, v1) == (u, v)` [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: using `clone` on type `[i32; 6]` which implements the `Copy` trait [INFO] [stdout] --> src/truth_table/permutation_gray_code.rs:178:25 [INFO] [stdout] | [INFO] [stdout] 178 | all_elements.insert(arr.clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `arr` [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; 6]` which implements the `Copy` trait [INFO] [stdout] --> src/truth_table/permutation_gray_code.rs:183:29 [INFO] [stdout] | [INFO] [stdout] 183 | all_elements.insert(arr.clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `arr` [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 operation has no effect [INFO] [stdout] --> src/truth_table/permutation_iter.rs:92:40 [INFO] [stdout] | [INFO] [stdout] 92 | assert_eq!(all_permutations.len(), 1 * 2 * 3 * 4); [INFO] [stdout] | ^^^^^ help: consider reducing it to: `2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] = note: `#[warn(clippy::identity_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/truth_table/small_lut.rs:360:5 [INFO] [stdout] | [INFO] [stdout] 360 | assert_eq!(mux_ab.eval(&[false, false, true]), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 360 - assert_eq!(mux_ab.eval(&[false, false, true]), false); [INFO] [stdout] 360 + assert!(!mux_ab.eval(&[false, false, true])); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/truth_table/small_lut.rs:361:5 [INFO] [stdout] | [INFO] [stdout] 361 | assert_eq!(mux_ab.eval(&[true, false, true]), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 361 - assert_eq!(mux_ab.eval(&[true, false, true]), true); [INFO] [stdout] 361 + assert!(mux_ab.eval(&[true, false, true])); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/truth_table/small_lut.rs:364:5 [INFO] [stdout] | [INFO] [stdout] 364 | assert_eq!(mux_ba.eval(&[false, false, true]), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 364 - assert_eq!(mux_ba.eval(&[false, false, true]), true); [INFO] [stdout] 364 + assert!(mux_ba.eval(&[false, false, true])); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/truth_table/small_lut.rs:365:5 [INFO] [stdout] | [INFO] [stdout] 365 | assert_eq!(mux_ba.eval(&[true, false, true]), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 365 - assert_eq!(mux_ba.eval(&[true, false, true]), false); [INFO] [stdout] 365 + assert!(!mux_ba.eval(&[true, false, true])); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: order comparisons between booleans can be simplified [INFO] [stdout] --> src/truth_table/small_lut.rs:502:39 [INFO] [stdout] | [INFO] [stdout] 502 | SmallTruthTable::new(|[a, b]| a < b) [INFO] [stdout] | ^^^^^ help: try: `!a & b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: order comparisons between booleans can be simplified [INFO] [stdout] --> src/truth_table/small_lut.rs:512:39 [INFO] [stdout] | [INFO] [stdout] 512 | SmallTruthTable::new(|[a, b]| a > b) [INFO] [stdout] | ^^^^^ help: try: `a & !b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/truth_table/small_lut.rs:550:5 [INFO] [stdout] | [INFO] [stdout] 550 | assert_eq!(maj3.get_bit(0b000), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 550 - assert_eq!(maj3.get_bit(0b000), false); [INFO] [stdout] 550 + assert!(!maj3.get_bit(0b000)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/truth_table/small_lut.rs:551:5 [INFO] [stdout] | [INFO] [stdout] 551 | assert_eq!(maj3.get_bit(0b001), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 551 - assert_eq!(maj3.get_bit(0b001), false); [INFO] [stdout] 551 + assert!(!maj3.get_bit(0b001)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/truth_table/small_lut.rs:552:5 [INFO] [stdout] | [INFO] [stdout] 552 | assert_eq!(maj3.get_bit(0b100), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 552 - assert_eq!(maj3.get_bit(0b100), false); [INFO] [stdout] 552 + assert!(!maj3.get_bit(0b100)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/truth_table/small_lut.rs:553:5 [INFO] [stdout] | [INFO] [stdout] 553 | assert_eq!(maj3.get_bit(0b011), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 553 - assert_eq!(maj3.get_bit(0b011), true); [INFO] [stdout] 553 + assert!(maj3.get_bit(0b011)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/linked_lists.rs:249:17 [INFO] [stdout] | [INFO] [stdout] 249 | fn iter_idx(&self, list: &ListIndex) -> LinkedListIdxIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 249 | fn iter_idx(&self, list: &ListIndex) -> LinkedListIdxIter<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/linked_lists.rs:258:13 [INFO] [stdout] | [INFO] [stdout] 258 | fn iter(&self, list: &ListIndex) -> LinkedListIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 258 | fn iter(&self, list: &ListIndex) -> LinkedListIter<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/linked_lists.rs:263:22 [INFO] [stdout] | [INFO] [stdout] 263 | fn iter_idx_from(&self, idx: ElementIndex) -> LinkedListIdxIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 263 | fn iter_idx_from(&self, idx: ElementIndex) -> LinkedListIdxIter<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/linked_lists.rs:272:18 [INFO] [stdout] | [INFO] [stdout] 272 | fn iter_from(&self, idx: ElementIndex) -> LinkedListIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 272 | fn iter_from(&self, idx: ElementIndex) -> LinkedListIter<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.60s [INFO] running `Command { std: "docker" "inspect" "e8a93365880d950588018f61d9b64f7f5ed9adf6be712c93d8b8a907ca942896", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e8a93365880d950588018f61d9b64f7f5ed9adf6be712c93d8b8a907ca942896", kill_on_drop: false }` [INFO] [stdout] e8a93365880d950588018f61d9b64f7f5ed9adf6be712c93d8b8a907ca942896