[INFO] crate mycroft-support 0.0.1 is already in cache [INFO] extracting crate mycroft-support 0.0.1 into work/ex/clippy-test-run/sources/stable/reg/mycroft-support/0.0.1 [INFO] extracting crate mycroft-support 0.0.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mycroft-support/0.0.1 [INFO] validating manifest of mycroft-support-0.0.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of mycroft-support-0.0.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing mycroft-support-0.0.1 [INFO] finished frobbing mycroft-support-0.0.1 [INFO] frobbed toml for mycroft-support-0.0.1 written to work/ex/clippy-test-run/sources/stable/reg/mycroft-support/0.0.1/Cargo.toml [INFO] started frobbing mycroft-support-0.0.1 [INFO] finished frobbing mycroft-support-0.0.1 [INFO] frobbed toml for mycroft-support-0.0.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mycroft-support/0.0.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting mycroft-support-0.0.1 against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mycroft-support/0.0.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dclippy::into_iter_on_array" "-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] 8c331df479d96bbdabf148725bdc67c0226a41f62e5b02e0e7243d0d5c870d8e [INFO] running `"docker" "start" "-a" "8c331df479d96bbdabf148725bdc67c0226a41f62e5b02e0e7243d0d5c870d8e"` [INFO] [stderr] Checking mycroft-support v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/storage/tuple.rs:399:13 [INFO] [stderr] | [INFO] [stderr] 399 | inner: inner, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `inner` [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/storage/tuple.rs:406:13 [INFO] [stderr] | [INFO] [stderr] 406 | aggs: aggs, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `aggs` [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/storage/tuple.rs:408:13 [INFO] [stderr] | [INFO] [stderr] 408 | agg_indices: agg_indices, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `agg_indices` [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/storage/tuple.rs:409:13 [INFO] [stderr] | [INFO] [stderr] 409 | key_indices: key_indices, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `key_indices` [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/index/hash.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | key: key, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [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/join.rs:163:13 [INFO] [stderr] | [INFO] [stderr] 163 | order: order, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `order` [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/join.rs:164:13 [INFO] [stderr] | [INFO] [stderr] 164 | var_old_to_new: var_old_to_new, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `var_old_to_new` [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/join.rs:165:13 [INFO] [stderr] | [INFO] [stderr] 165 | indices: indices, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `indices` [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/join.rs:166:13 [INFO] [stderr] | [INFO] [stderr] 166 | restricts: restricts, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `restricts` [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/join.rs:295:17 [INFO] [stderr] | [INFO] [stderr] 295 | payload: payload, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `payload` [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/derivation.rs:120:25 [INFO] [stderr] | [INFO] [stderr] 120 | rule_id: rule_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `rule_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/derivation.rs:199:17 [INFO] [stderr] | [INFO] [stderr] 199 | write!(f, "{} by {},\n", fact, rule)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aggregator.rs:86:13 [INFO] [stderr] | [INFO] [stderr] 86 | 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/storage/tuple.rs:399:13 [INFO] [stderr] | [INFO] [stderr] 399 | inner: inner, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `inner` [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/storage/tuple.rs:406:13 [INFO] [stderr] | [INFO] [stderr] 406 | aggs: aggs, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `aggs` [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/storage/tuple.rs:408:13 [INFO] [stderr] | [INFO] [stderr] 408 | agg_indices: agg_indices, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `agg_indices` [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/storage/tuple.rs:409:13 [INFO] [stderr] | [INFO] [stderr] 409 | key_indices: key_indices, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `key_indices` [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/index/hash.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | key: key, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [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/join.rs:163:13 [INFO] [stderr] | [INFO] [stderr] 163 | order: order, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `order` [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/join.rs:164:13 [INFO] [stderr] | [INFO] [stderr] 164 | var_old_to_new: var_old_to_new, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `var_old_to_new` [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/join.rs:165:13 [INFO] [stderr] | [INFO] [stderr] 165 | indices: indices, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `indices` [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/join.rs:166:13 [INFO] [stderr] | [INFO] [stderr] 166 | restricts: restricts, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `restricts` [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/join.rs:295:17 [INFO] [stderr] | [INFO] [stderr] 295 | payload: payload, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `payload` [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/derivation.rs:120:25 [INFO] [stderr] | [INFO] [stderr] 120 | rule_id: rule_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `rule_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/derivation.rs:199:17 [INFO] [stderr] | [INFO] [stderr] 199 | write!(f, "{} by {},\n", fact, rule)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aggregator.rs:86:13 [INFO] [stderr] | [INFO] [stderr] 86 | 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: unneeded return statement [INFO] [stderr] --> src/storage/tuple.rs:243:9 [INFO] [stderr] | [INFO] [stderr] 243 | 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: unneeded return statement [INFO] [stderr] --> src/storage/tuple.rs:322:9 [INFO] [stderr] | [INFO] [stderr] 322 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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/storage/tuple.rs:243:9 [INFO] [stderr] | [INFO] [stderr] 243 | 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: unneeded return statement [INFO] [stderr] --> src/storage/tuple.rs:322:9 [INFO] [stderr] | [INFO] [stderr] 322 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/storage/tuple.rs:30:19 [INFO] [stderr] | [INFO] [stderr] 30 | perm: perm.iter().cloned().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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/storage/tuple.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | / pub fn skip_iter<'a>(&'a self) -> ProjectionIter<'a> { [INFO] [stderr] 56 | | ProjectionIter { [INFO] [stderr] 57 | | proj: self, [INFO] [stderr] 58 | | iter: self.inner.range(vec![]..), [INFO] [stderr] 59 | | } [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the loop variable `col` is used to index `row` [INFO] [stderr] --> src/storage/tuple.rs:238:20 [INFO] [stderr] | [INFO] [stderr] 238 | for col in 0..row.len() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 238 | for (col, ) in row.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/storage/tuple.rs:247:25 [INFO] [stderr] | [INFO] [stderr] 247 | fn get_unchecked(inner: &Vec>, key: FactId) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: item `storage::tuple::Tuples` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/storage/tuple.rs:255:1 [INFO] [stderr] | [INFO] [stderr] 255 | / impl Tuples { [INFO] [stderr] 256 | | fn forced(&self) -> bool { [INFO] [stderr] 257 | | self.delayed.is_empty() [INFO] [stderr] 258 | | } [INFO] [stderr] ... | [INFO] [stderr] 553 | | } [INFO] [stderr] 554 | | } [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: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/storage/tuple.rs:358:21 [INFO] [stderr] | [INFO] [stderr] 358 | .insert(fields.iter().cloned().collect(), projection); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/storage/tuple.rs:504:17 [INFO] [stderr] | [INFO] [stderr] 504 | self.inv_meta.get(&old_fids).map(|x| x.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.inv_meta.get(&old_fids).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/storage/tuple.rs:504:54 [INFO] [stderr] | [INFO] [stderr] 504 | self.inv_meta.get(&old_fids).map(|x| x.clone()) [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*x` [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: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/storage/tuple.rs:527:69 [INFO] [stderr] | [INFO] [stderr] 527 | for (col, new_val) in self.inner.iter_mut().zip(val.into_iter()) { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/storage/tuple.rs:538:28 [INFO] [stderr] | [INFO] [stderr] 538 | let mmid = self.inv_meta.get(&oe.get().fids).map(|x| *x); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.inv_meta.get(&oe.get().fids).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `storage::data::Data` [INFO] [stderr] --> src/storage/data.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | / pub fn new() -> Self { [INFO] [stderr] 42 | | Self { [INFO] [stderr] 43 | | raw: Rc::new(UnsafeCell::new(RawData::new())), [INFO] [stderr] 44 | | } [INFO] [stderr] 45 | | } [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] 39 | impl Default for storage::data::Data { [INFO] [stderr] 40 | fn default() -> Self { [INFO] [stderr] 41 | Self::new() [INFO] [stderr] 42 | } [INFO] [stderr] 43 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `index::hash::HashIndex` [INFO] [stderr] --> src/index/hash.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | / pub fn new() -> Self { [INFO] [stderr] 89 | | Self { [INFO] [stderr] 90 | | elems: 0, [INFO] [stderr] 91 | | hash_key: RandomState::new(), [INFO] [stderr] ... | [INFO] [stderr] 94 | | } [INFO] [stderr] 95 | | } [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] 79 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: trait `SkipIterator` has a `len` method but no (possibly inherited) `is_empty` method [INFO] [stderr] --> src/join.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | / pub trait SkipIterator { [INFO] [stderr] 12 | | /// Provides the next tuple in the iterator, the fact ID it was derived from [INFO] [stderr] 13 | | fn next(&mut self) -> Option<(Tuple, Vec)>; [INFO] [stderr] 14 | | /// Sets the iterator position to return the minimum value which is greater than or equal to [INFO] [stderr] ... | [INFO] [stderr] 20 | | fn len(&self) -> usize; [INFO] [stderr] 21 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [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 `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/join.rs:61:30 [INFO] [stderr] | [INFO] [stderr] 61 | fn min(&self, candidate: &Vec, order: &[usize]) -> usize { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [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/join.rs:93:16 [INFO] [stderr] | [INFO] [stderr] 93 | candidate: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [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/join.rs:94:16 [INFO] [stderr] | [INFO] [stderr] 94 | restricts: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Option]` [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/join.rs:109:29 [INFO] [stderr] | [INFO] [stderr] 109 | fn reorder_indices(indices: &Vec<&mut SkipIterator>) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[&mut SkipIterator]` [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/join.rs:158:20 [INFO] [stderr] | [INFO] [stderr] 158 | restricts: &'a Vec>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Vec>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/storage/tuple.rs:30:19 [INFO] [stderr] | [INFO] [stderr] 30 | perm: perm.iter().cloned().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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/storage/tuple.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | / pub fn skip_iter<'a>(&'a self) -> ProjectionIter<'a> { [INFO] [stderr] 56 | | ProjectionIter { [INFO] [stderr] 57 | | proj: self, [INFO] [stderr] 58 | | iter: self.inner.range(vec![]..), [INFO] [stderr] 59 | | } [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/derivation.rs:76:77 [INFO] [stderr] | [INFO] [stderr] 76 | Provenance::Base => return Some(RawDerivation::Base { fact: fact.clone() }), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*fact` [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/derivation.rs:99:46 [INFO] [stderr] | [INFO] [stderr] 99 | sub_spine.insert(sub_fact.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `sub_fact` [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: the loop variable `col` is used to index `row` [INFO] [stderr] --> src/storage/tuple.rs:238:20 [INFO] [stderr] | [INFO] [stderr] 238 | for col in 0..row.len() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 238 | for (col, ) in row.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/storage/tuple.rs:247:25 [INFO] [stderr] | [INFO] [stderr] 247 | fn get_unchecked(inner: &Vec>, key: FactId) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: item `storage::tuple::Tuples` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/storage/tuple.rs:255:1 [INFO] [stderr] | [INFO] [stderr] 255 | / impl Tuples { [INFO] [stderr] 256 | | fn forced(&self) -> bool { [INFO] [stderr] 257 | | self.delayed.is_empty() [INFO] [stderr] 258 | | } [INFO] [stderr] ... | [INFO] [stderr] 553 | | } [INFO] [stderr] 554 | | } [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: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/storage/tuple.rs:358:21 [INFO] [stderr] | [INFO] [stderr] 358 | .insert(fields.iter().cloned().collect(), projection); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/storage/tuple.rs:504:17 [INFO] [stderr] | [INFO] [stderr] 504 | self.inv_meta.get(&old_fids).map(|x| x.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.inv_meta.get(&old_fids).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/storage/tuple.rs:504:54 [INFO] [stderr] | [INFO] [stderr] 504 | self.inv_meta.get(&old_fids).map(|x| x.clone()) [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*x` [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: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/storage/tuple.rs:527:69 [INFO] [stderr] | [INFO] [stderr] 527 | for (col, new_val) in self.inner.iter_mut().zip(val.into_iter()) { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/storage/tuple.rs:538:28 [INFO] [stderr] | [INFO] [stderr] 538 | let mmid = self.inv_meta.get(&oe.get().fids).map(|x| *x); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.inv_meta.get(&oe.get().fids).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `storage::data::Data` [INFO] [stderr] --> src/storage/data.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | / pub fn new() -> Self { [INFO] [stderr] 42 | | Self { [INFO] [stderr] 43 | | raw: Rc::new(UnsafeCell::new(RawData::new())), [INFO] [stderr] 44 | | } [INFO] [stderr] 45 | | } [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] 39 | impl Default for storage::data::Data { [INFO] [stderr] 40 | fn default() -> Self { [INFO] [stderr] 41 | Self::new() [INFO] [stderr] 42 | } [INFO] [stderr] 43 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `index::hash::HashIndex` [INFO] [stderr] --> src/index/hash.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | / pub fn new() -> Self { [INFO] [stderr] 89 | | Self { [INFO] [stderr] 90 | | elems: 0, [INFO] [stderr] 91 | | hash_key: RandomState::new(), [INFO] [stderr] ... | [INFO] [stderr] 94 | | } [INFO] [stderr] 95 | | } [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] 79 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: trait `SkipIterator` has a `len` method but no (possibly inherited) `is_empty` method [INFO] [stderr] --> src/join.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | / pub trait SkipIterator { [INFO] [stderr] 12 | | /// Provides the next tuple in the iterator, the fact ID it was derived from [INFO] [stderr] 13 | | fn next(&mut self) -> Option<(Tuple, Vec)>; [INFO] [stderr] 14 | | /// Sets the iterator position to return the minimum value which is greater than or equal to [INFO] [stderr] ... | [INFO] [stderr] 20 | | fn len(&self) -> usize; [INFO] [stderr] 21 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [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 `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/join.rs:61:30 [INFO] [stderr] | [INFO] [stderr] 61 | fn min(&self, candidate: &Vec, order: &[usize]) -> usize { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [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/join.rs:93:16 [INFO] [stderr] | [INFO] [stderr] 93 | candidate: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [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/join.rs:94:16 [INFO] [stderr] | [INFO] [stderr] 94 | restricts: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Option]` [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/join.rs:109:29 [INFO] [stderr] | [INFO] [stderr] 109 | fn reorder_indices(indices: &Vec<&mut SkipIterator>) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[&mut SkipIterator]` [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/join.rs:158:20 [INFO] [stderr] | [INFO] [stderr] 158 | restricts: &'a Vec>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Vec>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/join.rs:313:17 [INFO] [stderr] | [INFO] [stderr] 313 | self.loc = self.loc + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.loc += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: avoid using `collect()` when not needed [INFO] [stderr] --> src/join.rs:368:24 [INFO] [stderr] | [INFO] [stderr] 368 | assert_eq!(join.collect::>().len(), 2) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `.count()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_collect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_collect [INFO] [stderr] [INFO] [stderr] warning: avoid using `collect()` when not needed [INFO] [stderr] --> src/join.rs:384:24 [INFO] [stderr] | [INFO] [stderr] 384 | assert_eq!(join.collect::>().len(), 1) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `.count()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_collect [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/derivation.rs:76:77 [INFO] [stderr] | [INFO] [stderr] 76 | Provenance::Base => return Some(RawDerivation::Base { fact: fact.clone() }), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*fact` [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/derivation.rs:99:46 [INFO] [stderr] | [INFO] [stderr] 99 | sub_spine.insert(sub_fact.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `sub_fact` [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] Finished dev [unoptimized + debuginfo] target(s) in 1.74s [INFO] running `"docker" "inspect" "8c331df479d96bbdabf148725bdc67c0226a41f62e5b02e0e7243d0d5c870d8e"` [INFO] running `"docker" "rm" "-f" "8c331df479d96bbdabf148725bdc67c0226a41f62e5b02e0e7243d0d5c870d8e"` [INFO] [stdout] 8c331df479d96bbdabf148725bdc67c0226a41f62e5b02e0e7243d0d5c870d8e