[INFO] crate ai_kit 0.1.0 is already in cache [INFO] extracting crate ai_kit 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/ai_kit/0.1.0 [INFO] extracting crate ai_kit 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/ai_kit/0.1.0 [INFO] validating manifest of ai_kit-0.1.0 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 ai_kit-0.1.0 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 ai_kit-0.1.0 [INFO] finished frobbing ai_kit-0.1.0 [INFO] frobbed toml for ai_kit-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/ai_kit/0.1.0/Cargo.toml [INFO] started frobbing ai_kit-0.1.0 [INFO] finished frobbing ai_kit-0.1.0 [INFO] frobbed toml for ai_kit-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/ai_kit/0.1.0/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 ai_kit-0.1.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/ai_kit/0.1.0:/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] f443f1543ddab177496ecd49e685b3c43b72cfd30e901d8fc497b8b03ec17c6e [INFO] running `"docker" "start" "-a" "f443f1543ddab177496ecd49e685b3c43b72cfd30e901d8fc497b8b03ec17c6e"` [INFO] [stderr] Compiling pulldown-cmark v0.0.15 [INFO] [stderr] Checking skeptic v0.11.0 [INFO] [stderr] Compiling ai_kit v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/infer/mod.rs:117:13 [INFO] [stderr] | [INFO] [stderr] 117 | rules: rules, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `rules` [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/infer/mod.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | facts: facts, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `facts` [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/infer/mod.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | prefix: prefix, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `prefix` [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/pedigree/mod.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [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/planner/mod.rs:173:13 [INFO] [stderr] | [INFO] [stderr] 173 | bindings_at_creation: bindings_at_creation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `bindings_at_creation` [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/planner/mod.rs:174:13 [INFO] [stderr] | [INFO] [stderr] 174 | constraints: constraints, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `constraints` [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/planner/mod.rs:175:13 [INFO] [stderr] | [INFO] [stderr] 175 | pattern: pattern, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `pattern` [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/planner/mod.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | parental_constraints: parental_constraints, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parental_constraints` [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/planner/mod.rs:177:13 [INFO] [stderr] | [INFO] [stderr] 177 | subgoals: subgoals, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `subgoals` [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/planner/mod.rs:178:13 [INFO] [stderr] | [INFO] [stderr] 178 | unification_index: unification_index, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `unification_index` [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/planner/mod.rs:547:54 [INFO] [stderr] | [INFO] [stderr] 547 | return Err(InvalidPlan::ReusedData { idx: idx }); [INFO] [stderr] | ^^^^^^^^ help: replace it with: `idx` [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/planner/mod.rs:583:13 [INFO] [stderr] | [INFO] [stderr] 583 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/planner/mod.rs:586:13 [INFO] [stderr] | [INFO] [stderr] 586 | rules: rules, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `rules` [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/planner/mod.rs:642:13 [INFO] [stderr] | [INFO] [stderr] 642 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/planner/mod.rs:643:13 [INFO] [stderr] | [INFO] [stderr] 643 | goals: goals, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `goals` [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/planner/mod.rs:645:13 [INFO] [stderr] | [INFO] [stderr] 645 | rules: rules, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `rules` [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/rule/mod.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | constraints: constraints, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `constraints` [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/rule/mod.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | lhs: lhs, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `lhs` [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/rule/mod.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | rhs: rhs, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rhs` [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/infer/mod.rs:117:13 [INFO] [stderr] | [INFO] [stderr] 117 | rules: rules, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `rules` [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/infer/mod.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | facts: facts, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `facts` [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/infer/mod.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | prefix: prefix, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `prefix` [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/pedigree/mod.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [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/planner/mod.rs:173:13 [INFO] [stderr] | [INFO] [stderr] 173 | bindings_at_creation: bindings_at_creation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `bindings_at_creation` [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/planner/mod.rs:174:13 [INFO] [stderr] | [INFO] [stderr] 174 | constraints: constraints, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `constraints` [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/planner/mod.rs:175:13 [INFO] [stderr] | [INFO] [stderr] 175 | pattern: pattern, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `pattern` [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/planner/mod.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | parental_constraints: parental_constraints, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parental_constraints` [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/planner/mod.rs:177:13 [INFO] [stderr] | [INFO] [stderr] 177 | subgoals: subgoals, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `subgoals` [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/planner/mod.rs:178:13 [INFO] [stderr] | [INFO] [stderr] 178 | unification_index: unification_index, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `unification_index` [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/planner/mod.rs:547:54 [INFO] [stderr] | [INFO] [stderr] 547 | return Err(InvalidPlan::ReusedData { idx: idx }); [INFO] [stderr] | ^^^^^^^^ help: replace it with: `idx` [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/planner/mod.rs:583:13 [INFO] [stderr] | [INFO] [stderr] 583 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/planner/mod.rs:586:13 [INFO] [stderr] | [INFO] [stderr] 586 | rules: rules, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `rules` [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/planner/mod.rs:642:13 [INFO] [stderr] | [INFO] [stderr] 642 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/planner/mod.rs:643:13 [INFO] [stderr] | [INFO] [stderr] 643 | goals: goals, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `goals` [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/planner/mod.rs:645:13 [INFO] [stderr] | [INFO] [stderr] 645 | rules: rules, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `rules` [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/rule/mod.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | constraints: constraints, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `constraints` [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/rule/mod.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | lhs: lhs, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `lhs` [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/rule/mod.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | rhs: rhs, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rhs` [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/datum/mod.rs:47:45 [INFO] [stderr] | [INFO] [stderr] 47 | Datum::Int(ref i_value) => Some((i_value.clone() as f64)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/datum/mod.rs:47:45 [INFO] [stderr] | [INFO] [stderr] 47 | Datum::Int(ref i_value) => Some((i_value.clone() as f64)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/infer/mod.rs:312:5 [INFO] [stderr] | [INFO] [stderr] 312 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/pedigree/mod.rs:83:115 [INFO] [stderr] | [INFO] [stderr] 83 | Some((construct_id_origin_tuples_for_generation(generation), self.inf_graph.subsequent_inferences((generation_idx + 1)))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/pedigree/mod.rs:83:115 [INFO] [stderr] | [INFO] [stderr] 83 | Some((construct_id_origin_tuples_for_generation(generation), self.inf_graph.subsequent_inferences((generation_idx + 1)))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: doc comment not used by rustdoc [INFO] [stderr] --> src/pedigree/mod.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | /// Return unify derived from this one [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_doc_comments)] on by default [INFO] [stderr] [INFO] [stderr] warning: doc comment not used by rustdoc [INFO] [stderr] --> src/pedigree/mod.rs:141:9 [INFO] [stderr] | [INFO] [stderr] 141 | /// Return all unify derived in and after the specified generation [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/pedigree/mod.rs:212:16 [INFO] [stderr] | [INFO] [stderr] 212 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 213 | | if let Some(generation) = entries_by_generation.get_mut(generation_idx) { [INFO] [stderr] 214 | | generation.extend(new_entries); [INFO] [stderr] 215 | | } [INFO] [stderr] 216 | | } [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] 212 | } else if let Some(generation) = entries_by_generation.get_mut(generation_idx) { [INFO] [stderr] 213 | generation.extend(new_entries); [INFO] [stderr] 214 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/planner/mod.rs:477:21 [INFO] [stderr] | [INFO] [stderr] 477 | return Some(datum_idx.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(datum_idx.clone())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/planner/mod.rs:480:21 [INFO] [stderr] | [INFO] [stderr] 480 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/utils.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | return Some(results); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(results)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/datum/mod.rs:47:45 [INFO] [stderr] | [INFO] [stderr] 47 | Datum::Int(ref i_value) => Some((i_value.clone() as f64)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/datum/mod.rs:47:45 [INFO] [stderr] | [INFO] [stderr] 47 | Datum::Int(ref i_value) => Some((i_value.clone() as f64)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/datum/tests.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/datum/tests.rs:121:47 [INFO] [stderr] | [INFO] [stderr] 121 | {"vec": [{"str": "time"}, {"int": 608356800}]}, [INFO] [stderr] | ^^^^^^^^^ help: consider: `608_356_800` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/datum/tests.rs:134:52 [INFO] [stderr] | [INFO] [stderr] 134 | .set_binding(&"?t".to_string(), Datum::Int(608356800)) [INFO] [stderr] | ^^^^^^^^^ help: consider: `608_356_800` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/infer/mod.rs:312:5 [INFO] [stderr] | [INFO] [stderr] 312 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/pedigree/mod.rs:83:115 [INFO] [stderr] | [INFO] [stderr] 83 | Some((construct_id_origin_tuples_for_generation(generation), self.inf_graph.subsequent_inferences((generation_idx + 1)))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/pedigree/mod.rs:83:115 [INFO] [stderr] | [INFO] [stderr] 83 | Some((construct_id_origin_tuples_for_generation(generation), self.inf_graph.subsequent_inferences((generation_idx + 1)))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: doc comment not used by rustdoc [INFO] [stderr] --> src/pedigree/mod.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | /// Return unify derived from this one [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_doc_comments)] on by default [INFO] [stderr] [INFO] [stderr] warning: doc comment not used by rustdoc [INFO] [stderr] --> src/pedigree/mod.rs:141:9 [INFO] [stderr] | [INFO] [stderr] 141 | /// Return all unify derived in and after the specified generation [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/pedigree/mod.rs:212:16 [INFO] [stderr] | [INFO] [stderr] 212 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 213 | | if let Some(generation) = entries_by_generation.get_mut(generation_idx) { [INFO] [stderr] 214 | | generation.extend(new_entries); [INFO] [stderr] 215 | | } [INFO] [stderr] 216 | | } [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] 212 | } else if let Some(generation) = entries_by_generation.get_mut(generation_idx) { [INFO] [stderr] 213 | generation.extend(new_entries); [INFO] [stderr] 214 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/planner/mod.rs:477:21 [INFO] [stderr] | [INFO] [stderr] 477 | return Some(datum_idx.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(datum_idx.clone())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/planner/mod.rs:480:21 [INFO] [stderr] | [INFO] [stderr] 480 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/utils.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | return Some(results); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(results)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/pedigree/mod.rs:286:13 [INFO] [stderr] | [INFO] [stderr] 286 | let mut inner_descendents = self.descendents.get_mut(&source_id).unwrap(); [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/constraints/numerical.rs:139:49 [INFO] [stderr] | [INFO] [stderr] 139 | None => (variable, T::float(constant.clone())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try dereferencing it: `*constant` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/constraints/numerical.rs:198:31 [INFO] [stderr] | [INFO] [stderr] 198 | constant: constant.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try dereferencing it: `*constant` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/constraints/mod.rs:138:48 [INFO] [stderr] | [INFO] [stderr] 138 | remaining_constraints.push(constraint.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 138 | remaining_constraints.push(&(*constraint).clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 138 | remaining_constraints.push(&constraints::Constraint::clone(constraint)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:16:21 [INFO] [stderr] | [INFO] [stderr] 16 | fn variable(_s: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: item `core::Bindings` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/core/mod.rs:50:1 [INFO] [stderr] | [INFO] [stderr] 50 | / impl Bindings { [INFO] [stderr] 51 | | pub fn new() -> Bindings { [INFO] [stderr] 52 | | Bindings::default() [INFO] [stderr] 53 | | } [INFO] [stderr] ... | [INFO] [stderr] 144 | | } [INFO] [stderr] 145 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:59:41 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn has_binding(&self, variable: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:63:41 [INFO] [stderr] | [INFO] [stderr] 63 | pub fn set_binding(&self, variable: &String, val: T) -> Bindings { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:71:45 [INFO] [stderr] | [INFO] [stderr] 71 | fn set_binding_mut(&mut self, variable: &String, val: T) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/core/mod.rs:77:40 [INFO] [stderr] | [INFO] [stderr] 77 | for equivalent_variable in self.equivalences.get(variable).unwrap().iter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.equivalences[variable]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:83:45 [INFO] [stderr] | [INFO] [stderr] 83 | fn add_equivalence(&mut self, variable: &String, variable2: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:83:65 [INFO] [stderr] | [INFO] [stderr] 83 | fn add_equivalence(&mut self, variable: &String, variable2: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:88:59 [INFO] [stderr] | [INFO] [stderr] 88 | fn ensure_equivalence_exists_mut(&mut self, variable: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:95:52 [INFO] [stderr] | [INFO] [stderr] 95 | fn merge_equivalences_mut(&mut self, variable: &String, variable2: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:95:72 [INFO] [stderr] | [INFO] [stderr] 95 | fn merge_equivalences_mut(&mut self, variable: &String, variable2: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:103:41 [INFO] [stderr] | [INFO] [stderr] 103 | pub fn get_binding(&self, variable: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:110:45 [INFO] [stderr] | [INFO] [stderr] 110 | pub fn update_bindings(&self, variable: &String, value: &T) -> Option { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 110 | pub fn update_bindings(&self, variable: &str, value: &T) -> Option { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `variable.clone()` to [INFO] [stderr] | [INFO] [stderr] 112 | if Some(variable.to_string()) == value.to_variable() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/core/mod.rs:173:17 [INFO] [stderr] | [INFO] [stderr] 173 | let ref val = self.data[&key]; [INFO] [stderr] | ----^^^^^^^------------------- help: try: `let val = &self.data[&key];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/datum/mod.rs:39:43 [INFO] [stderr] | [INFO] [stderr] 39 | Datum::Int(ref value) => Some(value.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/datum/mod.rs:46:47 [INFO] [stderr] | [INFO] [stderr] 46 | Datum::Float(ref f_value) => Some(f_value.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*f_value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/datum/mod.rs:47:46 [INFO] [stderr] | [INFO] [stderr] 47 | Datum::Int(ref i_value) => Some((i_value.clone() as f64)), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*i_value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/datum/mod.rs:64:39 [INFO] [stderr] | [INFO] [stderr] 64 | Datum::Variable(ref v) => format!("{}", v), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `v.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/datum/mod.rs:69:27 [INFO] [stderr] | [INFO] [stderr] 69 | Datum::Nil => format!("nil"), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"nil".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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/datum/mod.rs:152:29 [INFO] [stderr] | [INFO] [stderr] 152 | fn unify_args(args: &Vec, args2: &Vec, bindings: &core::Bindings) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Datum]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/datum/mod.rs:152:49 [INFO] [stderr] | [INFO] [stderr] 152 | fn unify_args(args: &Vec, args2: &Vec, bindings: &core::Bindings) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Datum]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/datum/mod.rs:181:41 [INFO] [stderr] | [INFO] [stderr] 181 | fn apply_bindings_to_args(args: &Vec, bindings: &core::Bindings) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Datum]` [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: you should consider deriving a `Default` implementation for `infer::OriginCache` [INFO] [stderr] --> src/infer/mod.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | / pub fn new() -> Self { [INFO] [stderr] 80 | | OriginCache { items: BTreeSet::new() } [INFO] [stderr] 81 | | } [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] 74 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/infer/mod.rs:172:48 [INFO] [stderr] | [INFO] [stderr] 172 | pub fn render_inference_tree(&'a self, id: &String, render_type: RenderType) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/infer/mod.rs:180:18 [INFO] [stderr] | [INFO] [stderr] 180 | .unwrap_or(format!("{}?", x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| format!("{}?", x))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/infer/mod.rs:206:77 [INFO] [stderr] | [INFO] [stderr] 206 | |(input_goals, bindings): (Vec>, Bindings)| -> Option<(Vec>, Vec, Bindings)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/infer/mod.rs:245:49 [INFO] [stderr] | [INFO] [stderr] 245 | let (negative_inputs, positive_inputs): (Vec>, Vec>) = [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [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/infer/mod.rs:287:39 [INFO] [stderr] | [INFO] [stderr] 287 | fn any_patterns_match(patterns: &Vec<&U>, patterns2: &Vec<&U>) -> bool [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/infer/mod.rs:287:60 [INFO] [stderr] | [INFO] [stderr] 287 | fn any_patterns_match(patterns: &Vec<&U>, patterns2: &Vec<&U>) -> bool [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/infer/mod.rs:295:42 [INFO] [stderr] | [INFO] [stderr] 295 | fn extract_datum_indexes(goals: &Vec>) -> Vec [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Goal]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/infer/mod.rs:303:36 [INFO] [stderr] | [INFO] [stderr] 303 | fn is_new_fact(f: &U, facts: &Vec<(&String, &U)>) -> bool [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(&String, &U)]` [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: you should consider deriving a `Default` implementation for `pedigree::Origin` [INFO] [stderr] --> src/pedigree/mod.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn new() -> Self { [INFO] [stderr] 35 | | Origin { [INFO] [stderr] 36 | | source_id: String::new(), [INFO] [stderr] 37 | | args: Vec::new(), [INFO] [stderr] 38 | | } [INFO] [stderr] 39 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 20 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/pedigree/mod.rs:61:17 [INFO] [stderr] | [INFO] [stderr] 61 | type Item = (Vec<(&'a String, Option<&'a Origin>)>, Vec<&'a BTreeSet>); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/pedigree/mod.rs:63:27 [INFO] [stderr] | [INFO] [stderr] 63 | fn next(&mut self) -> Option<(Vec<(&'a String, Option<&'a Origin>)>, Vec<&'a BTreeSet>)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:131:32 [INFO] [stderr] | [INFO] [stderr] 131 | pub fn ancestor(&self, id: &String) -> Option<&Origin> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:135:48 [INFO] [stderr] | [INFO] [stderr] 135 | pub fn descendent_inferences(&'a self, id: &String) -> Option<&'a BTreeSet> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: you should consider adding a `Default` implementation for `pedigree::InferenceGraphBuilder` [INFO] [stderr] --> src/pedigree/mod.rs:168:5 [INFO] [stderr] | [INFO] [stderr] 168 | / pub fn new() -> Self { [INFO] [stderr] 169 | | InferenceGraphBuilder { [INFO] [stderr] 170 | | pedigree: Pedigree::new(), [INFO] [stderr] 171 | | entries_by_generation: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 175 | | } [INFO] [stderr] 176 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 167 | impl Default for pedigree::InferenceGraphBuilder { [INFO] [stderr] 168 | fn default() -> Self { [INFO] [stderr] 169 | Self::new() [INFO] [stderr] 170 | } [INFO] [stderr] 171 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `pedigree::Pedigree` [INFO] [stderr] --> src/pedigree/mod.rs:266:5 [INFO] [stderr] | [INFO] [stderr] 266 | / pub fn new() -> Self { [INFO] [stderr] 267 | | Pedigree { [INFO] [stderr] 268 | | ancestors: BTreeMap::new(), [INFO] [stderr] 269 | | descendents: BTreeMap::new(), [INFO] [stderr] 270 | | } [INFO] [stderr] 271 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 260 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:290:36 [INFO] [stderr] | [INFO] [stderr] 290 | pub fn get_ancestor(&self, id: &String) -> Option<&Origin> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:294:39 [INFO] [stderr] | [INFO] [stderr] 294 | pub fn get_descendents(&self, id: &String) -> Option<&BTreeSet> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:299:29 [INFO] [stderr] | [INFO] [stderr] 299 | pub fn purge(&self, id: &String) -> Self { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:305:37 [INFO] [stderr] | [INFO] [stderr] 305 | pub fn purge_mut(&mut self, id: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:321:49 [INFO] [stderr] | [INFO] [stderr] 321 | pub fn extract_inference_chain(&self, root: &String) -> InferenceChain { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:332:49 [INFO] [stderr] | [INFO] [stderr] 332 | pub fn extract_inference_graph(&self, root: &String) -> InferenceGraph { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: length comparison to zero [INFO] [stderr] --> src/pedigree/mod.rs:355:12 [INFO] [stderr] | [INFO] [stderr] 355 | if current_generation.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_generation.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/pedigree/mod.rs:369:93 [INFO] [stderr] | [INFO] [stderr] 369 | / origin.ancestors() [INFO] [stderr] 370 | | .iter() [INFO] [stderr] 371 | | .cloned() [INFO] [stderr] 372 | | .collect(), [INFO] [stderr] | |__________________________________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_cloned_collect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:382:40 [INFO] [stderr] | [INFO] [stderr] 382 | d_id: &String, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 382 | d_id: &str, [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `d_id.clone()` to [INFO] [stderr] | [INFO] [stderr] 393 | root_renderer(d_id.to_string()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:398:45 [INFO] [stderr] | [INFO] [stderr] 398 | d_id: &String, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:423:56 [INFO] [stderr] | [INFO] [stderr] 423 | pub fn render_inference_tree_pedigree(&self, d_id: &String, node_renderer: &Fn(String) -> String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | initial_rule_index.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `initial_rule_index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:95:35 [INFO] [stderr] | [INFO] [stderr] 95 | UnificationIndex::Init => initial_datum_index.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `initial_datum_index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:114:53 [INFO] [stderr] | [INFO] [stderr] 114 | pub fn first_goal_to_increment(unification_indices: &Vec) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[UnificationIndex]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:197:37 [INFO] [stderr] | [INFO] [stderr] 197 | pub fn solve(goal: &Self, data: &Vec<&U>, rules: &Vec<&A>, increments: usize, config: &PlanningConfig) -> Option<(usize, Self, Bindings)> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:197:54 [INFO] [stderr] | [INFO] [stderr] 197 | pub fn solve(goal: &Self, data: &Vec<&U>, rules: &Vec<&A>, increments: usize, config: &PlanningConfig) -> Option<(usize, Self, Bindings)> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:209:36 [INFO] [stderr] | [INFO] [stderr] 209 | data: &Vec<&U>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:210:37 [INFO] [stderr] | [INFO] [stderr] 210 | rules: &Vec<&A>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:230:53 [INFO] [stderr] | [INFO] [stderr] 230 | data: &Vec<&U>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:231:54 [INFO] [stderr] | [INFO] [stderr] 231 | rules: &Vec<&A>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:254:34 [INFO] [stderr] | [INFO] [stderr] 254 | pub fn validate(&self, data: &Vec<&U>, rules: &Vec<&A>, bindings: &Bindings, config: &PlanningConfig) -> Result, InvalidPlan> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:254:51 [INFO] [stderr] | [INFO] [stderr] 254 | pub fn validate(&self, data: &Vec<&U>, rules: &Vec<&A>, bindings: &Bindings, config: &PlanningConfig) -> Result, InvalidPlan> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:262:35 [INFO] [stderr] | [INFO] [stderr] 262 | pub fn increment(&self, data: &Vec<&U>, rules: &Vec<&A>, snowflake_prefix_id: usize, max_depth: usize) -> Option { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:262:52 [INFO] [stderr] | [INFO] [stderr] 262 | pub fn increment(&self, data: &Vec<&U>, rules: &Vec<&A>, snowflake_prefix_id: usize, max_depth: usize) -> Option { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:313:36 [INFO] [stderr] | [INFO] [stderr] 313 | pub fn satisified(&self, data: &Vec<&U>, rules: &Vec<&A>, bindings: &Bindings) -> Option> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:313:53 [INFO] [stderr] | [INFO] [stderr] 313 | pub fn satisified(&self, data: &Vec<&U>, rules: &Vec<&A>, bindings: &Bindings) -> Option> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:337:48 [INFO] [stderr] | [INFO] [stderr] 337 | parent_constraints: &Vec<&Constraint>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[&Constraint]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:338:34 [INFO] [stderr] | [INFO] [stderr] 338 | data: &Vec<&U>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:339:35 [INFO] [stderr] | [INFO] [stderr] 339 | rules: &Vec<&A>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:365:40 [INFO] [stderr] | [INFO] [stderr] 365 | data: &Vec<&U>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:366:41 [INFO] [stderr] | [INFO] [stderr] 366 | rules: &Vec<&A>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/planner/mod.rs:370:36 [INFO] [stderr] | [INFO] [stderr] 370 | let mut goals: Vec = goals.into_iter().map(|g| g.clone()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `goals.into_iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:374:61 [INFO] [stderr] | [INFO] [stderr] 374 | let unification_indices = goals.iter().map(|sg| sg.unification_index.clone()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `sg.unification_index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:459:39 [INFO] [stderr] | [INFO] [stderr] 459 | self.unification_index.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.unification_index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:477:33 [INFO] [stderr] | [INFO] [stderr] 477 | return Some(datum_idx.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*datum_idx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:582:21 [INFO] [stderr] | [INFO] [stderr] 582 | config: config.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/planner/mod.rs:599:9 [INFO] [stderr] | [INFO] [stderr] 599 | / for _i in self.total_increments..self.config.max_increments { [INFO] [stderr] 600 | | self.total_increments += 1; [INFO] [stderr] 601 | | [INFO] [stderr] 602 | | if let Some((increments, goal, bindings)) = [INFO] [stderr] ... | [INFO] [stderr] 613 | | } [INFO] [stderr] 614 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:641:21 [INFO] [stderr] | [INFO] [stderr] 641 | config: config.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/planner/mod.rs:657:27 [INFO] [stderr] | [INFO] [stderr] 657 | fn next(&mut self) -> Option<(Vec>, Bindings)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/planner/mod.rs:658:9 [INFO] [stderr] | [INFO] [stderr] 658 | / for _i in self.total_increments..self.config.max_increments { [INFO] [stderr] 659 | | self.total_increments += 1; [INFO] [stderr] 660 | | [INFO] [stderr] 661 | | if let Some((goals, bindings)) = [INFO] [stderr] ... | [INFO] [stderr] 671 | | } [INFO] [stderr] 672 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [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/rule/mod.rs:80:32 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn unify(&self, facts: &Vec<&U>, bindings: &Bindings) -> Option> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ai_kit`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/pedigree/mod.rs:286:13 [INFO] [stderr] | [INFO] [stderr] 286 | let mut inner_descendents = self.descendents.get_mut(&source_id).unwrap(); [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/constraints/numerical.rs:139:49 [INFO] [stderr] | [INFO] [stderr] 139 | None => (variable, T::float(constant.clone())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try dereferencing it: `*constant` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/constraints/numerical.rs:198:31 [INFO] [stderr] | [INFO] [stderr] 198 | constant: constant.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try dereferencing it: `*constant` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/constraints/mod.rs:138:48 [INFO] [stderr] | [INFO] [stderr] 138 | remaining_constraints.push(constraint.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 138 | remaining_constraints.push(&(*constraint).clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 138 | remaining_constraints.push(&constraints::Constraint::clone(constraint)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:16:21 [INFO] [stderr] | [INFO] [stderr] 16 | fn variable(_s: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: item `core::Bindings` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/core/mod.rs:50:1 [INFO] [stderr] | [INFO] [stderr] 50 | / impl Bindings { [INFO] [stderr] 51 | | pub fn new() -> Bindings { [INFO] [stderr] 52 | | Bindings::default() [INFO] [stderr] 53 | | } [INFO] [stderr] ... | [INFO] [stderr] 144 | | } [INFO] [stderr] 145 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:59:41 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn has_binding(&self, variable: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:63:41 [INFO] [stderr] | [INFO] [stderr] 63 | pub fn set_binding(&self, variable: &String, val: T) -> Bindings { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:71:45 [INFO] [stderr] | [INFO] [stderr] 71 | fn set_binding_mut(&mut self, variable: &String, val: T) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/core/mod.rs:77:40 [INFO] [stderr] | [INFO] [stderr] 77 | for equivalent_variable in self.equivalences.get(variable).unwrap().iter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.equivalences[variable]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:83:45 [INFO] [stderr] | [INFO] [stderr] 83 | fn add_equivalence(&mut self, variable: &String, variable2: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:83:65 [INFO] [stderr] | [INFO] [stderr] 83 | fn add_equivalence(&mut self, variable: &String, variable2: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:88:59 [INFO] [stderr] | [INFO] [stderr] 88 | fn ensure_equivalence_exists_mut(&mut self, variable: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:95:52 [INFO] [stderr] | [INFO] [stderr] 95 | fn merge_equivalences_mut(&mut self, variable: &String, variable2: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:95:72 [INFO] [stderr] | [INFO] [stderr] 95 | fn merge_equivalences_mut(&mut self, variable: &String, variable2: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:103:41 [INFO] [stderr] | [INFO] [stderr] 103 | pub fn get_binding(&self, variable: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/mod.rs:110:45 [INFO] [stderr] | [INFO] [stderr] 110 | pub fn update_bindings(&self, variable: &String, value: &T) -> Option { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 110 | pub fn update_bindings(&self, variable: &str, value: &T) -> Option { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `variable.clone()` to [INFO] [stderr] | [INFO] [stderr] 112 | if Some(variable.to_string()) == value.to_variable() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/core/mod.rs:173:17 [INFO] [stderr] | [INFO] [stderr] 173 | let ref val = self.data[&key]; [INFO] [stderr] | ----^^^^^^^------------------- help: try: `let val = &self.data[&key];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/core/tests.rs:11:33 [INFO] [stderr] | [INFO] [stderr] 11 | if self.starts_with("?") { [INFO] [stderr] | ^^^ help: try using a char instead: `'?'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/datum/mod.rs:39:43 [INFO] [stderr] | [INFO] [stderr] 39 | Datum::Int(ref value) => Some(value.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/datum/mod.rs:46:47 [INFO] [stderr] | [INFO] [stderr] 46 | Datum::Float(ref f_value) => Some(f_value.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*f_value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/datum/mod.rs:47:46 [INFO] [stderr] | [INFO] [stderr] 47 | Datum::Int(ref i_value) => Some((i_value.clone() as f64)), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*i_value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/datum/mod.rs:64:39 [INFO] [stderr] | [INFO] [stderr] 64 | Datum::Variable(ref v) => format!("{}", v), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `v.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/datum/mod.rs:69:27 [INFO] [stderr] | [INFO] [stderr] 69 | Datum::Nil => format!("nil"), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"nil".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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/datum/mod.rs:152:29 [INFO] [stderr] | [INFO] [stderr] 152 | fn unify_args(args: &Vec, args2: &Vec, bindings: &core::Bindings) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Datum]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/datum/mod.rs:152:49 [INFO] [stderr] | [INFO] [stderr] 152 | fn unify_args(args: &Vec, args2: &Vec, bindings: &core::Bindings) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Datum]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/datum/mod.rs:181:41 [INFO] [stderr] | [INFO] [stderr] 181 | fn apply_bindings_to_args(args: &Vec, bindings: &core::Bindings) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Datum]` [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: you should consider deriving a `Default` implementation for `infer::OriginCache` [INFO] [stderr] --> src/infer/mod.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | / pub fn new() -> Self { [INFO] [stderr] 80 | | OriginCache { items: BTreeSet::new() } [INFO] [stderr] 81 | | } [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] 74 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/infer/mod.rs:172:48 [INFO] [stderr] | [INFO] [stderr] 172 | pub fn render_inference_tree(&'a self, id: &String, render_type: RenderType) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/infer/mod.rs:180:18 [INFO] [stderr] | [INFO] [stderr] 180 | .unwrap_or(format!("{}?", x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| format!("{}?", x))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/infer/mod.rs:206:77 [INFO] [stderr] | [INFO] [stderr] 206 | |(input_goals, bindings): (Vec>, Bindings)| -> Option<(Vec>, Vec, Bindings)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/infer/mod.rs:245:49 [INFO] [stderr] | [INFO] [stderr] 245 | let (negative_inputs, positive_inputs): (Vec>, Vec>) = [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [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/infer/mod.rs:287:39 [INFO] [stderr] | [INFO] [stderr] 287 | fn any_patterns_match(patterns: &Vec<&U>, patterns2: &Vec<&U>) -> bool [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/infer/mod.rs:287:60 [INFO] [stderr] | [INFO] [stderr] 287 | fn any_patterns_match(patterns: &Vec<&U>, patterns2: &Vec<&U>) -> bool [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/infer/mod.rs:295:42 [INFO] [stderr] | [INFO] [stderr] 295 | fn extract_datum_indexes(goals: &Vec>) -> Vec [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Goal]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/infer/mod.rs:303:36 [INFO] [stderr] | [INFO] [stderr] 303 | fn is_new_fact(f: &U, facts: &Vec<(&String, &U)>) -> bool [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(&String, &U)]` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/infer/tests.rs:188:25 [INFO] [stderr] | [INFO] [stderr] 188 | let rules_with_ids: Vec<(&String, &Rule>)> = rule_ids.iter().zip(rules.iter()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `pedigree::Origin` [INFO] [stderr] --> src/pedigree/mod.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn new() -> Self { [INFO] [stderr] 35 | | Origin { [INFO] [stderr] 36 | | source_id: String::new(), [INFO] [stderr] 37 | | args: Vec::new(), [INFO] [stderr] 38 | | } [INFO] [stderr] 39 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 20 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/pedigree/mod.rs:61:17 [INFO] [stderr] | [INFO] [stderr] 61 | type Item = (Vec<(&'a String, Option<&'a Origin>)>, Vec<&'a BTreeSet>); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/pedigree/mod.rs:63:27 [INFO] [stderr] | [INFO] [stderr] 63 | fn next(&mut self) -> Option<(Vec<(&'a String, Option<&'a Origin>)>, Vec<&'a BTreeSet>)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:131:32 [INFO] [stderr] | [INFO] [stderr] 131 | pub fn ancestor(&self, id: &String) -> Option<&Origin> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:135:48 [INFO] [stderr] | [INFO] [stderr] 135 | pub fn descendent_inferences(&'a self, id: &String) -> Option<&'a BTreeSet> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: you should consider adding a `Default` implementation for `pedigree::InferenceGraphBuilder` [INFO] [stderr] --> src/pedigree/mod.rs:168:5 [INFO] [stderr] | [INFO] [stderr] 168 | / pub fn new() -> Self { [INFO] [stderr] 169 | | InferenceGraphBuilder { [INFO] [stderr] 170 | | pedigree: Pedigree::new(), [INFO] [stderr] 171 | | entries_by_generation: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 175 | | } [INFO] [stderr] 176 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 167 | impl Default for pedigree::InferenceGraphBuilder { [INFO] [stderr] 168 | fn default() -> Self { [INFO] [stderr] 169 | Self::new() [INFO] [stderr] 170 | } [INFO] [stderr] 171 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `pedigree::Pedigree` [INFO] [stderr] --> src/pedigree/mod.rs:266:5 [INFO] [stderr] | [INFO] [stderr] 266 | / pub fn new() -> Self { [INFO] [stderr] 267 | | Pedigree { [INFO] [stderr] 268 | | ancestors: BTreeMap::new(), [INFO] [stderr] 269 | | descendents: BTreeMap::new(), [INFO] [stderr] 270 | | } [INFO] [stderr] 271 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 260 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:290:36 [INFO] [stderr] | [INFO] [stderr] 290 | pub fn get_ancestor(&self, id: &String) -> Option<&Origin> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:294:39 [INFO] [stderr] | [INFO] [stderr] 294 | pub fn get_descendents(&self, id: &String) -> Option<&BTreeSet> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:299:29 [INFO] [stderr] | [INFO] [stderr] 299 | pub fn purge(&self, id: &String) -> Self { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:305:37 [INFO] [stderr] | [INFO] [stderr] 305 | pub fn purge_mut(&mut self, id: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:321:49 [INFO] [stderr] | [INFO] [stderr] 321 | pub fn extract_inference_chain(&self, root: &String) -> InferenceChain { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:332:49 [INFO] [stderr] | [INFO] [stderr] 332 | pub fn extract_inference_graph(&self, root: &String) -> InferenceGraph { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: length comparison to zero [INFO] [stderr] --> src/pedigree/mod.rs:355:12 [INFO] [stderr] | [INFO] [stderr] 355 | if current_generation.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_generation.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/pedigree/mod.rs:369:93 [INFO] [stderr] | [INFO] [stderr] 369 | / origin.ancestors() [INFO] [stderr] 370 | | .iter() [INFO] [stderr] 371 | | .cloned() [INFO] [stderr] 372 | | .collect(), [INFO] [stderr] | |__________________________________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_cloned_collect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:382:40 [INFO] [stderr] | [INFO] [stderr] 382 | d_id: &String, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 382 | d_id: &str, [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `d_id.clone()` to [INFO] [stderr] | [INFO] [stderr] 393 | root_renderer(d_id.to_string()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:398:45 [INFO] [stderr] | [INFO] [stderr] 398 | d_id: &String, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pedigree/mod.rs:423:56 [INFO] [stderr] | [INFO] [stderr] 423 | pub fn render_inference_tree_pedigree(&self, d_id: &String, node_renderer: &Fn(String) -> String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | initial_rule_index.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `initial_rule_index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:95:35 [INFO] [stderr] | [INFO] [stderr] 95 | UnificationIndex::Init => initial_datum_index.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `initial_datum_index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:114:53 [INFO] [stderr] | [INFO] [stderr] 114 | pub fn first_goal_to_increment(unification_indices: &Vec) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[UnificationIndex]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:197:37 [INFO] [stderr] | [INFO] [stderr] 197 | pub fn solve(goal: &Self, data: &Vec<&U>, rules: &Vec<&A>, increments: usize, config: &PlanningConfig) -> Option<(usize, Self, Bindings)> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:197:54 [INFO] [stderr] | [INFO] [stderr] 197 | pub fn solve(goal: &Self, data: &Vec<&U>, rules: &Vec<&A>, increments: usize, config: &PlanningConfig) -> Option<(usize, Self, Bindings)> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:209:36 [INFO] [stderr] | [INFO] [stderr] 209 | data: &Vec<&U>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:210:37 [INFO] [stderr] | [INFO] [stderr] 210 | rules: &Vec<&A>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:230:53 [INFO] [stderr] | [INFO] [stderr] 230 | data: &Vec<&U>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:231:54 [INFO] [stderr] | [INFO] [stderr] 231 | rules: &Vec<&A>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:254:34 [INFO] [stderr] | [INFO] [stderr] 254 | pub fn validate(&self, data: &Vec<&U>, rules: &Vec<&A>, bindings: &Bindings, config: &PlanningConfig) -> Result, InvalidPlan> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:254:51 [INFO] [stderr] | [INFO] [stderr] 254 | pub fn validate(&self, data: &Vec<&U>, rules: &Vec<&A>, bindings: &Bindings, config: &PlanningConfig) -> Result, InvalidPlan> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:262:35 [INFO] [stderr] | [INFO] [stderr] 262 | pub fn increment(&self, data: &Vec<&U>, rules: &Vec<&A>, snowflake_prefix_id: usize, max_depth: usize) -> Option { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:262:52 [INFO] [stderr] | [INFO] [stderr] 262 | pub fn increment(&self, data: &Vec<&U>, rules: &Vec<&A>, snowflake_prefix_id: usize, max_depth: usize) -> Option { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:313:36 [INFO] [stderr] | [INFO] [stderr] 313 | pub fn satisified(&self, data: &Vec<&U>, rules: &Vec<&A>, bindings: &Bindings) -> Option> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:313:53 [INFO] [stderr] | [INFO] [stderr] 313 | pub fn satisified(&self, data: &Vec<&U>, rules: &Vec<&A>, bindings: &Bindings) -> Option> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:337:48 [INFO] [stderr] | [INFO] [stderr] 337 | parent_constraints: &Vec<&Constraint>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[&Constraint]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:338:34 [INFO] [stderr] | [INFO] [stderr] 338 | data: &Vec<&U>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:339:35 [INFO] [stderr] | [INFO] [stderr] 339 | rules: &Vec<&A>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:365:40 [INFO] [stderr] | [INFO] [stderr] 365 | data: &Vec<&U>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/planner/mod.rs:366:41 [INFO] [stderr] | [INFO] [stderr] 366 | rules: &Vec<&A>, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&A]` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/planner/mod.rs:370:36 [INFO] [stderr] | [INFO] [stderr] 370 | let mut goals: Vec = goals.into_iter().map(|g| g.clone()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `goals.into_iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:374:61 [INFO] [stderr] | [INFO] [stderr] 374 | let unification_indices = goals.iter().map(|sg| sg.unification_index.clone()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `sg.unification_index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:459:39 [INFO] [stderr] | [INFO] [stderr] 459 | self.unification_index.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.unification_index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:477:33 [INFO] [stderr] | [INFO] [stderr] 477 | return Some(datum_idx.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*datum_idx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:582:21 [INFO] [stderr] | [INFO] [stderr] 582 | config: config.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/planner/mod.rs:599:9 [INFO] [stderr] | [INFO] [stderr] 599 | / for _i in self.total_increments..self.config.max_increments { [INFO] [stderr] 600 | | self.total_increments += 1; [INFO] [stderr] 601 | | [INFO] [stderr] 602 | | if let Some((increments, goal, bindings)) = [INFO] [stderr] ... | [INFO] [stderr] 613 | | } [INFO] [stderr] 614 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/planner/mod.rs:641:21 [INFO] [stderr] | [INFO] [stderr] 641 | config: config.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/planner/mod.rs:657:27 [INFO] [stderr] | [INFO] [stderr] 657 | fn next(&mut self) -> Option<(Vec>, Bindings)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/planner/mod.rs:658:9 [INFO] [stderr] | [INFO] [stderr] 658 | / for _i in self.total_increments..self.config.max_increments { [INFO] [stderr] 659 | | self.total_increments += 1; [INFO] [stderr] 660 | | [INFO] [stderr] 661 | | if let Some((goals, bindings)) = [INFO] [stderr] ... | [INFO] [stderr] 671 | | } [INFO] [stderr] 672 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/planner/tests.rs:933:18 [INFO] [stderr] | [INFO] [stderr] 933 | .map(|s| Datum::String(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Datum::String` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/rule/mod.rs:80:32 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn unify(&self, facts: &Vec<&U>, bindings: &Bindings) -> Option> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[&U]` [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: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ai_kit`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "f443f1543ddab177496ecd49e685b3c43b72cfd30e901d8fc497b8b03ec17c6e"` [INFO] running `"docker" "rm" "-f" "f443f1543ddab177496ecd49e685b3c43b72cfd30e901d8fc497b8b03ec17c6e"` [INFO] [stdout] f443f1543ddab177496ecd49e685b3c43b72cfd30e901d8fc497b8b03ec17c6e