[INFO] crate puzzle-solver 0.4.1 is already in cache [INFO] extracting crate puzzle-solver 0.4.1 into work/ex/clippy-test-run/sources/stable/reg/puzzle-solver/0.4.1 [INFO] extracting crate puzzle-solver 0.4.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/puzzle-solver/0.4.1 [INFO] validating manifest of puzzle-solver-0.4.1 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 puzzle-solver-0.4.1 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 puzzle-solver-0.4.1 [INFO] finished frobbing puzzle-solver-0.4.1 [INFO] frobbed toml for puzzle-solver-0.4.1 written to work/ex/clippy-test-run/sources/stable/reg/puzzle-solver/0.4.1/Cargo.toml [INFO] started frobbing puzzle-solver-0.4.1 [INFO] finished frobbing puzzle-solver-0.4.1 [INFO] frobbed toml for puzzle-solver-0.4.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/puzzle-solver/0.4.1/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 puzzle-solver-0.4.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/puzzle-solver/0.4.1:/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] 1b146b66654edf5f1266bd22106d92b2a727c6245a6719c283fa499d671b3522 [INFO] running `"docker" "start" "-a" "1b146b66654edf5f1266bd22106d92b2a727c6245a6719c283fa499d671b3522"` [INFO] [stderr] Checking num-rational v0.1.42 [INFO] [stderr] Checking puzzle-solver v0.4.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/constraint/equality.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | eqn: eqn, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `eqn` [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/constraint/equality.rs:144:30 [INFO] [stderr] | [INFO] [stderr] 144 | Ok(Rc::new(Equality{ eqn: eqn })) [INFO] [stderr] | ^^^^^^^^ help: replace it with: `eqn` [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/constraint/unify.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | var1: var1, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `var1` [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/constraint/unify.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | var2: var2, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `var2` [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/constraint/unify.rs:56:27 [INFO] [stderr] | [INFO] [stderr] 56 | Ok(Rc::new(Unify{ var1: var1, var2: var2 })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `var1` [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/constraint/unify.rs:56:39 [INFO] [stderr] | [INFO] [stderr] 56 | Ok(Rc::new(Unify{ var1: var1, var2: var2 })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `var2` [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/linexpr.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | coef: coef, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `coef` [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/puzzle.rs:459:13 [INFO] [stderr] | [INFO] [stderr] 459 | wake: wake, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `wake` [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/puzzle.rs:477:13 [INFO] [stderr] | [INFO] [stderr] 477 | wake: wake, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `wake` [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/puzzle.rs:510:13 [INFO] [stderr] | [INFO] [stderr] 510 | puzzle: puzzle, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `puzzle` [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/puzzle.rs:512:13 [INFO] [stderr] | [INFO] [stderr] 512 | vars: vars, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `vars` [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/puzzle.rs:513:13 [INFO] [stderr] | [INFO] [stderr] 513 | wake: wake, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `wake` [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/puzzle.rs:721:38 [INFO] [stderr] | [INFO] [stderr] 721 | solutions.push(Solution{ vars: vars }); [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `vars` [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: using `writeln!(f, "")` [INFO] [stderr] --> src/puzzle.rs:847:13 [INFO] [stderr] | [INFO] [stderr] 847 | writeln!(f, "")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `writeln!(f)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::writeln_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/constraint/equality.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | eqn: eqn, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `eqn` [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/constraint/equality.rs:144:30 [INFO] [stderr] | [INFO] [stderr] 144 | Ok(Rc::new(Equality{ eqn: eqn })) [INFO] [stderr] | ^^^^^^^^ help: replace it with: `eqn` [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/constraint/unify.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | var1: var1, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `var1` [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/constraint/unify.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | var2: var2, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `var2` [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/constraint/unify.rs:56:27 [INFO] [stderr] | [INFO] [stderr] 56 | Ok(Rc::new(Unify{ var1: var1, var2: var2 })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `var1` [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/constraint/unify.rs:56:39 [INFO] [stderr] | [INFO] [stderr] 56 | Ok(Rc::new(Unify{ var1: var1, var2: var2 })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `var2` [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/linexpr.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | coef: coef, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `coef` [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/puzzle.rs:459:13 [INFO] [stderr] | [INFO] [stderr] 459 | wake: wake, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `wake` [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/puzzle.rs:477:13 [INFO] [stderr] | [INFO] [stderr] 477 | wake: wake, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `wake` [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/puzzle.rs:510:13 [INFO] [stderr] | [INFO] [stderr] 510 | puzzle: puzzle, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `puzzle` [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/puzzle.rs:512:13 [INFO] [stderr] | [INFO] [stderr] 512 | vars: vars, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `vars` [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/puzzle.rs:513:13 [INFO] [stderr] | [INFO] [stderr] 513 | wake: wake, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `wake` [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/puzzle.rs:721:38 [INFO] [stderr] | [INFO] [stderr] 721 | solutions.push(Solution{ vars: vars }); [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `vars` [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: using `writeln!(f, "")` [INFO] [stderr] --> src/puzzle.rs:847:13 [INFO] [stderr] | [INFO] [stderr] 847 | writeln!(f, "")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `writeln!(f)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::writeln_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/constraint/equality.rs:67:16 [INFO] [stderr] | [INFO] [stderr] 67 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 68 | | if !sum.is_zero() { [INFO] [stderr] 69 | | return Err(()); [INFO] [stderr] 70 | | } [INFO] [stderr] 71 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 67 | } else if !sum.is_zero() { [INFO] [stderr] 68 | return Err(()); [INFO] [stderr] 69 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/puzzle.rs:827:16 [INFO] [stderr] | [INFO] [stderr] 827 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 828 | | if let (&mut VarState::Unassigned(Candidates::Set(ref mut rc1)), [INFO] [stderr] 829 | | &mut VarState::Unassigned(Candidates::Set(ref mut rc2))) [INFO] [stderr] 830 | | = get_two_mut(&mut self.vars, search, replace) { [INFO] [stderr] ... | [INFO] [stderr] 835 | | } [INFO] [stderr] 836 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 827 | } else if let (&mut VarState::Unassigned(Candidates::Set(ref mut rc1)), [INFO] [stderr] 828 | &mut VarState::Unassigned(Candidates::Set(ref mut rc2))) [INFO] [stderr] 829 | = get_two_mut(&mut self.vars, search, replace) { [INFO] [stderr] 830 | *rc2 = Rc::new(rc2.intersection(rc1).cloned().collect()); [INFO] [stderr] 831 | if rc2.is_empty() { [INFO] [stderr] 832 | return Err(()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/puzzle.rs:898:21 [INFO] [stderr] | [INFO] [stderr] 898 | let (mut l, mut r) = slice.split_at_mut(b); [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/puzzle.rs:898:14 [INFO] [stderr] | [INFO] [stderr] 898 | let (mut l, mut r) = slice.split_at_mut(b); [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/alldifferent.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | num_unassigned = num_unassigned + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_unassigned += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/constraint/alldifferent.rs:55:17 [INFO] [stderr] | [INFO] [stderr] 55 | / if all_candidates.contains_key(&val) { [INFO] [stderr] 56 | | all_candidates.insert(val, None); [INFO] [stderr] 57 | | } else { [INFO] [stderr] 58 | | all_candidates.insert(val, Some(var)); [INFO] [stderr] 59 | | } [INFO] [stderr] | |_________________^ help: consider using: `all_candidates.entry(val)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:46:17 [INFO] [stderr] | [INFO] [stderr] 46 | sum = sum + coef * Ratio::from_integer(val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum += coef * Ratio::from_integer(val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | sum_min = sum_min + coef * Ratio::from_integer(min_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_min += coef * Ratio::from_integer(min_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:84:17 [INFO] [stderr] | [INFO] [stderr] 84 | sum_max = sum_max + coef * Ratio::from_integer(max_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_max += coef * Ratio::from_integer(max_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:86:17 [INFO] [stderr] | [INFO] [stderr] 86 | sum_min = sum_min + coef * Ratio::from_integer(max_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_min += coef * Ratio::from_integer(max_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | sum_max = sum_max + coef * Ratio::from_integer(min_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_max += coef * Ratio::from_integer(min_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | iters = iters - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `iters -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:123:21 [INFO] [stderr] | [INFO] [stderr] 123 | sum_min = sum_min + coef * Ratio::from_integer(new_min - min_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_min += coef * Ratio::from_integer(new_min - min_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:124:21 [INFO] [stderr] | [INFO] [stderr] 124 | sum_max = sum_max + coef * Ratio::from_integer(new_max - max_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_max += coef * Ratio::from_integer(new_max - max_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:126:21 [INFO] [stderr] | [INFO] [stderr] 126 | sum_min = sum_min + coef * Ratio::from_integer(new_max - max_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_min += coef * Ratio::from_integer(new_max - max_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:127:21 [INFO] [stderr] | [INFO] [stderr] 127 | sum_max = sum_max + coef * Ratio::from_integer(new_min - min_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_max += coef * Ratio::from_integer(new_min - min_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/linexpr.rs:134:9 [INFO] [stderr] | [INFO] [stderr] 134 | self.constant = self.constant + rhs.into_coef(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.constant += rhs.into_coef()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/linexpr.rs:156:17 [INFO] [stderr] | [INFO] [stderr] 156 | self.constant = self.constant * rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.constant *= rhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/linexpr.rs:158:21 [INFO] [stderr] | [INFO] [stderr] 158 | *coef = *coef * rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `*coef *= rhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/linexpr.rs:193:9 [INFO] [stderr] | [INFO] [stderr] 193 | self.constant = self.constant + rhs.constant; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.constant += rhs.constant` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | / match self { [INFO] [stderr] 74 | | &Candidates::None => 0, [INFO] [stderr] 75 | | &Candidates::Value(_) => 1, [INFO] [stderr] 76 | | &Candidates::Set(ref rc) => rc.len(), [INFO] [stderr] 77 | | } [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] 73 | match *self { [INFO] [stderr] 74 | Candidates::None => 0, [INFO] [stderr] 75 | Candidates::Value(_) => 1, [INFO] [stderr] 76 | Candidates::Set(ref rc) => rc.len(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | / match self { [INFO] [stderr] 83 | | &Candidates::None => Box::new(iter::empty()), [INFO] [stderr] 84 | | &Candidates::Value(val) => Box::new(iter::once(val)), [INFO] [stderr] 85 | | &Candidates::Set(ref rc) => Box::new(rc.iter().cloned()), [INFO] [stderr] 86 | | } [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] 82 | match *self { [INFO] [stderr] 83 | Candidates::None => Box::new(iter::empty()), [INFO] [stderr] 84 | Candidates::Value(val) => Box::new(iter::once(val)), [INFO] [stderr] 85 | Candidates::Set(ref rc) => Box::new(rc.iter().cloned()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `puzzle::Puzzle` [INFO] [stderr] --> src/puzzle.rs:100:5 [INFO] [stderr] | [INFO] [stderr] 100 | / pub fn new() -> Self { [INFO] [stderr] 101 | | Puzzle { [INFO] [stderr] 102 | | num_vars: 0, [INFO] [stderr] 103 | | num_guesses: Cell::new(0), [INFO] [stderr] ... | [INFO] [stderr] 106 | | } [INFO] [stderr] 107 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 32 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/puzzle.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | self.num_vars = self.num_vars + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.num_vars += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:218:9 [INFO] [stderr] | [INFO] [stderr] 218 | / match &self.candidates[idx] { [INFO] [stderr] 219 | | &Candidates::Value(_) => [INFO] [stderr] 220 | | panic!("attempt to set fixed variable"), [INFO] [stderr] 221 | | [INFO] [stderr] ... | [INFO] [stderr] 226 | | &Candidates::Set(_) => (), [INFO] [stderr] 227 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 218 | match self.candidates[idx] { [INFO] [stderr] 219 | Candidates::Value(_) => [INFO] [stderr] 220 | panic!("attempt to set fixed variable"), [INFO] [stderr] 221 | [INFO] [stderr] 222 | Candidates::None => { [INFO] [stderr] 223 | self.candidates[idx] = Candidates::Set(Rc::new(BTreeSet::new())); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/constraint/equality.rs:67:16 [INFO] [stderr] | [INFO] [stderr] 67 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 68 | | if !sum.is_zero() { [INFO] [stderr] 69 | | return Err(()); [INFO] [stderr] 70 | | } [INFO] [stderr] 71 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 67 | } else if !sum.is_zero() { [INFO] [stderr] 68 | return Err(()); [INFO] [stderr] 69 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/puzzle.rs:482:31 [INFO] [stderr] | [INFO] [stderr] 482 | fn init_wake(constraints: &Vec>, num_vars: usize) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `cidx` is used to index `constraints` [INFO] [stderr] --> src/puzzle.rs:485:21 [INFO] [stderr] | [INFO] [stderr] 485 | for cidx in 0..constraints.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 485 | for (cidx, ) in constraints.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:520:9 [INFO] [stderr] | [INFO] [stderr] 520 | / match &self.vars[idx] { [INFO] [stderr] 521 | | &VarState::Assigned(_) => true, [INFO] [stderr] 522 | | &VarState::Unassigned(_) => false, [INFO] [stderr] 523 | | &VarState::Unified(other) => self.is_assigned(other), [INFO] [stderr] 524 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 520 | match self.vars[idx] { [INFO] [stderr] 521 | VarState::Assigned(_) => true, [INFO] [stderr] 522 | VarState::Unassigned(_) => false, [INFO] [stderr] 523 | VarState::Unified(other) => self.is_assigned(other), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:533:9 [INFO] [stderr] | [INFO] [stderr] 533 | / match &self.vars[idx] { [INFO] [stderr] 534 | | &VarState::Assigned(val) => Some(val), [INFO] [stderr] 535 | | &VarState::Unassigned(_) => None, [INFO] [stderr] 536 | | &VarState::Unified(other) => self.get_assigned(other), [INFO] [stderr] 537 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 533 | match self.vars[idx] { [INFO] [stderr] 534 | VarState::Assigned(val) => Some(val), [INFO] [stderr] 535 | VarState::Unassigned(_) => None, [INFO] [stderr] 536 | VarState::Unified(other) => self.get_assigned(other), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:544:9 [INFO] [stderr] | [INFO] [stderr] 544 | / match &self.vars[idx] { [INFO] [stderr] 545 | | &VarState::Assigned(_) => Box::new(iter::empty()), [INFO] [stderr] 546 | | &VarState::Unassigned(ref cs) => cs.iter(), [INFO] [stderr] 547 | | &VarState::Unified(other) => self.get_unassigned(other), [INFO] [stderr] 548 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 544 | match self.vars[idx] { [INFO] [stderr] 545 | VarState::Assigned(_) => Box::new(iter::empty()), [INFO] [stderr] 546 | VarState::Unassigned(ref cs) => cs.iter(), [INFO] [stderr] 547 | VarState::Unified(other) => self.get_unassigned(other), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:554:9 [INFO] [stderr] | [INFO] [stderr] 554 | / match &self.vars[idx] { [INFO] [stderr] 555 | | &VarState::Assigned(val) => Ok((val, val)), [INFO] [stderr] 556 | | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] 557 | | &Candidates::None => Err(()), [INFO] [stderr] ... | [INFO] [stderr] 565 | | &VarState::Unified(other) => self.get_min_max(other), [INFO] [stderr] 566 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 554 | match self.vars[idx] { [INFO] [stderr] 555 | VarState::Assigned(val) => Ok((val, val)), [INFO] [stderr] 556 | VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] 557 | &Candidates::None => Err(()), [INFO] [stderr] 558 | &Candidates::Value(val) => Ok((val, val)), [INFO] [stderr] 559 | &Candidates::Set(ref rc) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:556:46 [INFO] [stderr] | [INFO] [stderr] 556 | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] | ______________________________________________^ [INFO] [stderr] 557 | | &Candidates::None => Err(()), [INFO] [stderr] 558 | | &Candidates::Value(val) => Ok((val, val)), [INFO] [stderr] 559 | | &Candidates::Set(ref rc) => { [INFO] [stderr] ... | [INFO] [stderr] 563 | | } [INFO] [stderr] 564 | | }, [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] 556 | &VarState::Unassigned(ref cs) => match *cs { [INFO] [stderr] 557 | Candidates::None => Err(()), [INFO] [stderr] 558 | Candidates::Value(val) => Ok((val, val)), [INFO] [stderr] 559 | Candidates::Set(ref rc) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:574:9 [INFO] [stderr] | [INFO] [stderr] 574 | / match &self.vars[idx] { [INFO] [stderr] 575 | | &VarState::Assigned(v) => return bool_to_result(v == val), [INFO] [stderr] 576 | | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] 577 | | &Candidates::None => return Err(()), [INFO] [stderr] ... | [INFO] [stderr] 581 | | &VarState::Unified(_) => (), [INFO] [stderr] 582 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 574 | match self.vars[idx] { [INFO] [stderr] 575 | VarState::Assigned(v) => return bool_to_result(v == val), [INFO] [stderr] 576 | VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] 577 | &Candidates::None => return Err(()), [INFO] [stderr] 578 | &Candidates::Value(v) => return bool_to_result(v == val), [INFO] [stderr] 579 | &Candidates::Set(_) => (), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:576:46 [INFO] [stderr] | [INFO] [stderr] 576 | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] | ______________________________________________^ [INFO] [stderr] 577 | | &Candidates::None => return Err(()), [INFO] [stderr] 578 | | &Candidates::Value(v) => return bool_to_result(v == val), [INFO] [stderr] 579 | | &Candidates::Set(_) => (), [INFO] [stderr] 580 | | }, [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] 576 | &VarState::Unassigned(ref cs) => match *cs { [INFO] [stderr] 577 | Candidates::None => return Err(()), [INFO] [stderr] 578 | Candidates::Value(v) => return bool_to_result(v == val), [INFO] [stderr] 579 | Candidates::Set(_) => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:584:9 [INFO] [stderr] | [INFO] [stderr] 584 | / if let &VarState::Unified(other) = &self.vars[idx] { [INFO] [stderr] 585 | | self.set_candidate(other, val) [INFO] [stderr] 586 | | } else if let &mut VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] 587 | | = &mut self.vars[idx] { [INFO] [stderr] ... | [INFO] [stderr] 598 | | unreachable!(); [INFO] [stderr] 599 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 584 | if let VarState::Unified(other) = self.vars[idx] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:586:16 [INFO] [stderr] | [INFO] [stderr] 586 | } else if let &mut VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] | ________________^ [INFO] [stderr] 587 | | = &mut self.vars[idx] { [INFO] [stderr] 588 | | if rc.contains(&val) { [INFO] [stderr] 589 | | let mut set = Rc::make_mut(rc); [INFO] [stderr] ... | [INFO] [stderr] 598 | | unreachable!(); [INFO] [stderr] 599 | | } [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] 586 | } else if let VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] 587 | = *(&mut self.vars[idx]) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:607:9 [INFO] [stderr] | [INFO] [stderr] 607 | / match &self.vars[idx] { [INFO] [stderr] 608 | | &VarState::Assigned(v) => return bool_to_result(v != val), [INFO] [stderr] 609 | | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] 610 | | &Candidates::None => return Err(()), [INFO] [stderr] ... | [INFO] [stderr] 614 | | &VarState::Unified(_) => (), [INFO] [stderr] 615 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 607 | match self.vars[idx] { [INFO] [stderr] 608 | VarState::Assigned(v) => return bool_to_result(v != val), [INFO] [stderr] 609 | VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] 610 | &Candidates::None => return Err(()), [INFO] [stderr] 611 | &Candidates::Value(v) => return bool_to_result(v != val), [INFO] [stderr] 612 | &Candidates::Set(_) => (), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:609:46 [INFO] [stderr] | [INFO] [stderr] 609 | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] | ______________________________________________^ [INFO] [stderr] 610 | | &Candidates::None => return Err(()), [INFO] [stderr] 611 | | &Candidates::Value(v) => return bool_to_result(v != val), [INFO] [stderr] 612 | | &Candidates::Set(_) => (), [INFO] [stderr] 613 | | }, [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] 609 | &VarState::Unassigned(ref cs) => match *cs { [INFO] [stderr] 610 | Candidates::None => return Err(()), [INFO] [stderr] 611 | Candidates::Value(v) => return bool_to_result(v != val), [INFO] [stderr] 612 | Candidates::Set(_) => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:617:9 [INFO] [stderr] | [INFO] [stderr] 617 | / if let &VarState::Unified(other) = &self.vars[idx] { [INFO] [stderr] 618 | | self.remove_candidate(other, val) [INFO] [stderr] 619 | | } else if let &mut VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] 620 | | = &mut self.vars[idx] { [INFO] [stderr] ... | [INFO] [stderr] 628 | | unreachable!(); [INFO] [stderr] 629 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 617 | if let VarState::Unified(other) = self.vars[idx] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:619:16 [INFO] [stderr] | [INFO] [stderr] 619 | } else if let &mut VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] | ________________^ [INFO] [stderr] 620 | | = &mut self.vars[idx] { [INFO] [stderr] 621 | | if rc.contains(&val) { [INFO] [stderr] 622 | | let mut set = Rc::make_mut(rc); [INFO] [stderr] ... | [INFO] [stderr] 628 | | unreachable!(); [INFO] [stderr] 629 | | } [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] 619 | } else if let VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] 620 | = *(&mut self.vars[idx]) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:637:9 [INFO] [stderr] | [INFO] [stderr] 637 | / match &self.vars[idx] { [INFO] [stderr] 638 | | &VarState::Assigned(v) => [INFO] [stderr] 639 | | if min <= v && v <= max { [INFO] [stderr] 640 | | return Ok((v, v)) [INFO] [stderr] ... | [INFO] [stderr] 654 | | &VarState::Unified(_) => (), [INFO] [stderr] 655 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 637 | match self.vars[idx] { [INFO] [stderr] 638 | VarState::Assigned(v) => [INFO] [stderr] 639 | if min <= v && v <= max { [INFO] [stderr] 640 | return Ok((v, v)) [INFO] [stderr] 641 | } else { [INFO] [stderr] 642 | return Err(()) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:644:46 [INFO] [stderr] | [INFO] [stderr] 644 | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] | ______________________________________________^ [INFO] [stderr] 645 | | &Candidates::None => return Err(()), [INFO] [stderr] 646 | | &Candidates::Value(v) => [INFO] [stderr] 647 | | if min <= v && v <= max { [INFO] [stderr] ... | [INFO] [stderr] 652 | | &Candidates::Set(_) => (), [INFO] [stderr] 653 | | }, [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] 644 | &VarState::Unassigned(ref cs) => match *cs { [INFO] [stderr] 645 | Candidates::None => return Err(()), [INFO] [stderr] 646 | Candidates::Value(v) => [INFO] [stderr] 647 | if min <= v && v <= max { [INFO] [stderr] 648 | return Ok((v, v)) [INFO] [stderr] 649 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:657:9 [INFO] [stderr] | [INFO] [stderr] 657 | / if let &VarState::Unified(other) = &self.vars[idx] { [INFO] [stderr] 658 | | self.bound_candidate_range(other, min, max) [INFO] [stderr] 659 | | } else if let &mut VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] 660 | | = &mut self.vars[idx] { [INFO] [stderr] ... | [INFO] [stderr] 680 | | unreachable!(); [INFO] [stderr] 681 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 657 | if let VarState::Unified(other) = self.vars[idx] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:659:16 [INFO] [stderr] | [INFO] [stderr] 659 | } else if let &mut VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] | ________________^ [INFO] [stderr] 660 | | = &mut self.vars[idx] { [INFO] [stderr] 661 | | let &curr_min = rc.iter().min().expect("candidates"); [INFO] [stderr] 662 | | let &curr_max = rc.iter().max().expect("candidates"); [INFO] [stderr] ... | [INFO] [stderr] 680 | | unreachable!(); [INFO] [stderr] 681 | | } [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] 659 | } else if let VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] 660 | = *(&mut self.vars[idx]) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:691:28 [INFO] [stderr] | [INFO] [stderr] 691 | |&(_, vs)| match vs { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 692 | | &VarState::Unassigned(ref cs) => cs.len(), [INFO] [stderr] 693 | | _ => ::std::usize::MAX, [INFO] [stderr] 694 | | }); [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] 691 | |&(_, vs)| match *vs { [INFO] [stderr] 692 | VarState::Unassigned(ref cs) => cs.len(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/puzzle.rs:827:16 [INFO] [stderr] | [INFO] [stderr] 827 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 828 | | if let (&mut VarState::Unassigned(Candidates::Set(ref mut rc1)), [INFO] [stderr] 829 | | &mut VarState::Unassigned(Candidates::Set(ref mut rc2))) [INFO] [stderr] 830 | | = get_two_mut(&mut self.vars, search, replace) { [INFO] [stderr] ... | [INFO] [stderr] 835 | | } [INFO] [stderr] 836 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 827 | } else if let (&mut VarState::Unassigned(Candidates::Set(ref mut rc1)), [INFO] [stderr] 828 | &mut VarState::Unassigned(Candidates::Set(ref mut rc2))) [INFO] [stderr] 829 | = get_two_mut(&mut self.vars, search, replace) { [INFO] [stderr] 830 | *rc2 = Rc::new(rc2.intersection(rc1).cloned().collect()); [INFO] [stderr] 831 | if rc2.is_empty() { [INFO] [stderr] 832 | return Err(()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:753:29 [INFO] [stderr] | [INFO] [stderr] 753 | let gimme = match &self.vars[idx] { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 754 | | &VarState::Assigned(_) => None, [INFO] [stderr] 755 | | &VarState::Unassigned(ref cs) => match cs.len() { [INFO] [stderr] 756 | | 0 => return Err(()), [INFO] [stderr] ... | [INFO] [stderr] 760 | | &VarState::Unified(_) => None, [INFO] [stderr] 761 | | }; [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: try [INFO] [stderr] | [INFO] [stderr] 753 | let gimme = match self.vars[idx] { [INFO] [stderr] 754 | VarState::Assigned(_) => None, [INFO] [stderr] 755 | VarState::Unassigned(ref cs) => match cs.len() { [INFO] [stderr] 756 | 0 => return Err(()), [INFO] [stderr] 757 | 1 => cs.iter().next(), [INFO] [stderr] 758 | _ => None, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:825:9 [INFO] [stderr] | [INFO] [stderr] 825 | / if let &VarState::Assigned(val) = &self.vars[search] { [INFO] [stderr] 826 | | try!(self.set_candidate(to, val)); [INFO] [stderr] 827 | | } else { [INFO] [stderr] 828 | | if let (&mut VarState::Unassigned(Candidates::Set(ref mut rc1)), [INFO] [stderr] ... | [INFO] [stderr] 835 | | } [INFO] [stderr] 836 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 825 | if let VarState::Assigned(val) = self.vars[search] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:848:13 [INFO] [stderr] | [INFO] [stderr] 848 | / match var { [INFO] [stderr] 849 | | &VarState::Assigned(val) => { [INFO] [stderr] 850 | | write!(f, " var {}: {}", idx, val)?; [INFO] [stderr] 851 | | }, [INFO] [stderr] ... | [INFO] [stderr] 860 | | }, [INFO] [stderr] 861 | | } [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] 848 | match *var { [INFO] [stderr] 849 | VarState::Assigned(val) => { [INFO] [stderr] 850 | write!(f, " var {}: {}", idx, val)?; [INFO] [stderr] 851 | }, [INFO] [stderr] 852 | VarState::Unassigned(ref cs) => { [INFO] [stderr] 853 | write!(f, " var {}:", idx)?; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:878:9 [INFO] [stderr] | [INFO] [stderr] 878 | / match &self.vars[idx] { [INFO] [stderr] 879 | | &VarState::Assigned(ref val) => val, [INFO] [stderr] 880 | | &VarState::Unassigned(_) => panic!("unassigned"), [INFO] [stderr] 881 | | &VarState::Unified(other) => &self[other], [INFO] [stderr] 882 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 878 | match self.vars[idx] { [INFO] [stderr] 879 | VarState::Assigned(ref val) => val, [INFO] [stderr] 880 | VarState::Unassigned(_) => panic!("unassigned"), [INFO] [stderr] 881 | VarState::Unified(other) => &self[other], [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/puzzle.rs:894:1 [INFO] [stderr] | [INFO] [stderr] 894 | / fn get_two_mut<'a, T>(slice: &'a mut [T], a: usize, b: usize) [INFO] [stderr] 895 | | -> (&'a mut T, &'a mut T) { [INFO] [stderr] 896 | | assert!(a != b); [INFO] [stderr] 897 | | if a < b { [INFO] [stderr] ... | [INFO] [stderr] 903 | | } [INFO] [stderr] 904 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> tests/xkcd.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> tests/sendmoremoney.rs:13:10 [INFO] [stderr] | [INFO] [stderr] 13 | let (m, o, r, y) = (vars[4], vars[5], vars[6], vars[7]); [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] --> tests/sendmoremoney.rs:13:13 [INFO] [stderr] | [INFO] [stderr] 13 | let (m, o, r, y) = (vars[4], vars[5], vars[6], vars[7]); [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: 7th binding whose name is just one char [INFO] [stderr] --> tests/sendmoremoney.rs:13:16 [INFO] [stderr] | [INFO] [stderr] 13 | let (m, o, r, y) = (vars[4], vars[5], vars[6], vars[7]); [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: 8th binding whose name is just one char [INFO] [stderr] --> tests/sendmoremoney.rs:13:19 [INFO] [stderr] | [INFO] [stderr] 13 | let (m, o, r, y) = (vars[4], vars[5], vars[6], vars[7]); [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] --> tests/sendmoremoney.rs:30:10 [INFO] [stderr] | [INFO] [stderr] 30 | let (m, o, r, y) = (vars[4], vars[5], vars[6], vars[7]); [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] --> tests/sendmoremoney.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | let (m, o, r, y) = (vars[4], vars[5], vars[6], vars[7]); [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: 7th binding whose name is just one char [INFO] [stderr] --> tests/sendmoremoney.rs:30:16 [INFO] [stderr] | [INFO] [stderr] 30 | let (m, o, r, y) = (vars[4], vars[5], vars[6], vars[7]); [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: 8th binding whose name is just one char [INFO] [stderr] --> tests/sendmoremoney.rs:30:19 [INFO] [stderr] | [INFO] [stderr] 30 | let (m, o, r, y) = (vars[4], vars[5], vars[6], vars[7]); [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] --> tests/sendmoremoney.rs:40:10 [INFO] [stderr] | [INFO] [stderr] 40 | let (m, o, r, y) = (vars[4], vars[5], vars[6], vars[7]); [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] --> tests/sendmoremoney.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | let (m, o, r, y) = (vars[4], vars[5], vars[6], vars[7]); [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: 7th binding whose name is just one char [INFO] [stderr] --> tests/sendmoremoney.rs:40:16 [INFO] [stderr] | [INFO] [stderr] 40 | let (m, o, r, y) = (vars[4], vars[5], vars[6], vars[7]); [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: 8th binding whose name is just one char [INFO] [stderr] --> tests/sendmoremoney.rs:40:19 [INFO] [stderr] | [INFO] [stderr] 40 | let (m, o, r, y) = (vars[4], vars[5], vars[6], vars[7]); [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: variable does not need to be mutable [INFO] [stderr] --> src/puzzle.rs:898:21 [INFO] [stderr] | [INFO] [stderr] 898 | let (mut l, mut r) = slice.split_at_mut(b); [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/puzzle.rs:898:14 [INFO] [stderr] | [INFO] [stderr] 898 | let (mut l, mut r) = slice.split_at_mut(b); [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/alldifferent.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | num_unassigned = num_unassigned + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_unassigned += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/constraint/alldifferent.rs:55:17 [INFO] [stderr] | [INFO] [stderr] 55 | / if all_candidates.contains_key(&val) { [INFO] [stderr] 56 | | all_candidates.insert(val, None); [INFO] [stderr] 57 | | } else { [INFO] [stderr] 58 | | all_candidates.insert(val, Some(var)); [INFO] [stderr] 59 | | } [INFO] [stderr] | |_________________^ help: consider using: `all_candidates.entry(val)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:46:17 [INFO] [stderr] | [INFO] [stderr] 46 | sum = sum + coef * Ratio::from_integer(val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum += coef * Ratio::from_integer(val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | sum_min = sum_min + coef * Ratio::from_integer(min_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_min += coef * Ratio::from_integer(min_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:84:17 [INFO] [stderr] | [INFO] [stderr] 84 | sum_max = sum_max + coef * Ratio::from_integer(max_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_max += coef * Ratio::from_integer(max_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:86:17 [INFO] [stderr] | [INFO] [stderr] 86 | sum_min = sum_min + coef * Ratio::from_integer(max_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_min += coef * Ratio::from_integer(max_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | sum_max = sum_max + coef * Ratio::from_integer(min_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_max += coef * Ratio::from_integer(min_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | iters = iters - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `iters -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:123:21 [INFO] [stderr] | [INFO] [stderr] 123 | sum_min = sum_min + coef * Ratio::from_integer(new_min - min_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_min += coef * Ratio::from_integer(new_min - min_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:124:21 [INFO] [stderr] | [INFO] [stderr] 124 | sum_max = sum_max + coef * Ratio::from_integer(new_max - max_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_max += coef * Ratio::from_integer(new_max - max_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:126:21 [INFO] [stderr] | [INFO] [stderr] 126 | sum_min = sum_min + coef * Ratio::from_integer(new_max - max_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_min += coef * Ratio::from_integer(new_max - max_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/constraint/equality.rs:127:21 [INFO] [stderr] | [INFO] [stderr] 127 | sum_max = sum_max + coef * Ratio::from_integer(new_min - min_val); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sum_max += coef * Ratio::from_integer(new_min - min_val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/linexpr.rs:134:9 [INFO] [stderr] | [INFO] [stderr] 134 | self.constant = self.constant + rhs.into_coef(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.constant += rhs.into_coef()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/linexpr.rs:156:17 [INFO] [stderr] | [INFO] [stderr] 156 | self.constant = self.constant * rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.constant *= rhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/linexpr.rs:158:21 [INFO] [stderr] | [INFO] [stderr] 158 | *coef = *coef * rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `*coef *= rhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/linexpr.rs:193:9 [INFO] [stderr] | [INFO] [stderr] 193 | self.constant = self.constant + rhs.constant; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.constant += rhs.constant` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `x` [INFO] [stderr] --> src/linexpr.rs:233:17 [INFO] [stderr] | [INFO] [stderr] 233 | let _ = x * 1; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `x` [INFO] [stderr] --> src/linexpr.rs:241:17 [INFO] [stderr] | [INFO] [stderr] 241 | let _ = 1 * x; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `(x + y)` [INFO] [stderr] --> src/linexpr.rs:254:17 [INFO] [stderr] | [INFO] [stderr] 254 | let _ = (x + y) * 1; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `(x + y)` [INFO] [stderr] --> src/linexpr.rs:262:17 [INFO] [stderr] | [INFO] [stderr] 262 | let _ = 1 * (x + y); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `-` [INFO] [stderr] --> src/linexpr.rs:278:17 [INFO] [stderr] | [INFO] [stderr] 278 | let _ = (x + y) - (x + y); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/linexpr.rs:287:20 [INFO] [stderr] | [INFO] [stderr] 287 | let expr = x * 0; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::erasing_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `-` [INFO] [stderr] --> src/linexpr.rs:290:20 [INFO] [stderr] | [INFO] [stderr] 290 | let expr = x - x; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/linexpr.rs:293:20 [INFO] [stderr] | [INFO] [stderr] 293 | let expr = (x + y) * 0; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `-` [INFO] [stderr] --> src/linexpr.rs:296:20 [INFO] [stderr] | [INFO] [stderr] 296 | let expr = (x + y) - (x + y); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | / match self { [INFO] [stderr] 74 | | &Candidates::None => 0, [INFO] [stderr] 75 | | &Candidates::Value(_) => 1, [INFO] [stderr] 76 | | &Candidates::Set(ref rc) => rc.len(), [INFO] [stderr] 77 | | } [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] 73 | match *self { [INFO] [stderr] 74 | Candidates::None => 0, [INFO] [stderr] 75 | Candidates::Value(_) => 1, [INFO] [stderr] 76 | Candidates::Set(ref rc) => rc.len(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | / match self { [INFO] [stderr] 83 | | &Candidates::None => Box::new(iter::empty()), [INFO] [stderr] 84 | | &Candidates::Value(val) => Box::new(iter::once(val)), [INFO] [stderr] 85 | | &Candidates::Set(ref rc) => Box::new(rc.iter().cloned()), [INFO] [stderr] 86 | | } [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] 82 | match *self { [INFO] [stderr] 83 | Candidates::None => Box::new(iter::empty()), [INFO] [stderr] 84 | Candidates::Value(val) => Box::new(iter::once(val)), [INFO] [stderr] 85 | Candidates::Set(ref rc) => Box::new(rc.iter().cloned()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `puzzle::Puzzle` [INFO] [stderr] --> src/puzzle.rs:100:5 [INFO] [stderr] | [INFO] [stderr] 100 | / pub fn new() -> Self { [INFO] [stderr] 101 | | Puzzle { [INFO] [stderr] 102 | | num_vars: 0, [INFO] [stderr] 103 | | num_guesses: Cell::new(0), [INFO] [stderr] ... | [INFO] [stderr] 106 | | } [INFO] [stderr] 107 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 32 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/puzzle.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | self.num_vars = self.num_vars + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.num_vars += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:218:9 [INFO] [stderr] | [INFO] [stderr] 218 | / match &self.candidates[idx] { [INFO] [stderr] 219 | | &Candidates::Value(_) => [INFO] [stderr] 220 | | panic!("attempt to set fixed variable"), [INFO] [stderr] 221 | | [INFO] [stderr] ... | [INFO] [stderr] 226 | | &Candidates::Set(_) => (), [INFO] [stderr] 227 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 218 | match self.candidates[idx] { [INFO] [stderr] 219 | Candidates::Value(_) => [INFO] [stderr] 220 | panic!("attempt to set fixed variable"), [INFO] [stderr] 221 | [INFO] [stderr] 222 | Candidates::None => { [INFO] [stderr] 223 | self.candidates[idx] = Candidates::Set(Rc::new(BTreeSet::new())); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/puzzle.rs:482:31 [INFO] [stderr] | [INFO] [stderr] 482 | fn init_wake(constraints: &Vec>, num_vars: usize) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `cidx` is used to index `constraints` [INFO] [stderr] --> src/puzzle.rs:485:21 [INFO] [stderr] | [INFO] [stderr] 485 | for cidx in 0..constraints.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 485 | for (cidx, ) in constraints.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:520:9 [INFO] [stderr] | [INFO] [stderr] 520 | / match &self.vars[idx] { [INFO] [stderr] 521 | | &VarState::Assigned(_) => true, [INFO] [stderr] 522 | | &VarState::Unassigned(_) => false, [INFO] [stderr] 523 | | &VarState::Unified(other) => self.is_assigned(other), [INFO] [stderr] 524 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 520 | match self.vars[idx] { [INFO] [stderr] 521 | VarState::Assigned(_) => true, [INFO] [stderr] 522 | VarState::Unassigned(_) => false, [INFO] [stderr] 523 | VarState::Unified(other) => self.is_assigned(other), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:533:9 [INFO] [stderr] | [INFO] [stderr] 533 | / match &self.vars[idx] { [INFO] [stderr] 534 | | &VarState::Assigned(val) => Some(val), [INFO] [stderr] 535 | | &VarState::Unassigned(_) => None, [INFO] [stderr] 536 | | &VarState::Unified(other) => self.get_assigned(other), [INFO] [stderr] 537 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 533 | match self.vars[idx] { [INFO] [stderr] 534 | VarState::Assigned(val) => Some(val), [INFO] [stderr] 535 | VarState::Unassigned(_) => None, [INFO] [stderr] 536 | VarState::Unified(other) => self.get_assigned(other), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:544:9 [INFO] [stderr] | [INFO] [stderr] 544 | / match &self.vars[idx] { [INFO] [stderr] 545 | | &VarState::Assigned(_) => Box::new(iter::empty()), [INFO] [stderr] 546 | | &VarState::Unassigned(ref cs) => cs.iter(), [INFO] [stderr] 547 | | &VarState::Unified(other) => self.get_unassigned(other), [INFO] [stderr] 548 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 544 | match self.vars[idx] { [INFO] [stderr] 545 | VarState::Assigned(_) => Box::new(iter::empty()), [INFO] [stderr] 546 | VarState::Unassigned(ref cs) => cs.iter(), [INFO] [stderr] 547 | VarState::Unified(other) => self.get_unassigned(other), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:554:9 [INFO] [stderr] | [INFO] [stderr] 554 | / match &self.vars[idx] { [INFO] [stderr] 555 | | &VarState::Assigned(val) => Ok((val, val)), [INFO] [stderr] 556 | | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] 557 | | &Candidates::None => Err(()), [INFO] [stderr] ... | [INFO] [stderr] 565 | | &VarState::Unified(other) => self.get_min_max(other), [INFO] [stderr] 566 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 554 | match self.vars[idx] { [INFO] [stderr] 555 | VarState::Assigned(val) => Ok((val, val)), [INFO] [stderr] 556 | VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] 557 | &Candidates::None => Err(()), [INFO] [stderr] 558 | &Candidates::Value(val) => Ok((val, val)), [INFO] [stderr] 559 | &Candidates::Set(ref rc) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:556:46 [INFO] [stderr] | [INFO] [stderr] 556 | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] | ______________________________________________^ [INFO] [stderr] 557 | | &Candidates::None => Err(()), [INFO] [stderr] 558 | | &Candidates::Value(val) => Ok((val, val)), [INFO] [stderr] 559 | | &Candidates::Set(ref rc) => { [INFO] [stderr] ... | [INFO] [stderr] 563 | | } [INFO] [stderr] 564 | | }, [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] 556 | &VarState::Unassigned(ref cs) => match *cs { [INFO] [stderr] 557 | Candidates::None => Err(()), [INFO] [stderr] 558 | Candidates::Value(val) => Ok((val, val)), [INFO] [stderr] 559 | Candidates::Set(ref rc) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:574:9 [INFO] [stderr] | [INFO] [stderr] 574 | / match &self.vars[idx] { [INFO] [stderr] 575 | | &VarState::Assigned(v) => return bool_to_result(v == val), [INFO] [stderr] 576 | | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] 577 | | &Candidates::None => return Err(()), [INFO] [stderr] ... | [INFO] [stderr] 581 | | &VarState::Unified(_) => (), [INFO] [stderr] 582 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 574 | match self.vars[idx] { [INFO] [stderr] 575 | VarState::Assigned(v) => return bool_to_result(v == val), [INFO] [stderr] 576 | VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] 577 | &Candidates::None => return Err(()), [INFO] [stderr] 578 | &Candidates::Value(v) => return bool_to_result(v == val), [INFO] [stderr] 579 | &Candidates::Set(_) => (), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:576:46 [INFO] [stderr] | [INFO] [stderr] 576 | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] | ______________________________________________^ [INFO] [stderr] 577 | | &Candidates::None => return Err(()), [INFO] [stderr] 578 | | &Candidates::Value(v) => return bool_to_result(v == val), [INFO] [stderr] 579 | | &Candidates::Set(_) => (), [INFO] [stderr] 580 | | }, [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] 576 | &VarState::Unassigned(ref cs) => match *cs { [INFO] [stderr] 577 | Candidates::None => return Err(()), [INFO] [stderr] 578 | Candidates::Value(v) => return bool_to_result(v == val), [INFO] [stderr] 579 | Candidates::Set(_) => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:584:9 [INFO] [stderr] | [INFO] [stderr] 584 | / if let &VarState::Unified(other) = &self.vars[idx] { [INFO] [stderr] 585 | | self.set_candidate(other, val) [INFO] [stderr] 586 | | } else if let &mut VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] 587 | | = &mut self.vars[idx] { [INFO] [stderr] ... | [INFO] [stderr] 598 | | unreachable!(); [INFO] [stderr] 599 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 584 | if let VarState::Unified(other) = self.vars[idx] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:586:16 [INFO] [stderr] | [INFO] [stderr] 586 | } else if let &mut VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] | ________________^ [INFO] [stderr] 587 | | = &mut self.vars[idx] { [INFO] [stderr] 588 | | if rc.contains(&val) { [INFO] [stderr] 589 | | let mut set = Rc::make_mut(rc); [INFO] [stderr] ... | [INFO] [stderr] 598 | | unreachable!(); [INFO] [stderr] 599 | | } [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] 586 | } else if let VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] 587 | = *(&mut self.vars[idx]) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:607:9 [INFO] [stderr] | [INFO] [stderr] 607 | / match &self.vars[idx] { [INFO] [stderr] 608 | | &VarState::Assigned(v) => return bool_to_result(v != val), [INFO] [stderr] 609 | | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] 610 | | &Candidates::None => return Err(()), [INFO] [stderr] ... | [INFO] [stderr] 614 | | &VarState::Unified(_) => (), [INFO] [stderr] 615 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 607 | match self.vars[idx] { [INFO] [stderr] 608 | VarState::Assigned(v) => return bool_to_result(v != val), [INFO] [stderr] 609 | VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] 610 | &Candidates::None => return Err(()), [INFO] [stderr] 611 | &Candidates::Value(v) => return bool_to_result(v != val), [INFO] [stderr] 612 | &Candidates::Set(_) => (), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:609:46 [INFO] [stderr] | [INFO] [stderr] 609 | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] | ______________________________________________^ [INFO] [stderr] 610 | | &Candidates::None => return Err(()), [INFO] [stderr] 611 | | &Candidates::Value(v) => return bool_to_result(v != val), [INFO] [stderr] 612 | | &Candidates::Set(_) => (), [INFO] [stderr] 613 | | }, [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] 609 | &VarState::Unassigned(ref cs) => match *cs { [INFO] [stderr] 610 | Candidates::None => return Err(()), [INFO] [stderr] 611 | Candidates::Value(v) => return bool_to_result(v != val), [INFO] [stderr] 612 | Candidates::Set(_) => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:617:9 [INFO] [stderr] | [INFO] [stderr] 617 | / if let &VarState::Unified(other) = &self.vars[idx] { [INFO] [stderr] 618 | | self.remove_candidate(other, val) [INFO] [stderr] 619 | | } else if let &mut VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] 620 | | = &mut self.vars[idx] { [INFO] [stderr] ... | [INFO] [stderr] 628 | | unreachable!(); [INFO] [stderr] 629 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 617 | if let VarState::Unified(other) = self.vars[idx] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:619:16 [INFO] [stderr] | [INFO] [stderr] 619 | } else if let &mut VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] | ________________^ [INFO] [stderr] 620 | | = &mut self.vars[idx] { [INFO] [stderr] 621 | | if rc.contains(&val) { [INFO] [stderr] 622 | | let mut set = Rc::make_mut(rc); [INFO] [stderr] ... | [INFO] [stderr] 628 | | unreachable!(); [INFO] [stderr] 629 | | } [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] 619 | } else if let VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] 620 | = *(&mut self.vars[idx]) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:637:9 [INFO] [stderr] | [INFO] [stderr] 637 | / match &self.vars[idx] { [INFO] [stderr] 638 | | &VarState::Assigned(v) => [INFO] [stderr] 639 | | if min <= v && v <= max { [INFO] [stderr] 640 | | return Ok((v, v)) [INFO] [stderr] ... | [INFO] [stderr] 654 | | &VarState::Unified(_) => (), [INFO] [stderr] 655 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 637 | match self.vars[idx] { [INFO] [stderr] 638 | VarState::Assigned(v) => [INFO] [stderr] 639 | if min <= v && v <= max { [INFO] [stderr] 640 | return Ok((v, v)) [INFO] [stderr] 641 | } else { [INFO] [stderr] 642 | return Err(()) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:644:46 [INFO] [stderr] | [INFO] [stderr] 644 | &VarState::Unassigned(ref cs) => match cs { [INFO] [stderr] | ______________________________________________^ [INFO] [stderr] 645 | | &Candidates::None => return Err(()), [INFO] [stderr] 646 | | &Candidates::Value(v) => [INFO] [stderr] 647 | | if min <= v && v <= max { [INFO] [stderr] ... | [INFO] [stderr] 652 | | &Candidates::Set(_) => (), [INFO] [stderr] 653 | | }, [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] 644 | &VarState::Unassigned(ref cs) => match *cs { [INFO] [stderr] 645 | Candidates::None => return Err(()), [INFO] [stderr] 646 | Candidates::Value(v) => [INFO] [stderr] 647 | if min <= v && v <= max { [INFO] [stderr] 648 | return Ok((v, v)) [INFO] [stderr] 649 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:657:9 [INFO] [stderr] | [INFO] [stderr] 657 | / if let &VarState::Unified(other) = &self.vars[idx] { [INFO] [stderr] 658 | | self.bound_candidate_range(other, min, max) [INFO] [stderr] 659 | | } else if let &mut VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] 660 | | = &mut self.vars[idx] { [INFO] [stderr] ... | [INFO] [stderr] 680 | | unreachable!(); [INFO] [stderr] 681 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 657 | if let VarState::Unified(other) = self.vars[idx] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:659:16 [INFO] [stderr] | [INFO] [stderr] 659 | } else if let &mut VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] | ________________^ [INFO] [stderr] 660 | | = &mut self.vars[idx] { [INFO] [stderr] 661 | | let &curr_min = rc.iter().min().expect("candidates"); [INFO] [stderr] 662 | | let &curr_max = rc.iter().max().expect("candidates"); [INFO] [stderr] ... | [INFO] [stderr] 680 | | unreachable!(); [INFO] [stderr] 681 | | } [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] 659 | } else if let VarState::Unassigned(Candidates::Set(ref mut rc)) [INFO] [stderr] 660 | = *(&mut self.vars[idx]) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:691:28 [INFO] [stderr] | [INFO] [stderr] 691 | |&(_, vs)| match vs { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 692 | | &VarState::Unassigned(ref cs) => cs.len(), [INFO] [stderr] 693 | | _ => ::std::usize::MAX, [INFO] [stderr] 694 | | }); [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] 691 | |&(_, vs)| match *vs { [INFO] [stderr] 692 | VarState::Unassigned(ref cs) => cs.len(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:753:29 [INFO] [stderr] | [INFO] [stderr] 753 | let gimme = match &self.vars[idx] { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 754 | | &VarState::Assigned(_) => None, [INFO] [stderr] 755 | | &VarState::Unassigned(ref cs) => match cs.len() { [INFO] [stderr] 756 | | 0 => return Err(()), [INFO] [stderr] ... | [INFO] [stderr] 760 | | &VarState::Unified(_) => None, [INFO] [stderr] 761 | | }; [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: try [INFO] [stderr] | [INFO] [stderr] 753 | let gimme = match self.vars[idx] { [INFO] [stderr] 754 | VarState::Assigned(_) => None, [INFO] [stderr] 755 | VarState::Unassigned(ref cs) => match cs.len() { [INFO] [stderr] 756 | 0 => return Err(()), [INFO] [stderr] 757 | 1 => cs.iter().next(), [INFO] [stderr] 758 | _ => None, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:825:9 [INFO] [stderr] | [INFO] [stderr] 825 | / if let &VarState::Assigned(val) = &self.vars[search] { [INFO] [stderr] 826 | | try!(self.set_candidate(to, val)); [INFO] [stderr] 827 | | } else { [INFO] [stderr] 828 | | if let (&mut VarState::Unassigned(Candidates::Set(ref mut rc1)), [INFO] [stderr] ... | [INFO] [stderr] 835 | | } [INFO] [stderr] 836 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 825 | if let VarState::Assigned(val) = self.vars[search] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/puzzle.rs:848:13 [INFO] [stderr] | [INFO] [stderr] 848 | / match var { [INFO] [stderr] 849 | | &VarState::Assigned(val) => { [INFO] [stderr] 850 | | write!(f, " var {}: {}", idx, val)?; [INFO] [stderr] 851 | | }, [INFO] [stderr] ... | [INFO] [stderr] 860 | | }, [INFO] [stderr] 861 | | } [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] 848 | match *var { [INFO] [stderr] 849 | VarState::Assigned(val) => { [INFO] [stderr] 850 | write!(f, " var {}: {}", idx, val)?; [INFO] [stderr] 851 | }, [INFO] [stderr] 852 | VarState::Unassigned(ref cs) => { [INFO] [stderr] 853 | write!(f, " var {}:", idx)?; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/puzzle.rs:878:9 [INFO] [stderr] | [INFO] [stderr] 878 | / match &self.vars[idx] { [INFO] [stderr] 879 | | &VarState::Assigned(ref val) => val, [INFO] [stderr] 880 | | &VarState::Unassigned(_) => panic!("unassigned"), [INFO] [stderr] 881 | | &VarState::Unified(other) => &self[other], [INFO] [stderr] 882 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 878 | match self.vars[idx] { [INFO] [stderr] 879 | VarState::Assigned(ref val) => val, [INFO] [stderr] 880 | VarState::Unassigned(_) => panic!("unassigned"), [INFO] [stderr] 881 | VarState::Unified(other) => &self[other], [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/puzzle.rs:894:1 [INFO] [stderr] | [INFO] [stderr] 894 | / fn get_two_mut<'a, T>(slice: &'a mut [T], a: usize, b: usize) [INFO] [stderr] 895 | | -> (&'a mut T, &'a mut T) { [INFO] [stderr] 896 | | assert!(a != b); [INFO] [stderr] 897 | | if a < b { [INFO] [stderr] ... | [INFO] [stderr] 903 | | } [INFO] [stderr] 904 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `puzzle-solver`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/queens.rs:50:40 [INFO] [stderr] | [INFO] [stderr] 50 | fn print_queens(dict: &Solution, vars: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[VarToken]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> tests/xkcd.rs:31:48 [INFO] [stderr] | [INFO] [stderr] 31 | let var = sys.new_var_with_candidates(&(0..(num + 1)).collect::>()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `(0..=num)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/sendmoremoney.rs:28:49 [INFO] [stderr] | [INFO] [stderr] 28 | fn print_send_more_money(dict: &Solution, vars: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[VarToken]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/sendmoremoney.rs:38:50 [INFO] [stderr] | [INFO] [stderr] 38 | fn verify_send_more_money(dict: &Solution, vars: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[VarToken]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `y` is used to index `board` [INFO] [stderr] --> tests/hidato.rs:19:14 [INFO] [stderr] | [INFO] [stderr] 19 | for y in 0..HEIGHT { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 19 | for (y, ) in board.iter().enumerate().take(HEIGHT) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> tests/hidato.rs:23:17 [INFO] [stderr] | [INFO] [stderr] 23 | count = count + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `count += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `y` is used to index `board` [INFO] [stderr] --> tests/hidato.rs:30:14 [INFO] [stderr] | [INFO] [stderr] 30 | for y in 0..HEIGHT { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 30 | for (y, ) in board.iter().enumerate().take(HEIGHT) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/hidato.rs:55:40 [INFO] [stderr] | [INFO] [stderr] 55 | fn print_hidato(dict: &Solution, vars: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[VarToken]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `y` is only used to index `board`. [INFO] [stderr] --> tests/hidato.rs:64:14 [INFO] [stderr] | [INFO] [stderr] 64 | for y in 0..HEIGHT { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 64 | for in board.iter().take(HEIGHT) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/hidato.rs:76:41 [INFO] [stderr] | [INFO] [stderr] 76 | fn verify_hidato(dict: &Solution, vars: &Vec, expected: &Board) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[VarToken]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `y` is only used to index `vars`. [INFO] [stderr] --> tests/magicsquare.rs:21:14 [INFO] [stderr] | [INFO] [stderr] 21 | for y in 0..n { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 21 | for in vars.iter().take(n) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/magicsquare.rs:40:46 [INFO] [stderr] | [INFO] [stderr] 40 | fn print_magic_square(dict: &Solution, vars: &Vec>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> tests/sujiko.rs:25:36 [INFO] [stderr] | [INFO] [stderr] 25 | sys.equals(tl + tr + bl + br - (1..(9 + 1)).sum::(), [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `(1..=9)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/sujiko.rs:40:40 [INFO] [stderr] | [INFO] [stderr] 40 | fn print_sujiko(dict: &Solution, vars: &Vec>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/sujiko.rs:49:41 [INFO] [stderr] | [INFO] [stderr] 49 | fn verify_sujiko(dict: &Solution, vars: &Vec>, expected: &Board) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "1b146b66654edf5f1266bd22106d92b2a727c6245a6719c283fa499d671b3522"` [INFO] running `"docker" "rm" "-f" "1b146b66654edf5f1266bd22106d92b2a727c6245a6719c283fa499d671b3522"` [INFO] [stdout] 1b146b66654edf5f1266bd22106d92b2a727c6245a6719c283fa499d671b3522