[INFO] crate boolean_expression 0.3.8 is already in cache [INFO] extracting crate boolean_expression 0.3.8 into work/ex/clippy-test-run/sources/stable/reg/boolean_expression/0.3.8 [INFO] extracting crate boolean_expression 0.3.8 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/boolean_expression/0.3.8 [INFO] validating manifest of boolean_expression-0.3.8 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of boolean_expression-0.3.8 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing boolean_expression-0.3.8 [INFO] finished frobbing boolean_expression-0.3.8 [INFO] frobbed toml for boolean_expression-0.3.8 written to work/ex/clippy-test-run/sources/stable/reg/boolean_expression/0.3.8/Cargo.toml [INFO] started frobbing boolean_expression-0.3.8 [INFO] finished frobbing boolean_expression-0.3.8 [INFO] frobbed toml for boolean_expression-0.3.8 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/boolean_expression/0.3.8/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting boolean_expression-0.3.8 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/boolean_expression/0.3.8:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 9a922dfc2b1bb0922249908aaf04bd631d2a41a6bf992ee2d287315e47fe182d [INFO] running `"docker" "start" "-a" "9a922dfc2b1bb0922249908aaf04bd631d2a41a6bf992ee2d287315e47fe182d"` [INFO] [stderr] Compiling quote v0.6.11 [INFO] [stderr] Compiling syn v0.15.26 [INFO] [stderr] Compiling indoc-impl v0.2.8 [INFO] [stderr] Checking indoc v0.2.8 [INFO] [stderr] Checking boolean_expression v0.3.8 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bdd.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | label: label, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `label` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bdd.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | lo: lo, [INFO] [stderr] | ^^^^^^ help: replace it with: `lo` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bdd.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | hi: hi, [INFO] [stderr] | ^^^^^^ help: replace it with: `hi` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bdd.rs:651:21 [INFO] [stderr] | [INFO] [stderr] 651 | BDDLoader { bdd: bdd } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `bdd` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bdd.rs:670:13 [INFO] [stderr] | [INFO] [stderr] 670 | lo: lo, [INFO] [stderr] | ^^^^^^ help: replace it with: `lo` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bdd.rs:671:13 [INFO] [stderr] | [INFO] [stderr] 671 | hi: hi, [INFO] [stderr] | ^^^^^^ help: replace it with: `hi` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/idd.rs:89:17 [INFO] [stderr] | [INFO] [stderr] 89 | label: label, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `label` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/idd.rs:116:13 [INFO] [stderr] | [INFO] [stderr] 116 | label: label, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `label` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplify.rs:41:34 [INFO] [stderr] | [INFO] [stderr] 41 | (Expr::Or(a, b), c) => Expr::Or( [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/simplify.rs:41:38 [INFO] [stderr] | [INFO] [stderr] 41 | (Expr::Or(a, b), c) => Expr::Or( [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplify.rs:45:34 [INFO] [stderr] | [INFO] [stderr] 45 | (c, Expr::Or(a, b)) => Expr::Or( [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/simplify.rs:45:37 [INFO] [stderr] | [INFO] [stderr] 45 | (c, Expr::Or(a, b)) => Expr::Or( [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bdd.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | label: label, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `label` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bdd.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | lo: lo, [INFO] [stderr] | ^^^^^^ help: replace it with: `lo` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bdd.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | hi: hi, [INFO] [stderr] | ^^^^^^ help: replace it with: `hi` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bdd.rs:651:21 [INFO] [stderr] | [INFO] [stderr] 651 | BDDLoader { bdd: bdd } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `bdd` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bdd.rs:670:13 [INFO] [stderr] | [INFO] [stderr] 670 | lo: lo, [INFO] [stderr] | ^^^^^^ help: replace it with: `lo` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bdd.rs:671:13 [INFO] [stderr] | [INFO] [stderr] 671 | hi: hi, [INFO] [stderr] | ^^^^^^ help: replace it with: `hi` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/idd.rs:89:17 [INFO] [stderr] | [INFO] [stderr] 89 | label: label, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `label` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/idd.rs:116:13 [INFO] [stderr] | [INFO] [stderr] 116 | label: label, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `label` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplify.rs:41:34 [INFO] [stderr] | [INFO] [stderr] 41 | (Expr::Or(a, b), c) => Expr::Or( [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/simplify.rs:41:38 [INFO] [stderr] | [INFO] [stderr] 41 | (Expr::Or(a, b), c) => Expr::Or( [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplify.rs:45:34 [INFO] [stderr] | [INFO] [stderr] 45 | (c, Expr::Or(a, b)) => Expr::Or( [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/simplify.rs:45:37 [INFO] [stderr] | [INFO] [stderr] 45 | (c, Expr::Or(a, b)) => Expr::Or( [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/idd.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | return self.constant(f(a.as_const().unwrap(), b.as_const().unwrap())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.constant(f(a.as_const().unwrap(), b.as_const().unwrap()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/idd.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | return self.constant(f(a.as_const().unwrap(), b.as_const().unwrap())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.constant(f(a.as_const().unwrap(), b.as_const().unwrap()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | / match self { [INFO] [stderr] 45 | | &Expr::Terminal(_) => true, [INFO] [stderr] 46 | | _ => false, [INFO] [stderr] 47 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 44 | match *self { [INFO] [stderr] 45 | Expr::Terminal(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | / match self { [INFO] [stderr] 53 | | &Expr::Const(_) => true, [INFO] [stderr] 54 | | _ => false, [INFO] [stderr] 55 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 52 | match *self { [INFO] [stderr] 53 | Expr::Const(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | / match self { [INFO] [stderr] 61 | | &Expr::Not(_) => true, [INFO] [stderr] 62 | | _ => false, [INFO] [stderr] 63 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 60 | match *self { [INFO] [stderr] 61 | Expr::Not(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | / match self { [INFO] [stderr] 69 | | &Expr::And(_, _) => true, [INFO] [stderr] 70 | | _ => false, [INFO] [stderr] 71 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 68 | match *self { [INFO] [stderr] 69 | Expr::And(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:76:9 [INFO] [stderr] | [INFO] [stderr] 76 | / match self { [INFO] [stderr] 77 | | &Expr::Or(_, _) => true, [INFO] [stderr] 78 | | _ => false, [INFO] [stderr] 79 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 76 | match *self { [INFO] [stderr] 77 | Expr::Or(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:103:9 [INFO] [stderr] | [INFO] [stderr] 103 | / match self { [INFO] [stderr] 104 | | &Expr::Terminal(ref t) => *vals.get(t).unwrap_or(&false), [INFO] [stderr] 105 | | &Expr::Const(val) => val, [INFO] [stderr] 106 | | &Expr::And(ref a, ref b) => a.evaluate(vals) && b.evaluate(vals), [INFO] [stderr] 107 | | &Expr::Or(ref a, ref b) => a.evaluate(vals) || b.evaluate(vals), [INFO] [stderr] 108 | | &Expr::Not(ref x) => !x.evaluate(vals), [INFO] [stderr] 109 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 103 | match *self { [INFO] [stderr] 104 | Expr::Terminal(ref t) => *vals.get(t).unwrap_or(&false), [INFO] [stderr] 105 | Expr::Const(val) => val, [INFO] [stderr] 106 | Expr::And(ref a, ref b) => a.evaluate(vals) && b.evaluate(vals), [INFO] [stderr] 107 | Expr::Or(ref a, ref b) => a.evaluate(vals) || b.evaluate(vals), [INFO] [stderr] 108 | Expr::Not(ref x) => !x.evaluate(vals), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | / match self { [INFO] [stderr] 189 | | &Expr::Terminal(ref t) => Expr::Terminal(f(t)), [INFO] [stderr] 190 | | &Expr::Const(val) => Expr::Const(val), [INFO] [stderr] 191 | | &Expr::Not(ref n) => Expr::not(n.map1(f)), [INFO] [stderr] 192 | | &Expr::And(ref a, ref b) => Expr::and(a.map1(f), b.map1(f)), [INFO] [stderr] 193 | | &Expr::Or(ref a, ref b) => Expr::or(a.map1(f), b.map1(f)), [INFO] [stderr] 194 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 188 | match *self { [INFO] [stderr] 189 | Expr::Terminal(ref t) => Expr::Terminal(f(t)), [INFO] [stderr] 190 | Expr::Const(val) => Expr::Const(val), [INFO] [stderr] 191 | Expr::Not(ref n) => Expr::not(n.map1(f)), [INFO] [stderr] 192 | Expr::And(ref a, ref b) => Expr::and(a.map1(f), b.map1(f)), [INFO] [stderr] 193 | Expr::Or(ref a, ref b) => Expr::or(a.map1(f), b.map1(f)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/bdd.rs:260:22 [INFO] [stderr] | [INFO] [stderr] 260 | }).fold1(|a, b| Expr::and(a, b)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Expr::and` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/bdd.rs:256:32 [INFO] [stderr] | [INFO] [stderr] 256 | .flat_map(|(i, v)| match v { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 257 | | &CubeVar::False => Some(Expr::not(Expr::Terminal(i))), [INFO] [stderr] 258 | | &CubeVar::True => Some(Expr::Terminal(i)), [INFO] [stderr] 259 | | &CubeVar::DontCare => None, [INFO] [stderr] 260 | | }).fold1(|a, b| Expr::and(a, b)) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 256 | .flat_map(|(i, v)| match *v { [INFO] [stderr] 257 | CubeVar::False => Some(Expr::not(Expr::Terminal(i))), [INFO] [stderr] 258 | CubeVar::True => Some(Expr::Terminal(i)), [INFO] [stderr] 259 | CubeVar::DontCare => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/bdd.rs:267:20 [INFO] [stderr] | [INFO] [stderr] 267 | .fold1(|a, b| Expr::or(a, b)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Expr::or` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `bdd::BDD` [INFO] [stderr] --> src/bdd.rs:343:5 [INFO] [stderr] | [INFO] [stderr] 343 | / pub fn new() -> BDD { [INFO] [stderr] 344 | | BDD { [INFO] [stderr] 345 | | bdd: LabelBDD::new(), [INFO] [stderr] 346 | | labels: HashMap::new(), [INFO] [stderr] 347 | | rev_labels: Vec::new(), [INFO] [stderr] 348 | | } [INFO] [stderr] 349 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 338 | impl Default for bdd::BDD { [INFO] [stderr] 339 | fn default() -> Self { [INFO] [stderr] 340 | Self::new() [INFO] [stderr] 341 | } [INFO] [stderr] 342 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `from_*` usually take no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/bdd.rs:414:22 [INFO] [stderr] | [INFO] [stderr] 414 | pub fn from_expr(&mut self, e: &Expr) -> BDDFunc { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/bdd.rs:415:9 [INFO] [stderr] | [INFO] [stderr] 415 | / match e { [INFO] [stderr] 416 | | &Expr::Terminal(ref t) => self.terminal(t.clone()), [INFO] [stderr] 417 | | &Expr::Const(val) => self.constant(val), [INFO] [stderr] 418 | | &Expr::Not(ref x) => { [INFO] [stderr] ... | [INFO] [stderr] 431 | | } [INFO] [stderr] 432 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 415 | match *e { [INFO] [stderr] 416 | Expr::Terminal(ref t) => self.terminal(t.clone()), [INFO] [stderr] 417 | Expr::Const(val) => self.constant(val), [INFO] [stderr] 418 | Expr::Not(ref x) => { [INFO] [stderr] 419 | let xval = self.from_expr(&**x); [INFO] [stderr] 420 | self.not(xval) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `bdd::PersistedBDD` [INFO] [stderr] --> src/bdd.rs:581:5 [INFO] [stderr] | [INFO] [stderr] 581 | / pub fn new() -> PersistedBDD { [INFO] [stderr] 582 | | PersistedBDD { [INFO] [stderr] 583 | | bdd: BDD::new(), [INFO] [stderr] 584 | | next_output_func: 0, [INFO] [stderr] 585 | | next_output_label: 0, [INFO] [stderr] 586 | | } [INFO] [stderr] 587 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 576 | impl Default for bdd::PersistedBDD { [INFO] [stderr] 577 | fn default() -> Self { [INFO] [stderr] 578 | Self::new() [INFO] [stderr] 579 | } [INFO] [stderr] 580 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bdd.rs:620:12 [INFO] [stderr] | [INFO] [stderr] 620 | if self.bdd.bdd.nodes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.bdd.bdd.nodes.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bdd.rs:648:17 [INFO] [stderr] | [INFO] [stderr] 648 | assert!(bdd.labels.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `bdd.labels.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bdd.rs:649:17 [INFO] [stderr] | [INFO] [stderr] 649 | assert!(bdd.rev_labels.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `bdd.rev_labels.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bdd.rs:650:17 [INFO] [stderr] | [INFO] [stderr] 650 | assert!(bdd.bdd.nodes.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `bdd.bdd.nodes.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/idd.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | / match self { [INFO] [stderr] 56 | | &IDDFunc::Const(i) => Some(i), [INFO] [stderr] 57 | | _ => None, [INFO] [stderr] 58 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 55 | match *self { [INFO] [stderr] 56 | IDDFunc::Const(i) => Some(i), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/idd.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | / match self { [INFO] [stderr] 65 | | &IDDFunc::Node(i) => Some(i), [INFO] [stderr] 66 | | _ => None, [INFO] [stderr] 67 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 64 | match *self { [INFO] [stderr] 65 | IDDFunc::Node(i) => Some(i), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `from_*` usually take no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/idd.rs:101:33 [INFO] [stderr] | [INFO] [stderr] 101 | pub(crate) fn from_bdd_func(&self, f: BDDFunc) -> IDDFunc { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/idd.rs:126:26 [INFO] [stderr] | [INFO] [stderr] 126 | v.insert(f.clone()); [INFO] [stderr] | ^^^^^^^^^ help: try removing the `clone` call: `f` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `cubes::CubeList` [INFO] [stderr] --> src/cubes.rs:171:5 [INFO] [stderr] | [INFO] [stderr] 171 | / pub fn new() -> CubeList { [INFO] [stderr] 172 | | CubeList(SmallVec::new()) [INFO] [stderr] 173 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 169 | impl Default for cubes::CubeList { [INFO] [stderr] 170 | fn default() -> Self { [INFO] [stderr] 171 | Self::new() [INFO] [stderr] 172 | } [INFO] [stderr] 173 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/cubes.rs:177:18 [INFO] [stderr] | [INFO] [stderr] 177 | CubeList(cubes.iter().map(|c| c.clone()).collect()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `cubes.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | / match self { [INFO] [stderr] 45 | | &Expr::Terminal(_) => true, [INFO] [stderr] 46 | | _ => false, [INFO] [stderr] 47 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 44 | match *self { [INFO] [stderr] 45 | Expr::Terminal(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | / match self { [INFO] [stderr] 53 | | &Expr::Const(_) => true, [INFO] [stderr] 54 | | _ => false, [INFO] [stderr] 55 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 52 | match *self { [INFO] [stderr] 53 | Expr::Const(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | / match self { [INFO] [stderr] 61 | | &Expr::Not(_) => true, [INFO] [stderr] 62 | | _ => false, [INFO] [stderr] 63 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 60 | match *self { [INFO] [stderr] 61 | Expr::Not(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | / match self { [INFO] [stderr] 69 | | &Expr::And(_, _) => true, [INFO] [stderr] 70 | | _ => false, [INFO] [stderr] 71 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 68 | match *self { [INFO] [stderr] 69 | Expr::And(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:76:9 [INFO] [stderr] | [INFO] [stderr] 76 | / match self { [INFO] [stderr] 77 | | &Expr::Or(_, _) => true, [INFO] [stderr] 78 | | _ => false, [INFO] [stderr] 79 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 76 | match *self { [INFO] [stderr] 77 | Expr::Or(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:103:9 [INFO] [stderr] | [INFO] [stderr] 103 | / match self { [INFO] [stderr] 104 | | &Expr::Terminal(ref t) => *vals.get(t).unwrap_or(&false), [INFO] [stderr] 105 | | &Expr::Const(val) => val, [INFO] [stderr] 106 | | &Expr::And(ref a, ref b) => a.evaluate(vals) && b.evaluate(vals), [INFO] [stderr] 107 | | &Expr::Or(ref a, ref b) => a.evaluate(vals) || b.evaluate(vals), [INFO] [stderr] 108 | | &Expr::Not(ref x) => !x.evaluate(vals), [INFO] [stderr] 109 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 103 | match *self { [INFO] [stderr] 104 | Expr::Terminal(ref t) => *vals.get(t).unwrap_or(&false), [INFO] [stderr] 105 | Expr::Const(val) => val, [INFO] [stderr] 106 | Expr::And(ref a, ref b) => a.evaluate(vals) && b.evaluate(vals), [INFO] [stderr] 107 | Expr::Or(ref a, ref b) => a.evaluate(vals) || b.evaluate(vals), [INFO] [stderr] 108 | Expr::Not(ref x) => !x.evaluate(vals), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expr.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | / match self { [INFO] [stderr] 189 | | &Expr::Terminal(ref t) => Expr::Terminal(f(t)), [INFO] [stderr] 190 | | &Expr::Const(val) => Expr::Const(val), [INFO] [stderr] 191 | | &Expr::Not(ref n) => Expr::not(n.map1(f)), [INFO] [stderr] 192 | | &Expr::And(ref a, ref b) => Expr::and(a.map1(f), b.map1(f)), [INFO] [stderr] 193 | | &Expr::Or(ref a, ref b) => Expr::or(a.map1(f), b.map1(f)), [INFO] [stderr] 194 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 188 | match *self { [INFO] [stderr] 189 | Expr::Terminal(ref t) => Expr::Terminal(f(t)), [INFO] [stderr] 190 | Expr::Const(val) => Expr::Const(val), [INFO] [stderr] 191 | Expr::Not(ref n) => Expr::not(n.map1(f)), [INFO] [stderr] 192 | Expr::And(ref a, ref b) => Expr::and(a.map1(f), b.map1(f)), [INFO] [stderr] 193 | Expr::Or(ref a, ref b) => Expr::or(a.map1(f), b.map1(f)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/bdd.rs:260:22 [INFO] [stderr] | [INFO] [stderr] 260 | }).fold1(|a, b| Expr::and(a, b)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Expr::and` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/bdd.rs:256:32 [INFO] [stderr] | [INFO] [stderr] 256 | .flat_map(|(i, v)| match v { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 257 | | &CubeVar::False => Some(Expr::not(Expr::Terminal(i))), [INFO] [stderr] 258 | | &CubeVar::True => Some(Expr::Terminal(i)), [INFO] [stderr] 259 | | &CubeVar::DontCare => None, [INFO] [stderr] 260 | | }).fold1(|a, b| Expr::and(a, b)) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 256 | .flat_map(|(i, v)| match *v { [INFO] [stderr] 257 | CubeVar::False => Some(Expr::not(Expr::Terminal(i))), [INFO] [stderr] 258 | CubeVar::True => Some(Expr::Terminal(i)), [INFO] [stderr] 259 | CubeVar::DontCare => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/bdd.rs:267:20 [INFO] [stderr] | [INFO] [stderr] 267 | .fold1(|a, b| Expr::or(a, b)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Expr::or` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `bdd::BDD` [INFO] [stderr] --> src/bdd.rs:343:5 [INFO] [stderr] | [INFO] [stderr] 343 | / pub fn new() -> BDD { [INFO] [stderr] 344 | | BDD { [INFO] [stderr] 345 | | bdd: LabelBDD::new(), [INFO] [stderr] 346 | | labels: HashMap::new(), [INFO] [stderr] 347 | | rev_labels: Vec::new(), [INFO] [stderr] 348 | | } [INFO] [stderr] 349 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 338 | impl Default for bdd::BDD { [INFO] [stderr] 339 | fn default() -> Self { [INFO] [stderr] 340 | Self::new() [INFO] [stderr] 341 | } [INFO] [stderr] 342 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `from_*` usually take no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/bdd.rs:414:22 [INFO] [stderr] | [INFO] [stderr] 414 | pub fn from_expr(&mut self, e: &Expr) -> BDDFunc { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/bdd.rs:415:9 [INFO] [stderr] | [INFO] [stderr] 415 | / match e { [INFO] [stderr] 416 | | &Expr::Terminal(ref t) => self.terminal(t.clone()), [INFO] [stderr] 417 | | &Expr::Const(val) => self.constant(val), [INFO] [stderr] 418 | | &Expr::Not(ref x) => { [INFO] [stderr] ... | [INFO] [stderr] 431 | | } [INFO] [stderr] 432 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 415 | match *e { [INFO] [stderr] 416 | Expr::Terminal(ref t) => self.terminal(t.clone()), [INFO] [stderr] 417 | Expr::Const(val) => self.constant(val), [INFO] [stderr] 418 | Expr::Not(ref x) => { [INFO] [stderr] 419 | let xval = self.from_expr(&**x); [INFO] [stderr] 420 | self.not(xval) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `bdd::PersistedBDD` [INFO] [stderr] --> src/bdd.rs:581:5 [INFO] [stderr] | [INFO] [stderr] 581 | / pub fn new() -> PersistedBDD { [INFO] [stderr] 582 | | PersistedBDD { [INFO] [stderr] 583 | | bdd: BDD::new(), [INFO] [stderr] 584 | | next_output_func: 0, [INFO] [stderr] 585 | | next_output_label: 0, [INFO] [stderr] 586 | | } [INFO] [stderr] 587 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 576 | impl Default for bdd::PersistedBDD { [INFO] [stderr] 577 | fn default() -> Self { [INFO] [stderr] 578 | Self::new() [INFO] [stderr] 579 | } [INFO] [stderr] 580 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bdd.rs:620:12 [INFO] [stderr] | [INFO] [stderr] 620 | if self.bdd.bdd.nodes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.bdd.bdd.nodes.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bdd.rs:648:17 [INFO] [stderr] | [INFO] [stderr] 648 | assert!(bdd.labels.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `bdd.labels.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bdd.rs:649:17 [INFO] [stderr] | [INFO] [stderr] 649 | assert!(bdd.rev_labels.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `bdd.rev_labels.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bdd.rs:650:17 [INFO] [stderr] | [INFO] [stderr] 650 | assert!(bdd.bdd.nodes.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `bdd.bdd.nodes.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/bdd.rs:1046:17 [INFO] [stderr] | [INFO] [stderr] 1046 | assert!(bdd.evaluate(1, &h) == true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `bdd.evaluate(1, &h)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/idd.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | / match self { [INFO] [stderr] 56 | | &IDDFunc::Const(i) => Some(i), [INFO] [stderr] 57 | | _ => None, [INFO] [stderr] 58 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 55 | match *self { [INFO] [stderr] 56 | IDDFunc::Const(i) => Some(i), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/idd.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | / match self { [INFO] [stderr] 65 | | &IDDFunc::Node(i) => Some(i), [INFO] [stderr] 66 | | _ => None, [INFO] [stderr] 67 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 64 | match *self { [INFO] [stderr] 65 | IDDFunc::Node(i) => Some(i), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `from_*` usually take no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/idd.rs:101:33 [INFO] [stderr] | [INFO] [stderr] 101 | pub(crate) fn from_bdd_func(&self, f: BDDFunc) -> IDDFunc { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/idd.rs:126:26 [INFO] [stderr] | [INFO] [stderr] 126 | v.insert(f.clone()); [INFO] [stderr] | ^^^^^^^^^ help: try removing the `clone` call: `f` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `cubes::CubeList` [INFO] [stderr] --> src/cubes.rs:171:5 [INFO] [stderr] | [INFO] [stderr] 171 | / pub fn new() -> CubeList { [INFO] [stderr] 172 | | CubeList(SmallVec::new()) [INFO] [stderr] 173 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 169 | impl Default for cubes::CubeList { [INFO] [stderr] 170 | fn default() -> Self { [INFO] [stderr] 171 | Self::new() [INFO] [stderr] 172 | } [INFO] [stderr] 173 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/cubes.rs:177:18 [INFO] [stderr] | [INFO] [stderr] 177 | CubeList(cubes.iter().map(|c| c.clone()).collect()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `cubes.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 10.26s [INFO] running `"docker" "inspect" "9a922dfc2b1bb0922249908aaf04bd631d2a41a6bf992ee2d287315e47fe182d"` [INFO] running `"docker" "rm" "-f" "9a922dfc2b1bb0922249908aaf04bd631d2a41a6bf992ee2d287315e47fe182d"` [INFO] [stdout] 9a922dfc2b1bb0922249908aaf04bd631d2a41a6bf992ee2d287315e47fe182d