[INFO] crate jsonapi 0.6.0 is already in cache [INFO] extracting crate jsonapi 0.6.0 into work/ex/clippy-test-run/sources/stable/reg/jsonapi/0.6.0 [INFO] extracting crate jsonapi 0.6.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/jsonapi/0.6.0 [INFO] validating manifest of jsonapi-0.6.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 jsonapi-0.6.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 jsonapi-0.6.0 [INFO] finished frobbing jsonapi-0.6.0 [INFO] frobbed toml for jsonapi-0.6.0 written to work/ex/clippy-test-run/sources/stable/reg/jsonapi/0.6.0/Cargo.toml [INFO] started frobbing jsonapi-0.6.0 [INFO] finished frobbing jsonapi-0.6.0 [INFO] frobbed toml for jsonapi-0.6.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/jsonapi/0.6.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 jsonapi-0.6.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/jsonapi/0.6.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] 8aebe90b6288571a10dae98cd1ff4d73b7e7aabc70afd9d7be59024084c58bc6 [INFO] running `"docker" "start" "-a" "8aebe90b6288571a10dae98cd1ff4d73b7e7aabc70afd9d7be59024084c58bc6"` [INFO] [stderr] Checking queryst v1.0.1 [INFO] [stderr] Checking jsonapi v0.6.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/query.rs:127:21 [INFO] [stderr] | [INFO] [stderr] 127 | include: include, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `include` [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/model.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | included: included, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `included` [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/model.rs:214:9 [INFO] [stderr] | [INFO] [stderr] 214 | included: included, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `included` [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/query.rs:127:21 [INFO] [stderr] | [INFO] [stderr] 127 | include: include, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `include` [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/model.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | included: included, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `included` [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/model.rs:214:9 [INFO] [stderr] | [INFO] [stderr] 214 | included: included, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `included` [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 unit return type [INFO] [stderr] --> src/api.rs:166:42 [INFO] [stderr] | [INFO] [stderr] 166 | pub fn push(&mut self, patch: Patch) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/api.rs:166:42 [INFO] [stderr] | [INFO] [stderr] 166 | pub fn push(&mut self, patch: Patch) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/api.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | !self.errors.is_none() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.errors.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/api.rs:177:9 [INFO] [stderr] | [INFO] [stderr] 177 | !self.errors.is_none() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.errors.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/api.rs:180:9 [INFO] [stderr] | [INFO] [stderr] 180 | !self.included.is_none() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.included.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/api.rs:183:9 [INFO] [stderr] | [INFO] [stderr] 183 | !self.data.is_none() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self.data.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/api.rs:203:9 [INFO] [stderr] | [INFO] [stderr] 203 | / match self.validate() { [INFO] [stderr] 204 | | Some(_) => false, [INFO] [stderr] 205 | | None => true, [INFO] [stderr] 206 | | } [INFO] [stderr] | |_________^ help: try this: `self.validate().is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/api.rs:363:32 [INFO] [stderr] | [INFO] [stderr] 363 | if self_value.to_string() != other_value.to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `self_value` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/api.rs:363:58 [INFO] [stderr] | [INFO] [stderr] 363 | if self_value.to_string() != other_value.to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `other_value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 57 | o.find("fields").map(|x| if x.is_object() { [INFO] [stderr] | _________________^ [INFO] [stderr] | |_________________| [INFO] [stderr] | || [INFO] [stderr] 58 | || x.as_object().map(|obj| for (key, value) in obj.iter() { [INFO] [stderr] 59 | || let arr: Vec = match value.as_str() { [INFO] [stderr] 60 | || Some(string) => string.split(',').map(|s| s.to_string()).collect(), [INFO] [stderr] ... || [INFO] [stderr] 67 | || error!("Query::from_params : No fields found in {:?}", x); [INFO] [stderr] 68 | || }); [INFO] [stderr] | ||__________________^- help: try this: `if let Some(x) = o.find("fields") { ... }` [INFO] [stderr] | |___________________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:58:21 [INFO] [stderr] | [INFO] [stderr] 58 | x.as_object().map(|obj| for (key, value) in obj.iter() { [INFO] [stderr] | _____________________^ [INFO] [stderr] | |_____________________| [INFO] [stderr] | || [INFO] [stderr] 59 | || let arr: Vec = match value.as_str() { [INFO] [stderr] 60 | || Some(string) => string.split(',').map(|s| s.to_string()).collect(), [INFO] [stderr] 61 | || None => Vec::::new(), [INFO] [stderr] ... || [INFO] [stderr] 64 | || [INFO] [stderr] 65 | || }); [INFO] [stderr] | ||______________________^- help: try this: `if let Some(obj) = x.as_object() { ... }` [INFO] [stderr] | |_______________________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/api.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | !self.errors.is_none() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.errors.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/api.rs:177:9 [INFO] [stderr] | [INFO] [stderr] 177 | !self.errors.is_none() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.errors.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/api.rs:180:9 [INFO] [stderr] | [INFO] [stderr] 180 | !self.included.is_none() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.included.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/api.rs:183:9 [INFO] [stderr] | [INFO] [stderr] 183 | !self.data.is_none() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self.data.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/api.rs:203:9 [INFO] [stderr] | [INFO] [stderr] 203 | / match self.validate() { [INFO] [stderr] 204 | | Some(_) => false, [INFO] [stderr] 205 | | None => true, [INFO] [stderr] 206 | | } [INFO] [stderr] | |_________^ help: try this: `self.validate().is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/api.rs:363:32 [INFO] [stderr] | [INFO] [stderr] 363 | if self_value.to_string() != other_value.to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `self_value` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/api.rs:363:58 [INFO] [stderr] | [INFO] [stderr] 363 | if self_value.to_string() != other_value.to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `other_value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 57 | o.find("fields").map(|x| if x.is_object() { [INFO] [stderr] | _________________^ [INFO] [stderr] | |_________________| [INFO] [stderr] | || [INFO] [stderr] 58 | || x.as_object().map(|obj| for (key, value) in obj.iter() { [INFO] [stderr] 59 | || let arr: Vec = match value.as_str() { [INFO] [stderr] 60 | || Some(string) => string.split(',').map(|s| s.to_string()).collect(), [INFO] [stderr] ... || [INFO] [stderr] 67 | || error!("Query::from_params : No fields found in {:?}", x); [INFO] [stderr] 68 | || }); [INFO] [stderr] | ||__________________^- help: try this: `if let Some(x) = o.find("fields") { ... }` [INFO] [stderr] | |___________________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:58:21 [INFO] [stderr] | [INFO] [stderr] 58 | x.as_object().map(|obj| for (key, value) in obj.iter() { [INFO] [stderr] | _____________________^ [INFO] [stderr] | |_____________________| [INFO] [stderr] | || [INFO] [stderr] 59 | || let arr: Vec = match value.as_str() { [INFO] [stderr] 60 | || Some(string) => string.split(',').map(|s| s.to_string()).collect(), [INFO] [stderr] 61 | || None => Vec::::new(), [INFO] [stderr] ... || [INFO] [stderr] 64 | || [INFO] [stderr] 65 | || }); [INFO] [stderr] | ||______________________^- help: try this: `if let Some(obj) = x.as_object() { ... }` [INFO] [stderr] | |_______________________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 14.96s [INFO] running `"docker" "inspect" "8aebe90b6288571a10dae98cd1ff4d73b7e7aabc70afd9d7be59024084c58bc6"` [INFO] running `"docker" "rm" "-f" "8aebe90b6288571a10dae98cd1ff4d73b7e7aabc70afd9d7be59024084c58bc6"` [INFO] [stdout] 8aebe90b6288571a10dae98cd1ff4d73b7e7aabc70afd9d7be59024084c58bc6