[INFO] crate task_kit 0.2.0 is already in cache [INFO] extracting crate task_kit 0.2.0 into work/ex/clippy-test-run/sources/stable/reg/task_kit/0.2.0 [INFO] extracting crate task_kit 0.2.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/task_kit/0.2.0 [INFO] validating manifest of task_kit-0.2.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 task_kit-0.2.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 task_kit-0.2.0 [INFO] finished frobbing task_kit-0.2.0 [INFO] frobbed toml for task_kit-0.2.0 written to work/ex/clippy-test-run/sources/stable/reg/task_kit/0.2.0/Cargo.toml [INFO] started frobbing task_kit-0.2.0 [INFO] finished frobbing task_kit-0.2.0 [INFO] frobbed toml for task_kit-0.2.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/task_kit/0.2.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 task_kit-0.2.0 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/reg/task_kit/0.2.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] bbbdf04b69df6ba958c1bce8285ab6699a076553304fcf24640542a190de9f80 [INFO] running `"docker" "start" "-a" "bbbdf04b69df6ba958c1bce8285ab6699a076553304fcf24640542a190de9f80"` [INFO] [stderr] Checking task_kit v0.2.0 (/opt/crater/workdir) [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/runner/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | mod runner; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/task/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | mod task; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/runner/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | mod runner; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/task/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | mod task; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `runner::runner::Runner` [INFO] [stderr] --> src/runner/runner.rs:23:3 [INFO] [stderr] | [INFO] [stderr] 23 | / pub fn new() -> Self { [INFO] [stderr] 24 | | Self::with_worker_count(num_cpus::get() + 1) [INFO] [stderr] 25 | | } [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] 16 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `runner::task_queue_set::TaskQueueSet` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/runner/task_queue_set.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | / impl TaskQueueSet { [INFO] [stderr] 11 | | pub fn new() -> Self { [INFO] [stderr] 12 | | Self::default() [INFO] [stderr] 13 | | } [INFO] [stderr] ... | [INFO] [stderr] 44 | | } [INFO] [stderr] 45 | | } [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: item `runner::task_queue::TaskQueue` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/runner/task_queue.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / impl TaskQueue { [INFO] [stderr] 9 | | pub fn new() -> Self { [INFO] [stderr] 10 | | Self::default() [INFO] [stderr] 11 | | } [INFO] [stderr] ... | [INFO] [stderr] 43 | | } [INFO] [stderr] 44 | | } [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: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/runner/worker.rs:14:31 [INFO] [stderr] | [INFO] [stderr] 14 | let is_running = Arc::new(Mutex::new(true)); [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: length comparison to zero [INFO] [stderr] --> src/runner/worker.rs:86:8 [INFO] [stderr] | [INFO] [stderr] 86 | if tasks.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!tasks.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | / if let &State::Pending = self { [INFO] [stderr] 16 | | return true; [INFO] [stderr] 17 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 15 | if let State::Pending = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | / if let &State::Resolve(_) = self { [INFO] [stderr] 23 | | return true; [INFO] [stderr] 24 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 22 | if let State::Resolve(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | / if let &State::Resolved = self { [INFO] [stderr] 30 | | return true; [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 29 | if let State::Resolved = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | / if let &State::Reject(_) = self { [INFO] [stderr] 37 | | return true; [INFO] [stderr] 38 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 36 | if let State::Reject(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | / if let &State::Rejected = self { [INFO] [stderr] 44 | | return true; [INFO] [stderr] 45 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 43 | if let State::Rejected = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | / match self { [INFO] [stderr] 67 | | &State::Pending => State::Pending, [INFO] [stderr] 68 | | &State::Resolve(ref r) => State::Resolve(r), [INFO] [stderr] 69 | | &State::Resolved => State::Resolved, [INFO] [stderr] 70 | | &State::Reject(ref e) => State::Reject(e), [INFO] [stderr] 71 | | &State::Rejected => State::Rejected, [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 66 | match *self { [INFO] [stderr] 67 | State::Pending => State::Pending, [INFO] [stderr] 68 | State::Resolve(ref r) => State::Resolve(r), [INFO] [stderr] 69 | State::Resolved => State::Resolved, [INFO] [stderr] 70 | State::Reject(ref e) => State::Reject(e), [INFO] [stderr] 71 | State::Rejected => State::Rejected, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:76:5 [INFO] [stderr] | [INFO] [stderr] 76 | / match self { [INFO] [stderr] 77 | | &mut State::Pending => State::Pending, [INFO] [stderr] 78 | | &mut State::Resolve(ref mut r) => State::Resolve(r), [INFO] [stderr] 79 | | &mut State::Resolved => State::Resolved, [INFO] [stderr] 80 | | &mut State::Reject(ref mut e) => State::Reject(e), [INFO] [stderr] 81 | | &mut State::Rejected => State::Rejected, [INFO] [stderr] 82 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 76 | match *self { [INFO] [stderr] 77 | State::Pending => State::Pending, [INFO] [stderr] 78 | State::Resolve(ref mut r) => State::Resolve(r), [INFO] [stderr] 79 | State::Resolved => State::Resolved, [INFO] [stderr] 80 | State::Reject(ref mut e) => State::Reject(e), [INFO] [stderr] 81 | State::Rejected => State::Rejected, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:181:5 [INFO] [stderr] | [INFO] [stderr] 181 | / match self { [INFO] [stderr] 182 | | &mut State::Pending => State::Pending, [INFO] [stderr] 183 | | &mut State::Resolve(_) => mem::replace(self, State::Resolved), [INFO] [stderr] 184 | | &mut State::Resolved => State::Resolved, [INFO] [stderr] 185 | | &mut State::Reject(_) => mem::replace(self, State::Rejected), [INFO] [stderr] 186 | | &mut State::Rejected => State::Rejected, [INFO] [stderr] 187 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 181 | match *self { [INFO] [stderr] 182 | State::Pending => State::Pending, [INFO] [stderr] 183 | State::Resolve(_) => mem::replace(self, State::Resolved), [INFO] [stderr] 184 | State::Resolved => State::Resolved, [INFO] [stderr] 185 | State::Reject(_) => mem::replace(self, State::Rejected), [INFO] [stderr] 186 | State::Rejected => State::Rejected, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:274:13 [INFO] [stderr] | [INFO] [stderr] 274 | *self = match source { [INFO] [stderr] | _____________^ [INFO] [stderr] 275 | | &State::Pending => State::Pending, [INFO] [stderr] 276 | | &State::Resolve(ref r) => State::Resolve(r.clone()), [INFO] [stderr] 277 | | &State::Resolved => State::Resolved, [INFO] [stderr] 278 | | &State::Reject(ref e) => State::Reject(e.clone()), [INFO] [stderr] 279 | | &State::Rejected => State::Rejected, [INFO] [stderr] 280 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 274 | *self = match *source { [INFO] [stderr] 275 | State::Pending => State::Pending, [INFO] [stderr] 276 | State::Resolve(ref r) => State::Resolve(r.clone()), [INFO] [stderr] 277 | State::Resolved => State::Resolved, [INFO] [stderr] 278 | State::Reject(ref e) => State::Reject(e.clone()), [INFO] [stderr] 279 | State::Rejected => State::Rejected, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:286:5 [INFO] [stderr] | [INFO] [stderr] 286 | / match self { [INFO] [stderr] 287 | | &State::Pending => write!(f, "State::Pending"), [INFO] [stderr] 288 | | &State::Resolve(_) => write!(f, "State::Resolve"), [INFO] [stderr] 289 | | &State::Resolved => write!(f, "State::Resolved"), [INFO] [stderr] 290 | | &State::Reject(_) => write!(f, "State::Reject"), [INFO] [stderr] 291 | | &State::Rejected => write!(f, "State::Rejected"), [INFO] [stderr] 292 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 286 | match *self { [INFO] [stderr] 287 | State::Pending => write!(f, "State::Pending"), [INFO] [stderr] 288 | State::Resolve(_) => write!(f, "State::Resolve"), [INFO] [stderr] 289 | State::Resolved => write!(f, "State::Resolved"), [INFO] [stderr] 290 | State::Reject(_) => write!(f, "State::Reject"), [INFO] [stderr] 291 | State::Rejected => write!(f, "State::Rejected"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/task/task.rs:278:39 [INFO] [stderr] | [INFO] [stderr] 278 | self.then(move |r| State::Resolve(done(r))) [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 278 | self.then(move |r| State::Resolve(())) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/task/task.rs:304:41 [INFO] [stderr] | [INFO] [stderr] 304 | self.recover(move |e| State::Reject(catch(e))) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 304 | self.recover(move |e| State::Reject(())) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `runner::runner::Runner` [INFO] [stderr] --> src/runner/runner.rs:23:3 [INFO] [stderr] | [INFO] [stderr] 23 | / pub fn new() -> Self { [INFO] [stderr] 24 | | Self::with_worker_count(num_cpus::get() + 1) [INFO] [stderr] 25 | | } [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] 16 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `runner::task_queue_set::TaskQueueSet` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/runner/task_queue_set.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | / impl TaskQueueSet { [INFO] [stderr] 11 | | pub fn new() -> Self { [INFO] [stderr] 12 | | Self::default() [INFO] [stderr] 13 | | } [INFO] [stderr] ... | [INFO] [stderr] 44 | | } [INFO] [stderr] 45 | | } [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: item `runner::task_queue::TaskQueue` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/runner/task_queue.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / impl TaskQueue { [INFO] [stderr] 9 | | pub fn new() -> Self { [INFO] [stderr] 10 | | Self::default() [INFO] [stderr] 11 | | } [INFO] [stderr] ... | [INFO] [stderr] 43 | | } [INFO] [stderr] 44 | | } [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: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/runner/worker.rs:14:31 [INFO] [stderr] | [INFO] [stderr] 14 | let is_running = Arc::new(Mutex::new(true)); [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: length comparison to zero [INFO] [stderr] --> src/runner/worker.rs:86:8 [INFO] [stderr] | [INFO] [stderr] 86 | if tasks.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!tasks.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | / if let &State::Pending = self { [INFO] [stderr] 16 | | return true; [INFO] [stderr] 17 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 15 | if let State::Pending = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | / if let &State::Resolve(_) = self { [INFO] [stderr] 23 | | return true; [INFO] [stderr] 24 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 22 | if let State::Resolve(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | / if let &State::Resolved = self { [INFO] [stderr] 30 | | return true; [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 29 | if let State::Resolved = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | / if let &State::Reject(_) = self { [INFO] [stderr] 37 | | return true; [INFO] [stderr] 38 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 36 | if let State::Reject(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | / if let &State::Rejected = self { [INFO] [stderr] 44 | | return true; [INFO] [stderr] 45 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 43 | if let State::Rejected = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | / match self { [INFO] [stderr] 67 | | &State::Pending => State::Pending, [INFO] [stderr] 68 | | &State::Resolve(ref r) => State::Resolve(r), [INFO] [stderr] 69 | | &State::Resolved => State::Resolved, [INFO] [stderr] 70 | | &State::Reject(ref e) => State::Reject(e), [INFO] [stderr] 71 | | &State::Rejected => State::Rejected, [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 66 | match *self { [INFO] [stderr] 67 | State::Pending => State::Pending, [INFO] [stderr] 68 | State::Resolve(ref r) => State::Resolve(r), [INFO] [stderr] 69 | State::Resolved => State::Resolved, [INFO] [stderr] 70 | State::Reject(ref e) => State::Reject(e), [INFO] [stderr] 71 | State::Rejected => State::Rejected, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:76:5 [INFO] [stderr] | [INFO] [stderr] 76 | / match self { [INFO] [stderr] 77 | | &mut State::Pending => State::Pending, [INFO] [stderr] 78 | | &mut State::Resolve(ref mut r) => State::Resolve(r), [INFO] [stderr] 79 | | &mut State::Resolved => State::Resolved, [INFO] [stderr] 80 | | &mut State::Reject(ref mut e) => State::Reject(e), [INFO] [stderr] 81 | | &mut State::Rejected => State::Rejected, [INFO] [stderr] 82 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 76 | match *self { [INFO] [stderr] 77 | State::Pending => State::Pending, [INFO] [stderr] 78 | State::Resolve(ref mut r) => State::Resolve(r), [INFO] [stderr] 79 | State::Resolved => State::Resolved, [INFO] [stderr] 80 | State::Reject(ref mut e) => State::Reject(e), [INFO] [stderr] 81 | State::Rejected => State::Rejected, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:181:5 [INFO] [stderr] | [INFO] [stderr] 181 | / match self { [INFO] [stderr] 182 | | &mut State::Pending => State::Pending, [INFO] [stderr] 183 | | &mut State::Resolve(_) => mem::replace(self, State::Resolved), [INFO] [stderr] 184 | | &mut State::Resolved => State::Resolved, [INFO] [stderr] 185 | | &mut State::Reject(_) => mem::replace(self, State::Rejected), [INFO] [stderr] 186 | | &mut State::Rejected => State::Rejected, [INFO] [stderr] 187 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 181 | match *self { [INFO] [stderr] 182 | State::Pending => State::Pending, [INFO] [stderr] 183 | State::Resolve(_) => mem::replace(self, State::Resolved), [INFO] [stderr] 184 | State::Resolved => State::Resolved, [INFO] [stderr] 185 | State::Reject(_) => mem::replace(self, State::Rejected), [INFO] [stderr] 186 | State::Rejected => State::Rejected, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:274:13 [INFO] [stderr] | [INFO] [stderr] 274 | *self = match source { [INFO] [stderr] | _____________^ [INFO] [stderr] 275 | | &State::Pending => State::Pending, [INFO] [stderr] 276 | | &State::Resolve(ref r) => State::Resolve(r.clone()), [INFO] [stderr] 277 | | &State::Resolved => State::Resolved, [INFO] [stderr] 278 | | &State::Reject(ref e) => State::Reject(e.clone()), [INFO] [stderr] 279 | | &State::Rejected => State::Rejected, [INFO] [stderr] 280 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 274 | *self = match *source { [INFO] [stderr] 275 | State::Pending => State::Pending, [INFO] [stderr] 276 | State::Resolve(ref r) => State::Resolve(r.clone()), [INFO] [stderr] 277 | State::Resolved => State::Resolved, [INFO] [stderr] 278 | State::Reject(ref e) => State::Reject(e.clone()), [INFO] [stderr] 279 | State::Rejected => State::Rejected, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/task/state.rs:286:5 [INFO] [stderr] | [INFO] [stderr] 286 | / match self { [INFO] [stderr] 287 | | &State::Pending => write!(f, "State::Pending"), [INFO] [stderr] 288 | | &State::Resolve(_) => write!(f, "State::Resolve"), [INFO] [stderr] 289 | | &State::Resolved => write!(f, "State::Resolved"), [INFO] [stderr] 290 | | &State::Reject(_) => write!(f, "State::Reject"), [INFO] [stderr] 291 | | &State::Rejected => write!(f, "State::Rejected"), [INFO] [stderr] 292 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 286 | match *self { [INFO] [stderr] 287 | State::Pending => write!(f, "State::Pending"), [INFO] [stderr] 288 | State::Resolve(_) => write!(f, "State::Resolve"), [INFO] [stderr] 289 | State::Resolved => write!(f, "State::Resolved"), [INFO] [stderr] 290 | State::Reject(_) => write!(f, "State::Reject"), [INFO] [stderr] 291 | State::Rejected => write!(f, "State::Rejected"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/task/task.rs:278:39 [INFO] [stderr] | [INFO] [stderr] 278 | self.then(move |r| State::Resolve(done(r))) [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 278 | self.then(move |r| State::Resolve(())) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/task/task.rs:304:41 [INFO] [stderr] | [INFO] [stderr] 304 | self.recover(move |e| State::Reject(catch(e))) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 304 | self.recover(move |e| State::Reject(())) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.91s [INFO] running `"docker" "inspect" "bbbdf04b69df6ba958c1bce8285ab6699a076553304fcf24640542a190de9f80"` [INFO] running `"docker" "rm" "-f" "bbbdf04b69df6ba958c1bce8285ab6699a076553304fcf24640542a190de9f80"` [INFO] [stdout] bbbdf04b69df6ba958c1bce8285ab6699a076553304fcf24640542a190de9f80