[INFO] fetching crate graphplan 0.6.1... [INFO] linting graphplan-0.6.1 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate graphplan 0.6.1 into /workspace/builds/worker-3-tc1/source [INFO] started tweaking crates.io crate graphplan 0.6.1 [INFO] finished tweaking crates.io crate graphplan 0.6.1 [INFO] tweaked toml for crates.io crate graphplan 0.6.1 written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate graphplan 0.6.1 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate graphplan 0.6.1 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded same-file v1.0.4 [INFO] [stderr] Downloaded itoa v0.4.3 [INFO] [stderr] Downloaded log v0.4.6 [INFO] [stderr] Downloaded tinytemplate v1.0.3 [INFO] [stderr] Downloaded criterion v0.3.1 [INFO] [stderr] Downloaded redox_syscall v0.1.43 [INFO] [stderr] Downloaded crossbeam-deque v0.7.2 [INFO] [stderr] Downloaded num_cpus v1.8.0 [INFO] [stderr] Downloaded quote v0.6.10 [INFO] [stderr] Downloaded bitflags v1.0.4 [INFO] [stderr] Downloaded csv-core v0.1.6 [INFO] [stderr] Downloaded serde_derive v1.0.80 [INFO] [stderr] Downloaded proc-macro2 v1.0.8 [INFO] [stderr] Downloaded itertools v0.8.0 [INFO] [stderr] Downloaded regex-automata v0.1.8 [INFO] [stderr] Downloaded crossbeam-utils v0.7.0 [INFO] [stderr] Downloaded wasm-bindgen v0.2.58 [INFO] [stderr] Downloaded bumpalo v3.1.2 [INFO] [stderr] Downloaded web-sys v0.3.35 [INFO] [stderr] Downloaded syn v1.0.14 [INFO] [stderr] Downloaded syn v0.15.22 [INFO] [stderr] Downloaded js-sys v0.3.35 [INFO] [stderr] Downloaded wasm-bindgen-backend v0.2.58 [INFO] [stderr] Downloaded wasm-bindgen-webidl v0.2.58 [INFO] [stderr] Downloaded crossbeam-epoch v0.8.0 [INFO] [stderr] Downloaded regex v1.3.4 [INFO] [stderr] Downloaded bstr v0.2.10 [INFO] [stderr] Downloaded regex-syntax v0.6.14 [INFO] [stderr] Downloaded libc v0.2.44 [INFO] [stderr] Downloaded proc-macro2 v0.4.24 [INFO] [stderr] Downloaded ryu v0.2.7 [INFO] [stderr] Downloaded serde_json v1.0.33 [INFO] [stderr] Downloaded unicode-width v0.1.5 [INFO] [stderr] Downloaded oorandom v11.1.0 [INFO] [stderr] Downloaded num-traits v0.2.6 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.58 [INFO] [stderr] Downloaded memchr v2.3.0 [INFO] [stderr] Downloaded memoffset v0.5.3 [INFO] [stderr] Downloaded termion v1.5.1 [INFO] [stderr] Downloaded atty v0.2.11 [INFO] [stderr] Downloaded cast v0.2.2 [INFO] [stderr] Downloaded criterion-plot v0.4.1 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.58 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.58 [INFO] [stderr] Downloaded either v1.5.0 [INFO] [stderr] Downloaded winapi-util v0.1.1 [INFO] [stderr] Downloaded winapi v0.3.6 [INFO] [stderr] Downloaded plotters v0.2.12 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 99b2d81730a22847a0e74b35581f85c7022f58765ae2a5f24acdec43624ac3cb [INFO] running `Command { std: "docker" "start" "-a" "99b2d81730a22847a0e74b35581f85c7022f58765ae2a5f24acdec43624ac3cb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "99b2d81730a22847a0e74b35581f85c7022f58765ae2a5f24acdec43624ac3cb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "99b2d81730a22847a0e74b35581f85c7022f58765ae2a5f24acdec43624ac3cb", kill_on_drop: false }` [INFO] [stdout] 99b2d81730a22847a0e74b35581f85c7022f58765ae2a5f24acdec43624ac3cb [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 63910a87b8c35943a72692f848797d10cbc8679acf8faab9da693a28e82d94e3 [INFO] running `Command { std: "docker" "start" "-a" "63910a87b8c35943a72692f848797d10cbc8679acf8faab9da693a28e82d94e3", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.44 [INFO] [stderr] Compiling autocfg v0.1.7 [INFO] [stderr] Compiling serde v1.0.104 [INFO] [stderr] Compiling memchr v2.3.0 [INFO] [stderr] Compiling proc-macro2 v0.4.24 [INFO] [stderr] Compiling ryu v0.2.7 [INFO] [stderr] Checking scopeguard v1.0.0 [INFO] [stderr] Checking byteorder v1.2.7 [INFO] [stderr] Compiling rayon-core v1.7.0 [INFO] [stderr] Checking itoa v0.4.3 [INFO] [stderr] Checking either v1.5.0 [INFO] [stderr] Compiling num-traits v0.2.6 [INFO] [stderr] Compiling ryu v1.0.2 [INFO] [stderr] Checking unicode-width v0.1.5 [INFO] [stderr] Checking same-file v1.0.4 [INFO] [stderr] Compiling memoffset v0.5.3 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Checking regex-syntax v0.6.14 [INFO] [stderr] Checking regex-automata v0.1.8 [INFO] [stderr] Checking bitflags v1.0.4 [INFO] [stderr] Checking cast v0.2.2 [INFO] [stderr] Checking walkdir v2.3.1 [INFO] [stderr] Checking log v0.4.6 [INFO] [stderr] Checking itertools v0.8.0 [INFO] [stderr] Checking oorandom v11.1.0 [INFO] [stderr] Checking clap v2.33.0 [INFO] [stderr] Compiling crossbeam-utils v0.7.0 [INFO] [stderr] Compiling crossbeam-epoch v0.8.0 [INFO] [stderr] Checking graphplan v0.6.1 (/opt/rustwide/workdir) [INFO] [stderr] Checking num_cpus v1.8.0 [INFO] [stderr] Checking atty v0.2.11 [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/action.rs:59:13 [INFO] [stdout] | [INFO] [stdout] 59 | reqs: reqs, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `reqs` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/action.rs:60:13 [INFO] [stdout] | [INFO] [stdout] 60 | effects: effects, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `effects` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/proposition.rs:47:31 [INFO] [stdout] | [INFO] [stdout] 47 | prop.id == self.id && prop.negation == !self.negation [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `prop.negation != self.negation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-canonical implementation of `partial_cmp` on an `Ord` type [INFO] [stdout] --> src/action.rs:46:1 [INFO] [stdout] | [INFO] [stdout] 46 | / impl<'a, ActionId: Hash + Ord + Clone, PropositionId: Ord + PartialEq + Eq + Display + Hash + Clone> PartialOrd for Action<'a, Act... [INFO] [stdout] 47 | | fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 48 | | Some((self.id).cmp(&other.id)) [INFO] [stdout] 49 | | } [INFO] [stdout] 50 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_canonical_partial_ord_impl [INFO] [stdout] = note: `#[warn(clippy::non_canonical_partial_ord_impl)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 47 - fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 48 - Some((self.id).cmp(&other.id)) [INFO] [stdout] 49 - } [INFO] [stdout] 47 + fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/plangraph.rs:58:13 [INFO] [stdout] | [INFO] [stdout] 58 | / actions [INFO] [stdout] 59 | | .iter() [INFO] [stdout] 60 | | .filter(|a| { [INFO] [stdout] 61 | | pairs(&a.reqs) [INFO] [stdout] ... | [INFO] [stdout] 64 | | .is_none()}) [INFO] [stdout] 65 | | .map(|i| *i) [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `copied` method [INFO] [stdout] | [INFO] [stdout] 58 ~ actions [INFO] [stdout] 59 + .iter() [INFO] [stdout] 60 + .filter(|a| { [INFO] [stdout] 61 + pairs(&a.reqs) [INFO] [stdout] 62 + .intersection(mux) [INFO] [stdout] 63 + .next() [INFO] [stdout] 64 + .is_none()}).copied() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/plangraph.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 73 | &layer [INFO] [stdout] | ^^^^^^ help: change this to: `layer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/plangraph.rs:77:13 [INFO] [stdout] | [INFO] [stdout] 77 | &actions, [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> src/plangraph.rs:150:18 [INFO] [stdout] | [INFO] [stdout] 150 | if len > 2 as usize { [INFO] [stdout] | ^^^^^^^^^^ help: try: `2_usize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/solver.rs:149:32 [INFO] [stdout] | [INFO] [stdout] 149 | let acts = accum.values().into_iter().map(|i| *i).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `accum.values().into_iter().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::collections::hash_map::Values<'_, usize, &action::Action<'_, ActionId, PropositionId>>` [INFO] [stdout] --> src/solver.rs:149:32 [INFO] [stdout] | [INFO] [stdout] 149 | let acts = accum.values().into_iter().map(|i| *i).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `accum.values()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking csv-core v0.1.6 [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/solver.rs:370:39 [INFO] [stdout] | [INFO] [stdout] 370 | let goal_action_set = goal_actions.0.values() [INFO] [stdout] | _______________________________________^ [INFO] [stdout] 371 | | .into_iter() [INFO] [stdout] 372 | | // Don't include maintenance actions in Solution [INFO] [stdout] 373 | | .filter(|a| match a.id { [INFO] [stdout] ... | [INFO] [stdout] 376 | | }) [INFO] [stdout] 377 | | .map(|i| *i) [INFO] [stdout] | |________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `copied` method [INFO] [stdout] | [INFO] [stdout] 370 ~ let goal_action_set = goal_actions.0.values() [INFO] [stdout] 371 + .into_iter() [INFO] [stdout] 372 + // Don't include maintenance actions in Solution [INFO] [stdout] 373 + .filter(|a| match a.id { [INFO] [stdout] 374 + ActionType::Action(_) => true, [INFO] [stdout] 375 + ActionType::Maintenance(_) => false [INFO] [stdout] 376 + }).copied() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::collections::hash_map::Values<'_, usize, &action::Action<'_, ActionId, PropositionId>>` [INFO] [stdout] --> src/solver.rs:370:39 [INFO] [stdout] | [INFO] [stdout] 370 | let goal_action_set = goal_actions.0.values() [INFO] [stdout] | _______________________________________^ [INFO] [stdout] 371 | | .into_iter() [INFO] [stdout] | |________________________________^ help: consider removing `.into_iter()`: `goal_actions.0.values()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layer.rs:69:38 [INFO] [stdout] | [INFO] [stdout] 69 | for PairSet(a1, a2) in pairs(&actions) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layer.rs:183:42 [INFO] [stdout] | [INFO] [stdout] 183 | for PairSet(p1, p2) in pairs(&props) { [INFO] [stdout] | ^^^^^^ help: change this to: `props` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/layer.rs:184:35 [INFO] [stdout] | [INFO] [stdout] 184 | let viable_acts = actions.iter() [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 185 | | .filter(|a| a.effects.contains(&p1) || a.effects.contains(&p2)) [INFO] [stdout] 186 | | .map(|a| *a) [INFO] [stdout] | |________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `copied` method [INFO] [stdout] | [INFO] [stdout] 184 ~ let viable_acts = actions.iter() [INFO] [stdout] 185 + .filter(|a| a.effects.contains(&p1) || a.effects.contains(&p2)).copied() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/pairset.rs:89:38 [INFO] [stdout] | [INFO] [stdout] 89 | let mut sorted1 = Vec::from_iter(items1.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:152:20 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 89 - let mut sorted1 = Vec::from_iter(items1.into_iter()); [INFO] [stdout] 89 + let mut sorted1 = Vec::from_iter(items1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/pairset.rs:92:38 [INFO] [stdout] | [INFO] [stdout] 92 | let mut sorted2 = Vec::from_iter(items2.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:152:20 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 92 - let mut sorted2 = Vec::from_iter(items2.into_iter()); [INFO] [stdout] 92 + let mut sorted2 = Vec::from_iter(items2); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashSet` [INFO] [stdout] --> src/pairset.rs:112:45 [INFO] [stdout] | [INFO] [stdout] 112 | let mut sorted1 = Vec::from_iter(items1.into_iter()); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/pairset.rs:112:38 [INFO] [stdout] | [INFO] [stdout] 112 | let mut sorted1 = Vec::from_iter(items1.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:152:20 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 112 - let mut sorted1 = Vec::from_iter(items1.into_iter()); [INFO] [stdout] 112 + let mut sorted1 = Vec::from_iter(&*items1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashSet` [INFO] [stdout] --> src/pairset.rs:115:45 [INFO] [stdout] | [INFO] [stdout] 115 | let mut sorted2 = Vec::from_iter(items2.into_iter()); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/pairset.rs:115:38 [INFO] [stdout] | [INFO] [stdout] 115 | let mut sorted2 = Vec::from_iter(items2.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:152:20 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 115 - let mut sorted2 = Vec::from_iter(items2.into_iter()); [INFO] [stdout] 115 + let mut sorted2 = Vec::from_iter(&*items2); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&action::Action<'_, ActionId, PropositionId>` instead of cloning the inner type [INFO] [stdout] --> src/solver.rs:143:43 [INFO] [stdout] | [INFO] [stdout] 143 | available.insert(a.clone()); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(suspicious_double_ref_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&action::Action<'_, ActionId, PropositionId>` instead of cloning the inner type [INFO] [stdout] --> src/solver.rs:155:47 [INFO] [stdout] | [INFO] [stdout] 155 | ... available.insert(a.clone()); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&action::Action<'_, ActionId, PropositionId>` instead of cloning the inner type [INFO] [stdout] --> src/solver.rs:176:56 [INFO] [stdout] | [INFO] [stdout] 176 | self.accum.insert(goal_idx, next_action.clone()); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking crossbeam-queue v0.2.1 [INFO] [stderr] Checking plotters v0.2.12 [INFO] [stderr] Compiling quote v0.6.10 [INFO] [stderr] Checking criterion-plot v0.4.1 [INFO] [stderr] Compiling syn v0.15.22 [INFO] [stderr] Checking crossbeam-deque v0.7.2 [INFO] [stderr] Checking rayon v1.3.0 [INFO] [stderr] Checking regex v1.3.4 [INFO] [stderr] Compiling serde_derive v1.0.80 [INFO] [stderr] Checking serde_json v1.0.33 [INFO] [stderr] Checking bstr v0.2.10 [INFO] [stderr] Checking tinytemplate v1.0.3 [INFO] [stderr] Checking csv v1.1.3 [INFO] [stderr] Checking criterion v0.3.1 [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/action.rs:59:13 [INFO] [stdout] | [INFO] [stdout] 59 | reqs: reqs, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `reqs` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/action.rs:60:13 [INFO] [stdout] | [INFO] [stdout] 60 | effects: effects, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `effects` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> examples/pddl.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | / /// https://www.cs.toronto.edu/~sheila/2542/s14/A1/introtopddl2.pdf [INFO] [stdout] 3 | | [INFO] [stdout] | |_^ [INFO] [stdout] 4 | use std::collections::HashSet; [INFO] [stdout] | - the comment documents this `use` import [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the crate use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 ~ //! An attempt at translating PDDL concepts for use with this library [INFO] [stdout] 2 ~ //! https://www.cs.toronto.edu/~sheila/2542/s14/A1/introtopddl2.pdf [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Props` is never used [INFO] [stdout] --> examples/pddl.rs:9:6 [INFO] [stdout] | [INFO] [stdout] 9 | enum Props { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `at` is never used [INFO] [stdout] --> examples/pddl.rs:13:4 [INFO] [stdout] | [INFO] [stdout] 13 | fn at(obj1: Object, obj2: Object) -> HashSet> { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Object` is never used [INFO] [stdout] --> examples/pddl.rs:33:6 [INFO] [stdout] | [INFO] [stdout] 33 | enum Object { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Predicate` is never used [INFO] [stdout] --> examples/pddl.rs:42:6 [INFO] [stdout] | [INFO] [stdout] 42 | enum Predicate { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/proposition.rs:47:31 [INFO] [stdout] | [INFO] [stdout] 47 | prop.id == self.id && prop.negation == !self.negation [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `prop.negation != self.negation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/proposition.rs:79:17 [INFO] [stdout] | [INFO] [stdout] 79 | assert!(false == p1.negation); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `!p1.negation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/proposition.rs:80:17 [INFO] [stdout] | [INFO] [stdout] 80 | assert!(true == Proposition::from("test").negate().negation); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Proposition::from("test").negate().negation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-canonical implementation of `partial_cmp` on an `Ord` type [INFO] [stdout] --> src/action.rs:46:1 [INFO] [stdout] | [INFO] [stdout] 46 | / impl<'a, ActionId: Hash + Ord + Clone, PropositionId: Ord + PartialEq + Eq + Display + Hash + Clone> PartialOrd for Action<'a, Act... [INFO] [stdout] 47 | | fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 48 | | Some((self.id).cmp(&other.id)) [INFO] [stdout] 49 | | } [INFO] [stdout] 50 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_canonical_partial_ord_impl [INFO] [stdout] = note: `#[warn(clippy::non_canonical_partial_ord_impl)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 47 - fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 48 - Some((self.id).cmp(&other.id)) [INFO] [stdout] 49 - } [INFO] [stdout] 47 + fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/plangraph.rs:58:13 [INFO] [stdout] | [INFO] [stdout] 58 | / actions [INFO] [stdout] 59 | | .iter() [INFO] [stdout] 60 | | .filter(|a| { [INFO] [stdout] 61 | | pairs(&a.reqs) [INFO] [stdout] ... | [INFO] [stdout] 64 | | .is_none()}) [INFO] [stdout] 65 | | .map(|i| *i) [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `copied` method [INFO] [stdout] | [INFO] [stdout] 58 ~ actions [INFO] [stdout] 59 + .iter() [INFO] [stdout] 60 + .filter(|a| { [INFO] [stdout] 61 + pairs(&a.reqs) [INFO] [stdout] 62 + .intersection(mux) [INFO] [stdout] 63 + .next() [INFO] [stdout] 64 + .is_none()}).copied() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/plangraph.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 73 | &layer [INFO] [stdout] | ^^^^^^ help: change this to: `layer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/plangraph.rs:77:13 [INFO] [stdout] | [INFO] [stdout] 77 | &actions, [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> src/plangraph.rs:150:18 [INFO] [stdout] | [INFO] [stdout] 150 | if len > 2 as usize { [INFO] [stdout] | ^^^^^^^^^^ help: try: `2_usize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/solver.rs:149:32 [INFO] [stdout] | [INFO] [stdout] 149 | let acts = accum.values().into_iter().map(|i| *i).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `accum.values().into_iter().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::collections::hash_map::Values<'_, usize, &action::Action<'_, ActionId, PropositionId>>` [INFO] [stdout] --> src/solver.rs:149:32 [INFO] [stdout] | [INFO] [stdout] 149 | let acts = accum.values().into_iter().map(|i| *i).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `accum.values()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/solver.rs:294:31 [INFO] [stdout] | [INFO] [stdout] 294 | let mut out = combo.0.values() [INFO] [stdout] | _______________________________^ [INFO] [stdout] 295 | | .into_iter() [INFO] [stdout] 296 | | .map(|i| *i) [INFO] [stdout] | |________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `copied` method [INFO] [stdout] | [INFO] [stdout] 294 ~ let mut out = combo.0.values() [INFO] [stdout] 295 + .into_iter().copied() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::collections::hash_map::Values<'_, usize, &action::Action<'_, &str, &str>>` [INFO] [stdout] --> src/solver.rs:294:31 [INFO] [stdout] | [INFO] [stdout] 294 | let mut out = combo.0.values() [INFO] [stdout] | _______________________________^ [INFO] [stdout] 295 | | .into_iter() [INFO] [stdout] | |________________________________^ help: consider removing `.into_iter()`: `combo.0.values()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/solver.rs:370:39 [INFO] [stdout] | [INFO] [stdout] 370 | let goal_action_set = goal_actions.0.values() [INFO] [stdout] | _______________________________________^ [INFO] [stdout] 371 | | .into_iter() [INFO] [stdout] 372 | | // Don't include maintenance actions in Solution [INFO] [stdout] 373 | | .filter(|a| match a.id { [INFO] [stdout] ... | [INFO] [stdout] 376 | | }) [INFO] [stdout] 377 | | .map(|i| *i) [INFO] [stdout] | |________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `copied` method [INFO] [stdout] | [INFO] [stdout] 370 ~ let goal_action_set = goal_actions.0.values() [INFO] [stdout] 371 + .into_iter() [INFO] [stdout] 372 + // Don't include maintenance actions in Solution [INFO] [stdout] 373 + .filter(|a| match a.id { [INFO] [stdout] 374 + ActionType::Action(_) => true, [INFO] [stdout] 375 + ActionType::Maintenance(_) => false [INFO] [stdout] 376 + }).copied() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::collections::hash_map::Values<'_, usize, &action::Action<'_, ActionId, PropositionId>>` [INFO] [stdout] --> src/solver.rs:370:39 [INFO] [stdout] | [INFO] [stdout] 370 | let goal_action_set = goal_actions.0.values() [INFO] [stdout] | _______________________________________^ [INFO] [stdout] 371 | | .into_iter() [INFO] [stdout] | |________________________________^ help: consider removing `.into_iter()`: `goal_actions.0.values()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layer.rs:69:38 [INFO] [stdout] | [INFO] [stdout] 69 | for PairSet(a1, a2) in pairs(&actions) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/layer.rs:183:42 [INFO] [stdout] | [INFO] [stdout] 183 | for PairSet(p1, p2) in pairs(&props) { [INFO] [stdout] | ^^^^^^ help: change this to: `props` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/layer.rs:184:35 [INFO] [stdout] | [INFO] [stdout] 184 | let viable_acts = actions.iter() [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 185 | | .filter(|a| a.effects.contains(&p1) || a.effects.contains(&p2)) [INFO] [stdout] 186 | | .map(|a| *a) [INFO] [stdout] | |________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `copied` method [INFO] [stdout] | [INFO] [stdout] 184 ~ let viable_acts = actions.iter() [INFO] [stdout] 185 + .filter(|a| a.effects.contains(&p1) || a.effects.contains(&p2)).copied() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/pairset.rs:89:38 [INFO] [stdout] | [INFO] [stdout] 89 | let mut sorted1 = Vec::from_iter(items1.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:152:20 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 89 - let mut sorted1 = Vec::from_iter(items1.into_iter()); [INFO] [stdout] 89 + let mut sorted1 = Vec::from_iter(items1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/pairset.rs:92:38 [INFO] [stdout] | [INFO] [stdout] 92 | let mut sorted2 = Vec::from_iter(items2.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:152:20 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 92 - let mut sorted2 = Vec::from_iter(items2.into_iter()); [INFO] [stdout] 92 + let mut sorted2 = Vec::from_iter(items2); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashSet` [INFO] [stdout] --> src/pairset.rs:112:45 [INFO] [stdout] | [INFO] [stdout] 112 | let mut sorted1 = Vec::from_iter(items1.into_iter()); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/pairset.rs:112:38 [INFO] [stdout] | [INFO] [stdout] 112 | let mut sorted1 = Vec::from_iter(items1.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:152:20 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 112 - let mut sorted1 = Vec::from_iter(items1.into_iter()); [INFO] [stdout] 112 + let mut sorted1 = Vec::from_iter(&*items1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashSet` [INFO] [stdout] --> src/pairset.rs:115:45 [INFO] [stdout] | [INFO] [stdout] 115 | let mut sorted2 = Vec::from_iter(items2.into_iter()); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/pairset.rs:115:38 [INFO] [stdout] | [INFO] [stdout] 115 | let mut sorted2 = Vec::from_iter(items2.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:152:20 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 115 - let mut sorted2 = Vec::from_iter(items2.into_iter()); [INFO] [stdout] 115 + let mut sorted2 = Vec::from_iter(&*items2); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/lib.rs:179:17 [INFO] [stdout] | [INFO] [stdout] 179 | assert!(pg.search::() != None, "Solution should not be None"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `pg.search::().is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> src/proposition.rs:86:13 [INFO] [stdout] | [INFO] [stdout] 86 | format!("{:?} is not a negation of {:?}", p1, p2) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: remove the `format!(..)` macro call [INFO] [stdout] | [INFO] [stdout] 86 - format!("{:?} is not a negation of {:?}", p1, p2) [INFO] [stdout] 86 + "{:?} is not a negation of {:?}", p1, p2 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&action::Action<'_, ActionId, PropositionId>` instead of cloning the inner type [INFO] [stdout] --> src/solver.rs:143:43 [INFO] [stdout] | [INFO] [stdout] 143 | available.insert(a.clone()); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(suspicious_double_ref_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&action::Action<'_, ActionId, PropositionId>` instead of cloning the inner type [INFO] [stdout] --> src/solver.rs:155:47 [INFO] [stdout] | [INFO] [stdout] 155 | ... available.insert(a.clone()); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&action::Action<'_, ActionId, PropositionId>` instead of cloning the inner type [INFO] [stdout] --> src/solver.rs:176:56 [INFO] [stdout] | [INFO] [stdout] 176 | self.accum.insert(goal_idx, next_action.clone()); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/pairset.rs:140:33 [INFO] [stdout] | [INFO] [stdout] 140 | hashset! {PairSet(p1.clone(), p2.clone()), [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/pairset.rs:140:45 [INFO] [stdout] | [INFO] [stdout] 140 | hashset! {PairSet(p1.clone(), p2.clone()), [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/pairset.rs:141:23 [INFO] [stdout] | [INFO] [stdout] 141 | PairSet(p1.clone(), p3.clone()), [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/pairset.rs:141:35 [INFO] [stdout] | [INFO] [stdout] 141 | PairSet(p1.clone(), p3.clone()), [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/pairset.rs:142:23 [INFO] [stdout] | [INFO] [stdout] 142 | PairSet(p2.clone(), p3.clone())}, [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/pairset.rs:142:35 [INFO] [stdout] | [INFO] [stdout] 142 | PairSet(p2.clone(), p3.clone())}, [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/pairset.rs:143:32 [INFO] [stdout] | [INFO] [stdout] 143 | pairs(&hashset! {p1.clone(), p2.clone(), p3.clone()}) [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/pairset.rs:143:44 [INFO] [stdout] | [INFO] [stdout] 143 | pairs(&hashset! {p1.clone(), p2.clone(), p3.clone()}) [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/pairset.rs:143:56 [INFO] [stdout] | [INFO] [stdout] 143 | pairs(&hashset! {p1.clone(), p2.clone(), p3.clone()}) [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 12.85s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: criterion v0.3.1 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2` [INFO] running `Command { std: "docker" "inspect" "63910a87b8c35943a72692f848797d10cbc8679acf8faab9da693a28e82d94e3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "63910a87b8c35943a72692f848797d10cbc8679acf8faab9da693a28e82d94e3", kill_on_drop: false }` [INFO] [stdout] 63910a87b8c35943a72692f848797d10cbc8679acf8faab9da693a28e82d94e3