[INFO] updating cached repository common-group/pg-dispatcher [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/common-group/pg-dispatcher [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/common-group/pg-dispatcher" "work/ex/clippy-test-run/sources/stable/gh/common-group/pg-dispatcher"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/common-group/pg-dispatcher'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/common-group/pg-dispatcher" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/common-group/pg-dispatcher"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/common-group/pg-dispatcher'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 65d5f229f0e3ed0de9304f6c7d4f5ef3276ab237 [INFO] sha for GitHub repo common-group/pg-dispatcher: 65d5f229f0e3ed0de9304f6c7d4f5ef3276ab237 [INFO] validating manifest of common-group/pg-dispatcher 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 common-group/pg-dispatcher 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 common-group/pg-dispatcher [INFO] finished frobbing common-group/pg-dispatcher [INFO] frobbed toml for common-group/pg-dispatcher written to work/ex/clippy-test-run/sources/stable/gh/common-group/pg-dispatcher/Cargo.toml [INFO] started frobbing common-group/pg-dispatcher [INFO] finished frobbing common-group/pg-dispatcher [INFO] frobbed toml for common-group/pg-dispatcher written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/common-group/pg-dispatcher/Cargo.toml [INFO] crate common-group/pg-dispatcher has a lockfile. skipping [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 common-group/pg-dispatcher against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/common-group/pg-dispatcher:/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] a65090327913e49fe5cc1a8846297383bd26b40ea32403365b9d32e488a92dde [INFO] running `"docker" "start" "-a" "a65090327913e49fe5cc1a8846297383bd26b40ea32403365b9d32e488a92dde"` [INFO] [stderr] Checking term_size v0.2.3 [INFO] [stderr] Compiling openssl v0.9.24 [INFO] [stderr] Checking redis v0.8.0 [INFO] [stderr] Checking postgres-protocol v0.3.2 [INFO] [stderr] Checking clap v2.19.3 [INFO] [stderr] Checking postgres-shared v0.4.2 [INFO] [stderr] Checking native-tls v0.1.5 [INFO] [stderr] Checking postgres v0.15.2 [INFO] [stderr] Checking pg-dispatcher v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused import: `super::*` [INFO] [stderr] --> src/cli.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | use super::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dispatcher.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | return handler; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `handler` [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/dispatcher.rs:191:13 [INFO] [stderr] | [INFO] [stderr] 191 | return handler; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `handler` [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/dispatcher.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | return handler; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `handler` [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/dispatcher.rs:191:13 [INFO] [stderr] | [INFO] [stderr] 191 | return handler; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `handler` [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: redundant closure found [INFO] [stderr] --> src/dispatcher.rs:49:22 [INFO] [stderr] | [INFO] [stderr] 49 | .map(|s| OsString::from(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `OsString::from` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/dispatcher.rs:130:33 [INFO] [stderr] | [INFO] [stderr] 130 | / match redis_conn.sadd(processing_set.clone(), key) { [INFO] [stderr] 131 | | Ok(1) => { [INFO] [stderr] 132 | | println!("[pg-dispatcher-consumer] start processing key {}", &key); [INFO] [stderr] 133 | | pool.execute(payload.to_string()) [INFO] [stderr] 134 | | }, [INFO] [stderr] 135 | | _ => {} [INFO] [stderr] 136 | | }; [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 130 | if let Ok(1) = redis_conn.sadd(processing_set.clone(), key) { [INFO] [stderr] 131 | println!("[pg-dispatcher-consumer] start processing key {}", &key); [INFO] [stderr] 132 | pool.execute(payload.to_string()) [INFO] [stderr] 133 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/dispatcher.rs:153:20 [INFO] [stderr] | [INFO] [stderr] 153 | if let Err(_) = pg_conn.execute(&format!("LISTEN {}", config.db_channel), &[]) { [INFO] [stderr] | _____________- ^^^^^^ [INFO] [stderr] 154 | | eprintln!("Failed to execute LISTEN command in database."); [INFO] [stderr] 155 | | exit(1) [INFO] [stderr] 156 | | } [INFO] [stderr] | |_____________- help: try this: `if pg_conn.execute(&format!("LISTEN {}", config.db_channel), &[]).is_err()` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/dispatcher.rs:168:21 [INFO] [stderr] | [INFO] [stderr] 168 | / match iter.next() { [INFO] [stderr] 169 | | [INFO] [stderr] 170 | | Ok(Some(notification)) => { [INFO] [stderr] 171 | | let key_value = base64::encode(¬ification.payload); [INFO] [stderr] ... | [INFO] [stderr] 186 | | _ => {} [INFO] [stderr] 187 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 168 | if let Ok(Some(notification)) = iter.next() { [INFO] [stderr] 169 | let key_value = base64::encode(¬ification.payload); [INFO] [stderr] 170 | println!("[pg-dispatcher-producer] found new notification {:?}", &key_value); [INFO] [stderr] 171 | let redis_conn = redis_client.get_connection().unwrap(); [INFO] [stderr] 172 | match redis_conn.sadd(pending_set.clone(), &key_value) { [INFO] [stderr] 173 | Ok(1) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicUsize instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/thread_pool.rs:37:37 [INFO] [stderr] | [INFO] [stderr] 37 | let idle_counter = Arc::new(Mutex::new(size)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mutex_atomic)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/thread_pool.rs:126:32 [INFO] [stderr] | [INFO] [stderr] 126 | if let Ok(_) = write_to_child { [INFO] [stderr] | _________________________- ^^^^^ [INFO] [stderr] 127 | | let exit_status = child.wait().unwrap(); [INFO] [stderr] 128 | | match exit_status.success() { [INFO] [stderr] 129 | | true => { [INFO] [stderr] ... | [INFO] [stderr] 155 | | eprintln!("couldn't write to child process stdin"); [INFO] [stderr] 156 | | } [INFO] [stderr] | |_________________________- help: try this: `if write_to_child.is_ok()` [INFO] [stderr] | [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/thread_pool.rs:128:29 [INFO] [stderr] | [INFO] [stderr] 128 | / match exit_status.success() { [INFO] [stderr] 129 | | true => { [INFO] [stderr] 130 | | println!( [INFO] [stderr] 131 | | "[worker-{}] Command succeded with status code {}.", [INFO] [stderr] ... | [INFO] [stderr] 139 | | } [INFO] [stderr] 140 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 128 | if exit_status.success() { [INFO] [stderr] 129 | println!( [INFO] [stderr] 130 | "[worker-{}] Command succeded with status code {}.", [INFO] [stderr] 131 | id, exit_status.code().unwrap()); [INFO] [stderr] 132 | } else { [INFO] [stderr] 133 | // TODO: ExitStatus.code() will return None if process was terminated by a signal. [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/dispatcher.rs:49:22 [INFO] [stderr] | [INFO] [stderr] 49 | .map(|s| OsString::from(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `OsString::from` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/dispatcher.rs:130:33 [INFO] [stderr] | [INFO] [stderr] 130 | / match redis_conn.sadd(processing_set.clone(), key) { [INFO] [stderr] 131 | | Ok(1) => { [INFO] [stderr] 132 | | println!("[pg-dispatcher-consumer] start processing key {}", &key); [INFO] [stderr] 133 | | pool.execute(payload.to_string()) [INFO] [stderr] 134 | | }, [INFO] [stderr] 135 | | _ => {} [INFO] [stderr] 136 | | }; [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 130 | if let Ok(1) = redis_conn.sadd(processing_set.clone(), key) { [INFO] [stderr] 131 | println!("[pg-dispatcher-consumer] start processing key {}", &key); [INFO] [stderr] 132 | pool.execute(payload.to_string()) [INFO] [stderr] 133 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/dispatcher.rs:153:20 [INFO] [stderr] | [INFO] [stderr] 153 | if let Err(_) = pg_conn.execute(&format!("LISTEN {}", config.db_channel), &[]) { [INFO] [stderr] | _____________- ^^^^^^ [INFO] [stderr] 154 | | eprintln!("Failed to execute LISTEN command in database."); [INFO] [stderr] 155 | | exit(1) [INFO] [stderr] 156 | | } [INFO] [stderr] | |_____________- help: try this: `if pg_conn.execute(&format!("LISTEN {}", config.db_channel), &[]).is_err()` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/dispatcher.rs:168:21 [INFO] [stderr] | [INFO] [stderr] 168 | / match iter.next() { [INFO] [stderr] 169 | | [INFO] [stderr] 170 | | Ok(Some(notification)) => { [INFO] [stderr] 171 | | let key_value = base64::encode(¬ification.payload); [INFO] [stderr] ... | [INFO] [stderr] 186 | | _ => {} [INFO] [stderr] 187 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 168 | if let Ok(Some(notification)) = iter.next() { [INFO] [stderr] 169 | let key_value = base64::encode(¬ification.payload); [INFO] [stderr] 170 | println!("[pg-dispatcher-producer] found new notification {:?}", &key_value); [INFO] [stderr] 171 | let redis_conn = redis_client.get_connection().unwrap(); [INFO] [stderr] 172 | match redis_conn.sadd(pending_set.clone(), &key_value) { [INFO] [stderr] 173 | Ok(1) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicUsize instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/thread_pool.rs:37:37 [INFO] [stderr] | [INFO] [stderr] 37 | let idle_counter = Arc::new(Mutex::new(size)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mutex_atomic)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/thread_pool.rs:126:32 [INFO] [stderr] | [INFO] [stderr] 126 | if let Ok(_) = write_to_child { [INFO] [stderr] | _________________________- ^^^^^ [INFO] [stderr] 127 | | let exit_status = child.wait().unwrap(); [INFO] [stderr] 128 | | match exit_status.success() { [INFO] [stderr] 129 | | true => { [INFO] [stderr] ... | [INFO] [stderr] 155 | | eprintln!("couldn't write to child process stdin"); [INFO] [stderr] 156 | | } [INFO] [stderr] | |_________________________- help: try this: `if write_to_child.is_ok()` [INFO] [stderr] | [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/thread_pool.rs:128:29 [INFO] [stderr] | [INFO] [stderr] 128 | / match exit_status.success() { [INFO] [stderr] 129 | | true => { [INFO] [stderr] 130 | | println!( [INFO] [stderr] 131 | | "[worker-{}] Command succeded with status code {}.", [INFO] [stderr] ... | [INFO] [stderr] 139 | | } [INFO] [stderr] 140 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 128 | if exit_status.success() { [INFO] [stderr] 129 | println!( [INFO] [stderr] 130 | "[worker-{}] Command succeded with status code {}.", [INFO] [stderr] 131 | id, exit_status.code().unwrap()); [INFO] [stderr] 132 | } else { [INFO] [stderr] 133 | // TODO: ExitStatus.code() will return None if process was terminated by a signal. [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 14.70s [INFO] running `"docker" "inspect" "a65090327913e49fe5cc1a8846297383bd26b40ea32403365b9d32e488a92dde"` [INFO] running `"docker" "rm" "-f" "a65090327913e49fe5cc1a8846297383bd26b40ea32403365b9d32e488a92dde"` [INFO] [stdout] a65090327913e49fe5cc1a8846297383bd26b40ea32403365b9d32e488a92dde