[INFO] crate statechart 0.0.8 is already in cache [INFO] extracting crate statechart 0.0.8 into work/ex/clippy-test-run/sources/stable/reg/statechart/0.0.8 [INFO] extracting crate statechart 0.0.8 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/statechart/0.0.8 [INFO] validating manifest of statechart-0.0.8 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 statechart-0.0.8 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 statechart-0.0.8 [INFO] finished frobbing statechart-0.0.8 [INFO] frobbed toml for statechart-0.0.8 written to work/ex/clippy-test-run/sources/stable/reg/statechart/0.0.8/Cargo.toml [INFO] started frobbing statechart-0.0.8 [INFO] finished frobbing statechart-0.0.8 [INFO] frobbed toml for statechart-0.0.8 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/statechart/0.0.8/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 statechart-0.0.8 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/statechart/0.0.8:/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] 3b50b48616a56f7b885d655a2d823d2bf03d7c44b7ca6df9722edd6bf402677f [INFO] running `"docker" "start" "-a" "3b50b48616a56f7b885d655a2d823d2bf03d7c44b7ca6df9722edd6bf402677f"` [INFO] [stderr] Checking statechart v0.0.8 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:423:13 [INFO] [stderr] | [INFO] [stderr] 423 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [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/lib.rs:920:20 [INFO] [stderr] | [INFO] [stderr] 920 | ActionFn { f: f } [INFO] [stderr] | ^^^^ help: replace it with: `f` [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/lib.rs:983:18 [INFO] [stderr] | [INFO] [stderr] 983 | CondFn { f: f } [INFO] [stderr] | ^^^^ help: replace it with: `f` [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/agent/mod.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | sender: sender, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `sender` [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/agent/mod.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | receiver: receiver, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `receiver` [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/agent/mod.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | ctx: ctx, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ctx` [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/agent/mod.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | it: it, [INFO] [stderr] | ^^^^^^ help: replace it with: `it` [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/lib.rs:423:13 [INFO] [stderr] | [INFO] [stderr] 423 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [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/lib.rs:920:20 [INFO] [stderr] | [INFO] [stderr] 920 | ActionFn { f: f } [INFO] [stderr] | ^^^^ help: replace it with: `f` [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/lib.rs:983:18 [INFO] [stderr] | [INFO] [stderr] 983 | CondFn { f: f } [INFO] [stderr] | ^^^^ help: replace it with: `f` [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/agent/mod.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | sender: sender, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `sender` [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/agent/mod.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | receiver: receiver, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `receiver` [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/agent/mod.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | ctx: ctx, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ctx` [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/agent/mod.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | it: it, [INFO] [stderr] | ^^^^^^ help: replace it with: `it` [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/lib.rs:908:9 [INFO] [stderr] | [INFO] [stderr] 908 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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/lib.rs:971:9 [INFO] [stderr] | [INFO] [stderr] 971 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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/lib.rs:908:9 [INFO] [stderr] | [INFO] [stderr] 908 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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/lib.rs:971:9 [INFO] [stderr] | [INFO] [stderr] 971 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: field is never used: `current_event` [INFO] [stderr] --> src/lib.rs:450:5 [INFO] [stderr] | [INFO] [stderr] 450 | current_event: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: use as_ref() instead [INFO] [stderr] --> src/lib.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | / match self.initial_label { [INFO] [stderr] 150 | | Some(ref l) => Some(l), [INFO] [stderr] 151 | | None => { [INFO] [stderr] 152 | | for ss in self.substates.iter() { [INFO] [stderr] ... | [INFO] [stderr] 156 | | } [INFO] [stderr] 157 | | } [INFO] [stderr] | |_________^ help: try this: `self.initial_label.as_ref()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_as_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_as_ref [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/lib.rs:152:17 [INFO] [stderr] | [INFO] [stderr] 152 | / for ss in self.substates.iter() { [INFO] [stderr] 153 | | return Some(ss.node().label()); [INFO] [stderr] 154 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: field is never used: `current_event` [INFO] [stderr] --> src/lib.rs:450:5 [INFO] [stderr] | [INFO] [stderr] 450 | current_event: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:325:9 [INFO] [stderr] | [INFO] [stderr] 325 | / match self { [INFO] [stderr] 326 | | &State::Atomic(ref a) => a.node(), [INFO] [stderr] 327 | | &State::Compound(ref c) => c.node(), [INFO] [stderr] 328 | | &State::Parallel(ref p) => p.node(), [INFO] [stderr] 329 | | &State::Final(ref f) => f.node(), [INFO] [stderr] 330 | | } [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] 325 | match *self { [INFO] [stderr] 326 | State::Atomic(ref a) => a.node(), [INFO] [stderr] 327 | State::Compound(ref c) => c.node(), [INFO] [stderr] 328 | State::Parallel(ref p) => p.node(), [INFO] [stderr] 329 | State::Final(ref f) => f.node(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:333:9 [INFO] [stderr] | [INFO] [stderr] 333 | / match self { [INFO] [stderr] 334 | | &State::Atomic(ref a) => Some(a.active_node()), [INFO] [stderr] 335 | | &State::Compound(ref c) => Some(c.active_node()), [INFO] [stderr] 336 | | &State::Parallel(ref p) => Some(p.active_node()), [INFO] [stderr] 337 | | &State::Final(_) => None, [INFO] [stderr] 338 | | } [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] 333 | match *self { [INFO] [stderr] 334 | State::Atomic(ref a) => Some(a.active_node()), [INFO] [stderr] 335 | State::Compound(ref c) => Some(c.active_node()), [INFO] [stderr] 336 | State::Parallel(ref p) => Some(p.active_node()), [INFO] [stderr] 337 | State::Final(_) => None, [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/lib.rs:340:24 [INFO] [stderr] | [INFO] [stderr] 340 | fn find(&self, id: &StateID) -> Option<&State> { [INFO] [stderr] | ^^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:343:29 [INFO] [stderr] | [INFO] [stderr] 343 | fn find_from(&self, id: &StateID, depth: usize) -> Option<&State> { [INFO] [stderr] | ^^^^^^^^ [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:347:18 [INFO] [stderr] | [INFO] [stderr] 347 | let ss = match self { [INFO] [stderr] | __________________^ [INFO] [stderr] 348 | | &State::Atomic(_) => return None, [INFO] [stderr] 349 | | &State::Compound(ref c) => &c.substates, [INFO] [stderr] 350 | | &State::Parallel(ref p) => &p.substates, [INFO] [stderr] 351 | | &State::Final(_) => return None, [INFO] [stderr] 352 | | }; [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] 347 | let ss = match *self { [INFO] [stderr] 348 | State::Atomic(_) => return None, [INFO] [stderr] 349 | State::Compound(ref c) => &c.substates, [INFO] [stderr] 350 | State::Parallel(ref p) => &p.substates, [INFO] [stderr] 351 | State::Final(_) => return None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:363:9 [INFO] [stderr] | [INFO] [stderr] 363 | / match self { [INFO] [stderr] 364 | | &State::Atomic(_) => [].iter(), [INFO] [stderr] 365 | | &State::Compound(ref c) => c.substates.iter(), [INFO] [stderr] 366 | | &State::Parallel(ref p) => p.substates.iter(), [INFO] [stderr] 367 | | &State::Final(_) => [].iter(), [INFO] [stderr] 368 | | } [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] 363 | match *self { [INFO] [stderr] 364 | State::Atomic(_) => [].iter(), [INFO] [stderr] 365 | State::Compound(ref c) => c.substates.iter(), [INFO] [stderr] 366 | State::Parallel(ref p) => p.substates.iter(), [INFO] [stderr] 367 | State::Final(_) => [].iter(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:371:9 [INFO] [stderr] | [INFO] [stderr] 371 | / match self { [INFO] [stderr] 372 | | &mut State::Atomic(_) => [].iter_mut(), [INFO] [stderr] 373 | | &mut State::Compound(ref mut c) => c.substates.iter_mut(), [INFO] [stderr] 374 | | &mut State::Parallel(ref mut p) => p.substates.iter_mut(), [INFO] [stderr] 375 | | &mut State::Final(_) => [].iter_mut(), [INFO] [stderr] 376 | | } [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] 371 | match *self { [INFO] [stderr] 372 | State::Atomic(_) => [].iter_mut(), [INFO] [stderr] 373 | State::Compound(ref mut c) => c.substates.iter_mut(), [INFO] [stderr] 374 | State::Parallel(ref mut p) => p.substates.iter_mut(), [INFO] [stderr] 375 | State::Final(_) => [].iter_mut(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:379:9 [INFO] [stderr] | [INFO] [stderr] 379 | / match self { [INFO] [stderr] 380 | | &mut State::Atomic(ref mut a) => a.parent = Some(parent), [INFO] [stderr] 381 | | &mut State::Compound(ref mut c) => c.parent = Some(parent), [INFO] [stderr] 382 | | &mut State::Parallel(ref mut p) => p.parent = Some(parent), [INFO] [stderr] 383 | | &mut State::Final(ref mut f) => f.parent = Some(parent), [INFO] [stderr] 384 | | } [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] 379 | match *self { [INFO] [stderr] 380 | State::Atomic(ref mut a) => a.parent = Some(parent), [INFO] [stderr] 381 | State::Compound(ref mut c) => c.parent = Some(parent), [INFO] [stderr] 382 | State::Parallel(ref mut p) => p.parent = Some(parent), [INFO] [stderr] 383 | State::Final(ref mut f) => f.parent = Some(parent), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:388:13 [INFO] [stderr] | [INFO] [stderr] 388 | / match st { [INFO] [stderr] 389 | | &mut State::Atomic(ref mut a) => { [INFO] [stderr] 390 | | a.id = id; [INFO] [stderr] 391 | | return; [INFO] [stderr] ... | [INFO] [stderr] 398 | | &mut State::Parallel(ref mut p) => p.id = id.clone(), [INFO] [stderr] 399 | | } [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] 388 | match *st { [INFO] [stderr] 389 | State::Atomic(ref mut a) => { [INFO] [stderr] 390 | a.id = id; [INFO] [stderr] 391 | return; [INFO] [stderr] 392 | } [INFO] [stderr] 393 | State::Final(ref mut f) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the variable `i` is used as a loop counter. Consider using `for (i, item) in st.substates_mut().enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:402:19 [INFO] [stderr] | [INFO] [stderr] 402 | for ss in st.substates_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: use as_ref() instead [INFO] [stderr] --> src/lib.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | / match self.initial_label { [INFO] [stderr] 150 | | Some(ref l) => Some(l), [INFO] [stderr] 151 | | None => { [INFO] [stderr] 152 | | for ss in self.substates.iter() { [INFO] [stderr] ... | [INFO] [stderr] 156 | | } [INFO] [stderr] 157 | | } [INFO] [stderr] | |_________^ help: try this: `self.initial_label.as_ref()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_as_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_as_ref [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/lib.rs:152:17 [INFO] [stderr] | [INFO] [stderr] 152 | / for ss in self.substates.iter() { [INFO] [stderr] 153 | | return Some(ss.node().label()); [INFO] [stderr] 154 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [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/lib.rs:441:35 [INFO] [stderr] | [INFO] [stderr] 441 | pub fn state_by_id(&self, id: &StateID) -> Option<&State> { [INFO] [stderr] | ^^^^^^^^ [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: you should consider adding a `Default` implementation for `Interpreter` [INFO] [stderr] --> src/lib.rs:457:5 [INFO] [stderr] | [INFO] [stderr] 457 | / pub fn new() -> Interpreter { [INFO] [stderr] 458 | | Interpreter { [INFO] [stderr] 459 | | vars: Object::new(), [INFO] [stderr] 460 | | events: EventQueue::new(), [INFO] [stderr] ... | [INFO] [stderr] 466 | | } [INFO] [stderr] 467 | | } [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] 456 | impl Default for Interpreter { [INFO] [stderr] 457 | fn default() -> Self { [INFO] [stderr] 458 | Self::new() [INFO] [stderr] 459 | } [INFO] [stderr] 460 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:325:9 [INFO] [stderr] | [INFO] [stderr] 325 | / match self { [INFO] [stderr] 326 | | &State::Atomic(ref a) => a.node(), [INFO] [stderr] 327 | | &State::Compound(ref c) => c.node(), [INFO] [stderr] 328 | | &State::Parallel(ref p) => p.node(), [INFO] [stderr] 329 | | &State::Final(ref f) => f.node(), [INFO] [stderr] 330 | | } [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] 325 | match *self { [INFO] [stderr] 326 | State::Atomic(ref a) => a.node(), [INFO] [stderr] 327 | State::Compound(ref c) => c.node(), [INFO] [stderr] 328 | State::Parallel(ref p) => p.node(), [INFO] [stderr] 329 | State::Final(ref f) => f.node(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:333:9 [INFO] [stderr] | [INFO] [stderr] 333 | / match self { [INFO] [stderr] 334 | | &State::Atomic(ref a) => Some(a.active_node()), [INFO] [stderr] 335 | | &State::Compound(ref c) => Some(c.active_node()), [INFO] [stderr] 336 | | &State::Parallel(ref p) => Some(p.active_node()), [INFO] [stderr] 337 | | &State::Final(_) => None, [INFO] [stderr] 338 | | } [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] 333 | match *self { [INFO] [stderr] 334 | State::Atomic(ref a) => Some(a.active_node()), [INFO] [stderr] 335 | State::Compound(ref c) => Some(c.active_node()), [INFO] [stderr] 336 | State::Parallel(ref p) => Some(p.active_node()), [INFO] [stderr] 337 | State::Final(_) => None, [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/lib.rs:340:24 [INFO] [stderr] | [INFO] [stderr] 340 | fn find(&self, id: &StateID) -> Option<&State> { [INFO] [stderr] | ^^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:343:29 [INFO] [stderr] | [INFO] [stderr] 343 | fn find_from(&self, id: &StateID, depth: usize) -> Option<&State> { [INFO] [stderr] | ^^^^^^^^ [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:347:18 [INFO] [stderr] | [INFO] [stderr] 347 | let ss = match self { [INFO] [stderr] | __________________^ [INFO] [stderr] 348 | | &State::Atomic(_) => return None, [INFO] [stderr] 349 | | &State::Compound(ref c) => &c.substates, [INFO] [stderr] 350 | | &State::Parallel(ref p) => &p.substates, [INFO] [stderr] 351 | | &State::Final(_) => return None, [INFO] [stderr] 352 | | }; [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] 347 | let ss = match *self { [INFO] [stderr] 348 | State::Atomic(_) => return None, [INFO] [stderr] 349 | State::Compound(ref c) => &c.substates, [INFO] [stderr] 350 | State::Parallel(ref p) => &p.substates, [INFO] [stderr] 351 | State::Final(_) => return None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:363:9 [INFO] [stderr] | [INFO] [stderr] 363 | / match self { [INFO] [stderr] 364 | | &State::Atomic(_) => [].iter(), [INFO] [stderr] 365 | | &State::Compound(ref c) => c.substates.iter(), [INFO] [stderr] 366 | | &State::Parallel(ref p) => p.substates.iter(), [INFO] [stderr] 367 | | &State::Final(_) => [].iter(), [INFO] [stderr] 368 | | } [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] 363 | match *self { [INFO] [stderr] 364 | State::Atomic(_) => [].iter(), [INFO] [stderr] 365 | State::Compound(ref c) => c.substates.iter(), [INFO] [stderr] 366 | State::Parallel(ref p) => p.substates.iter(), [INFO] [stderr] 367 | State::Final(_) => [].iter(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:371:9 [INFO] [stderr] | [INFO] [stderr] 371 | / match self { [INFO] [stderr] 372 | | &mut State::Atomic(_) => [].iter_mut(), [INFO] [stderr] 373 | | &mut State::Compound(ref mut c) => c.substates.iter_mut(), [INFO] [stderr] 374 | | &mut State::Parallel(ref mut p) => p.substates.iter_mut(), [INFO] [stderr] 375 | | &mut State::Final(_) => [].iter_mut(), [INFO] [stderr] 376 | | } [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] 371 | match *self { [INFO] [stderr] 372 | State::Atomic(_) => [].iter_mut(), [INFO] [stderr] 373 | State::Compound(ref mut c) => c.substates.iter_mut(), [INFO] [stderr] 374 | State::Parallel(ref mut p) => p.substates.iter_mut(), [INFO] [stderr] 375 | State::Final(_) => [].iter_mut(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:379:9 [INFO] [stderr] | [INFO] [stderr] 379 | / match self { [INFO] [stderr] 380 | | &mut State::Atomic(ref mut a) => a.parent = Some(parent), [INFO] [stderr] 381 | | &mut State::Compound(ref mut c) => c.parent = Some(parent), [INFO] [stderr] 382 | | &mut State::Parallel(ref mut p) => p.parent = Some(parent), [INFO] [stderr] 383 | | &mut State::Final(ref mut f) => f.parent = Some(parent), [INFO] [stderr] 384 | | } [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] 379 | match *self { [INFO] [stderr] 380 | State::Atomic(ref mut a) => a.parent = Some(parent), [INFO] [stderr] 381 | State::Compound(ref mut c) => c.parent = Some(parent), [INFO] [stderr] 382 | State::Parallel(ref mut p) => p.parent = Some(parent), [INFO] [stderr] 383 | State::Final(ref mut f) => f.parent = Some(parent), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:388:13 [INFO] [stderr] | [INFO] [stderr] 388 | / match st { [INFO] [stderr] 389 | | &mut State::Atomic(ref mut a) => { [INFO] [stderr] 390 | | a.id = id; [INFO] [stderr] 391 | | return; [INFO] [stderr] ... | [INFO] [stderr] 398 | | &mut State::Parallel(ref mut p) => p.id = id.clone(), [INFO] [stderr] 399 | | } [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] 388 | match *st { [INFO] [stderr] 389 | State::Atomic(ref mut a) => { [INFO] [stderr] 390 | a.id = id; [INFO] [stderr] 391 | return; [INFO] [stderr] 392 | } [INFO] [stderr] 393 | State::Final(ref mut f) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the variable `i` is used as a loop counter. Consider using `for (i, item) in st.substates_mut().enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:402:19 [INFO] [stderr] | [INFO] [stderr] 402 | for ss in st.substates_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [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/lib.rs:441:35 [INFO] [stderr] | [INFO] [stderr] 441 | pub fn state_by_id(&self, id: &StateID) -> Option<&State> { [INFO] [stderr] | ^^^^^^^^ [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: you should consider adding a `Default` implementation for `Interpreter` [INFO] [stderr] --> src/lib.rs:457:5 [INFO] [stderr] | [INFO] [stderr] 457 | / pub fn new() -> Interpreter { [INFO] [stderr] 458 | | Interpreter { [INFO] [stderr] 459 | | vars: Object::new(), [INFO] [stderr] 460 | | events: EventQueue::new(), [INFO] [stderr] ... | [INFO] [stderr] 466 | | } [INFO] [stderr] 467 | | } [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] 456 | impl Default for Interpreter { [INFO] [stderr] 457 | fn default() -> Self { [INFO] [stderr] 458 | Self::new() [INFO] [stderr] 459 | } [INFO] [stderr] 460 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:519:13 [INFO] [stderr] | [INFO] [stderr] 519 | / if let &State::Final(ref f) = st { [INFO] [stderr] 520 | | for on_exit in f.on_exit() { [INFO] [stderr] 521 | | on_exit.actionable().apply(self)?; [INFO] [stderr] 522 | | } [INFO] [stderr] 523 | | results.push(Status::Done(f.result.outputable().eval(self))); [INFO] [stderr] 524 | | continue; [INFO] [stderr] 525 | | } [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] 519 | if let State::Final(ref f) = *st { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:537:65 [INFO] [stderr] | [INFO] [stderr] 537 | return Ok(results.into_iter().fold(Status::Blocked, |agg, val| max(agg, val))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `max` [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: redundant closure found [INFO] [stderr] --> src/lib.rs:559:65 [INFO] [stderr] | [INFO] [stderr] 559 | return Ok(results.into_iter().fold(Status::Blocked, |agg, val| max(agg, val))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `max` [INFO] [stderr] | [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:576:20 [INFO] [stderr] | [INFO] [stderr] 576 | } else if let &State::Parallel(ref p) = st { [INFO] [stderr] | ____________________^ [INFO] [stderr] 577 | | for sub_st in p.substates.iter() { [INFO] [stderr] 578 | | let status = self.microstep(ctx, [INFO] [stderr] 579 | | st, [INFO] [stderr] ... | [INFO] [stderr] 585 | | } [INFO] [stderr] 586 | | } [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] 576 | } else if let State::Parallel(ref p) = *st { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:589:54 [INFO] [stderr] | [INFO] [stderr] 589 | Ok(results.into_iter().fold(Status::Blocked, |agg, val| max(agg, val))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `max` [INFO] [stderr] | [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:519:13 [INFO] [stderr] | [INFO] [stderr] 519 | / if let &State::Final(ref f) = st { [INFO] [stderr] 520 | | for on_exit in f.on_exit() { [INFO] [stderr] 521 | | on_exit.actionable().apply(self)?; [INFO] [stderr] 522 | | } [INFO] [stderr] 523 | | results.push(Status::Done(f.result.outputable().eval(self))); [INFO] [stderr] 524 | | continue; [INFO] [stderr] 525 | | } [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] 519 | if let State::Final(ref f) = *st { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:537:65 [INFO] [stderr] | [INFO] [stderr] 537 | return Ok(results.into_iter().fold(Status::Blocked, |agg, val| max(agg, val))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `max` [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: redundant closure found [INFO] [stderr] --> src/lib.rs:559:65 [INFO] [stderr] | [INFO] [stderr] 559 | return Ok(results.into_iter().fold(Status::Blocked, |agg, val| max(agg, val))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `max` [INFO] [stderr] | [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:576:20 [INFO] [stderr] | [INFO] [stderr] 576 | } else if let &State::Parallel(ref p) = st { [INFO] [stderr] | ____________________^ [INFO] [stderr] 577 | | for sub_st in p.substates.iter() { [INFO] [stderr] 578 | | let status = self.microstep(ctx, [INFO] [stderr] 579 | | st, [INFO] [stderr] ... | [INFO] [stderr] 585 | | } [INFO] [stderr] 586 | | } [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] 576 | } else if let State::Parallel(ref p) = *st { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:589:54 [INFO] [stderr] | [INFO] [stderr] 589 | Ok(results.into_iter().fold(Status::Blocked, |agg, val| max(agg, val))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `max` [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:708:34 [INFO] [stderr] | [INFO] [stderr] 708 | pub fn common_ancestor(from: &StateID, to: &StateID) -> StateID { [INFO] [stderr] | ^^^^^^^^ [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/lib.rs:708:48 [INFO] [stderr] | [INFO] [stderr] 708 | pub fn common_ancestor(from: &StateID, to: &StateID) -> StateID { [INFO] [stderr] | ^^^^^^^^ [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/lib.rs:722:30 [INFO] [stderr] | [INFO] [stderr] 722 | pub fn exit_states(from: &StateID, to: &StateID) -> Vec { [INFO] [stderr] | ^^^^^^^^ [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/lib.rs:722:44 [INFO] [stderr] | [INFO] [stderr] 722 | pub fn exit_states(from: &StateID, to: &StateID) -> Vec { [INFO] [stderr] | ^^^^^^^^ [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/lib.rs:729:13 [INFO] [stderr] | [INFO] [stderr] 729 | i = i - 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i -= 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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:733:31 [INFO] [stderr] | [INFO] [stderr] 733 | pub fn entry_states(from: &StateID, to: &StateID) -> Vec { [INFO] [stderr] | ^^^^^^^^ [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/lib.rs:733:45 [INFO] [stderr] | [INFO] [stderr] 733 | pub fn entry_states(from: &StateID, to: &StateID) -> Vec { [INFO] [stderr] | ^^^^^^^^ [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] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:737:25 [INFO] [stderr] | [INFO] [stderr] 737 | let id = to[0..i + 1].to_vec(); [INFO] [stderr] | ^^^^^^^^ help: use: `0..=i` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:769:9 [INFO] [stderr] | [INFO] [stderr] 769 | / match self { [INFO] [stderr] 770 | | &Status::New => 1, [INFO] [stderr] 771 | | &Status::Runnable => 2, [INFO] [stderr] 772 | | &Status::Blocked => 0, [INFO] [stderr] 773 | | &Status::TerminatedParallel => -1, [INFO] [stderr] 774 | | &Status::Done(_) => 3, [INFO] [stderr] 775 | | } [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] 769 | match *self { [INFO] [stderr] 770 | Status::New => 1, [INFO] [stderr] 771 | Status::Runnable => 2, [INFO] [stderr] 772 | Status::Blocked => 0, [INFO] [stderr] 773 | Status::TerminatedParallel => -1, [INFO] [stderr] 774 | Status::Done(_) => 3, [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/lib.rs:708:34 [INFO] [stderr] | [INFO] [stderr] 708 | pub fn common_ancestor(from: &StateID, to: &StateID) -> StateID { [INFO] [stderr] | ^^^^^^^^ [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/lib.rs:708:48 [INFO] [stderr] | [INFO] [stderr] 708 | pub fn common_ancestor(from: &StateID, to: &StateID) -> StateID { [INFO] [stderr] | ^^^^^^^^ [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/lib.rs:722:30 [INFO] [stderr] | [INFO] [stderr] 722 | pub fn exit_states(from: &StateID, to: &StateID) -> Vec { [INFO] [stderr] | ^^^^^^^^ [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/lib.rs:722:44 [INFO] [stderr] | [INFO] [stderr] 722 | pub fn exit_states(from: &StateID, to: &StateID) -> Vec { [INFO] [stderr] | ^^^^^^^^ [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/lib.rs:729:13 [INFO] [stderr] | [INFO] [stderr] 729 | i = i - 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i -= 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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:733:31 [INFO] [stderr] | [INFO] [stderr] 733 | pub fn entry_states(from: &StateID, to: &StateID) -> Vec { [INFO] [stderr] | ^^^^^^^^ [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/lib.rs:733:45 [INFO] [stderr] | [INFO] [stderr] 733 | pub fn entry_states(from: &StateID, to: &StateID) -> Vec { [INFO] [stderr] | ^^^^^^^^ [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: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:737:25 [INFO] [stderr] | [INFO] [stderr] 737 | let id = to[0..i + 1].to_vec(); [INFO] [stderr] | ^^^^^^^^ help: use: `0..=i` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:769:9 [INFO] [stderr] | [INFO] [stderr] 769 | / match self { [INFO] [stderr] 770 | | &Status::New => 1, [INFO] [stderr] 771 | | &Status::Runnable => 2, [INFO] [stderr] 772 | | &Status::Blocked => 0, [INFO] [stderr] 773 | | &Status::TerminatedParallel => -1, [INFO] [stderr] 774 | | &Status::Done(_) => 3, [INFO] [stderr] 775 | | } [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] 769 | match *self { [INFO] [stderr] 770 | Status::New => 1, [INFO] [stderr] 771 | Status::Runnable => 2, [INFO] [stderr] 772 | Status::Blocked => 0, [INFO] [stderr] 773 | Status::TerminatedParallel => -1, [INFO] [stderr] 774 | Status::Done(_) => 3, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/lib.rs:881:9 [INFO] [stderr] | [INFO] [stderr] 881 | / if let &Some(ref action) = &self.otherwise { [INFO] [stderr] 882 | | return action.actionable().apply(it); [INFO] [stderr] 883 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 881 | if let Some(ref action) = self.otherwise { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:935:9 [INFO] [stderr] | [INFO] [stderr] 935 | / match self { [INFO] [stderr] 936 | | &Action::Log(ref a) => a, [INFO] [stderr] 937 | | &Action::Raise(ref s) => s, [INFO] [stderr] 938 | | &Action::Assign(ref a) => a, [INFO] [stderr] 939 | | &Action::Choose(ref c) => c, [INFO] [stderr] 940 | | &Action::Fn(ref f) => f, [INFO] [stderr] 941 | | } [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] 935 | match *self { [INFO] [stderr] 936 | Action::Log(ref a) => a, [INFO] [stderr] 937 | Action::Raise(ref s) => s, [INFO] [stderr] 938 | Action::Assign(ref a) => a, [INFO] [stderr] 939 | Action::Choose(ref c) => c, [INFO] [stderr] 940 | Action::Fn(ref f) => f, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:996:9 [INFO] [stderr] | [INFO] [stderr] 996 | / match self { [INFO] [stderr] 997 | | &Condition::True(ref c) => c, [INFO] [stderr] 998 | | &Condition::Fn(ref f) => f, [INFO] [stderr] 999 | | } [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] 996 | match *self { [INFO] [stderr] 997 | Condition::True(ref c) => c, [INFO] [stderr] 998 | Condition::Fn(ref f) => f, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1039:9 [INFO] [stderr] | [INFO] [stderr] 1039 | / match self { [INFO] [stderr] 1040 | | &Output::Empty(ref o) => o, [INFO] [stderr] 1041 | | &Output::ValueOf(ref v) => v, [INFO] [stderr] 1042 | | } [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] 1039 | match *self { [INFO] [stderr] 1040 | Output::Empty(ref o) => o, [INFO] [stderr] 1041 | Output::ValueOf(ref v) => v, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/lib.rs:1059:5 [INFO] [stderr] | [INFO] [stderr] 1059 | / pub fn from_str(s: S) -> Value [INFO] [stderr] 1060 | | where S: Into [INFO] [stderr] 1061 | | { [INFO] [stderr] 1062 | | Value::String(s.into()) [INFO] [stderr] 1063 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `EventQueue` [INFO] [stderr] --> src/lib.rs:1076:5 [INFO] [stderr] | [INFO] [stderr] 1076 | / pub fn new() -> EventQueue { [INFO] [stderr] 1077 | | EventQueue(vec![]) [INFO] [stderr] 1078 | | } [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] 1073 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/lib.rs:881:9 [INFO] [stderr] | [INFO] [stderr] 881 | / if let &Some(ref action) = &self.otherwise { [INFO] [stderr] 882 | | return action.actionable().apply(it); [INFO] [stderr] 883 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 881 | if let Some(ref action) = self.otherwise { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/agent/mod.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | / match &status { [INFO] [stderr] 23 | | &Status::Done(_) => { [INFO] [stderr] 24 | | if !self.eos { [INFO] [stderr] 25 | | self.eos = true; [INFO] [stderr] ... | [INFO] [stderr] 42 | | _ => return Ok(Async::Ready(Some(status))), [INFO] [stderr] 43 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 22 | match status { [INFO] [stderr] 23 | Status::Done(_) => { [INFO] [stderr] 24 | if !self.eos { [INFO] [stderr] 25 | self.eos = true; [INFO] [stderr] 26 | return Ok(Async::Ready(Some(status))); [INFO] [stderr] 27 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:935:9 [INFO] [stderr] | [INFO] [stderr] 935 | / match self { [INFO] [stderr] 936 | | &Action::Log(ref a) => a, [INFO] [stderr] 937 | | &Action::Raise(ref s) => s, [INFO] [stderr] 938 | | &Action::Assign(ref a) => a, [INFO] [stderr] 939 | | &Action::Choose(ref c) => c, [INFO] [stderr] 940 | | &Action::Fn(ref f) => f, [INFO] [stderr] 941 | | } [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] 935 | match *self { [INFO] [stderr] 936 | Action::Log(ref a) => a, [INFO] [stderr] 937 | Action::Raise(ref s) => s, [INFO] [stderr] 938 | Action::Assign(ref a) => a, [INFO] [stderr] 939 | Action::Choose(ref c) => c, [INFO] [stderr] 940 | Action::Fn(ref f) => f, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:996:9 [INFO] [stderr] | [INFO] [stderr] 996 | / match self { [INFO] [stderr] 997 | | &Condition::True(ref c) => c, [INFO] [stderr] 998 | | &Condition::Fn(ref f) => f, [INFO] [stderr] 999 | | } [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] 996 | match *self { [INFO] [stderr] 997 | Condition::True(ref c) => c, [INFO] [stderr] 998 | Condition::Fn(ref f) => f, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:1039:9 [INFO] [stderr] | [INFO] [stderr] 1039 | / match self { [INFO] [stderr] 1040 | | &Output::Empty(ref o) => o, [INFO] [stderr] 1041 | | &Output::ValueOf(ref v) => v, [INFO] [stderr] 1042 | | } [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] 1039 | match *self { [INFO] [stderr] 1040 | Output::Empty(ref o) => o, [INFO] [stderr] 1041 | Output::ValueOf(ref v) => v, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/lib.rs:1059:5 [INFO] [stderr] | [INFO] [stderr] 1059 | / pub fn from_str(s: S) -> Value [INFO] [stderr] 1060 | | where S: Into [INFO] [stderr] 1061 | | { [INFO] [stderr] 1062 | | Value::String(s.into()) [INFO] [stderr] 1063 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `EventQueue` [INFO] [stderr] --> src/lib.rs:1076:5 [INFO] [stderr] | [INFO] [stderr] 1076 | / pub fn new() -> EventQueue { [INFO] [stderr] 1077 | | EventQueue(vec![]) [INFO] [stderr] 1078 | | } [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] 1073 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: Could not compile `statechart`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/agent/mod.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | / match &status { [INFO] [stderr] 23 | | &Status::Done(_) => { [INFO] [stderr] 24 | | if !self.eos { [INFO] [stderr] 25 | | self.eos = true; [INFO] [stderr] ... | [INFO] [stderr] 42 | | _ => return Ok(Async::Ready(Some(status))), [INFO] [stderr] 43 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 22 | match status { [INFO] [stderr] 23 | Status::Done(_) => { [INFO] [stderr] 24 | if !self.eos { [INFO] [stderr] 25 | self.eos = true; [INFO] [stderr] 26 | return Ok(Async::Ready(Some(status))); [INFO] [stderr] 27 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `statechart`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "3b50b48616a56f7b885d655a2d823d2bf03d7c44b7ca6df9722edd6bf402677f"` [INFO] running `"docker" "rm" "-f" "3b50b48616a56f7b885d655a2d823d2bf03d7c44b7ca6df9722edd6bf402677f"` [INFO] [stdout] 3b50b48616a56f7b885d655a2d823d2bf03d7c44b7ca6df9722edd6bf402677f