[INFO] crate tis-100 0.2.2 is already in cache [INFO] extracting crate tis-100 0.2.2 into work/ex/clippy-test-run/sources/stable/reg/tis-100/0.2.2 [INFO] extracting crate tis-100 0.2.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tis-100/0.2.2 [INFO] validating manifest of tis-100-0.2.2 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 tis-100-0.2.2 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 tis-100-0.2.2 [INFO] finished frobbing tis-100-0.2.2 [INFO] frobbed toml for tis-100-0.2.2 written to work/ex/clippy-test-run/sources/stable/reg/tis-100/0.2.2/Cargo.toml [INFO] started frobbing tis-100-0.2.2 [INFO] finished frobbing tis-100-0.2.2 [INFO] frobbed toml for tis-100-0.2.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tis-100/0.2.2/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 tis-100-0.2.2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/tis-100/0.2.2:/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] 178c419c4be5adc1a2ef442450ab1568bcd1eaa2cbacfa4ce8cbd8322ad00085 [INFO] running `"docker" "start" "-a" "178c419c4be5adc1a2ef442450ab1568bcd1eaa2cbacfa4ce8cbd8322ad00085"` [INFO] [stderr] Checking tis-100 v0.2.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/io.rs:226:13 [INFO] [stderr] | [INFO] [stderr] 226 | bus: bus, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `bus` [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/io.rs:227:13 [INFO] [stderr] | [INFO] [stderr] 227 | node: node, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `node` [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/image.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/image.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [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/image.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/image.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/image.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [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/image.rs:77:13 [INFO] [stderr] | [INFO] [stderr] 77 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spec.rs:194:25 [INFO] [stderr] | [INFO] [stderr] 194 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/spec.rs:195:25 [INFO] [stderr] | [INFO] [stderr] 195 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/spec.rs:196:25 [INFO] [stderr] | [INFO] [stderr] 196 | node: node, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `node` [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/spec.rs:197:25 [INFO] [stderr] | [INFO] [stderr] 197 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spec.rs:206:13 [INFO] [stderr] | [INFO] [stderr] 206 | save: save, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `save` [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/spec.rs:207:13 [INFO] [stderr] | [INFO] [stderr] 207 | layout: layout, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `layout` [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/spec.rs:208:13 [INFO] [stderr] | [INFO] [stderr] 208 | streams: streams, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `streams` [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/machine.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | cpu: cpu, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cpu` [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/machine.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | tests: tests, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `tests` [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/io.rs:226:13 [INFO] [stderr] | [INFO] [stderr] 226 | bus: bus, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `bus` [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/io.rs:227:13 [INFO] [stderr] | [INFO] [stderr] 227 | node: node, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `node` [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/image.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/image.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [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/image.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/image.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/image.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [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/image.rs:77:13 [INFO] [stderr] | [INFO] [stderr] 77 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spec.rs:194:25 [INFO] [stderr] | [INFO] [stderr] 194 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/spec.rs:195:25 [INFO] [stderr] | [INFO] [stderr] 195 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/spec.rs:196:25 [INFO] [stderr] | [INFO] [stderr] 196 | node: node, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `node` [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/spec.rs:197:25 [INFO] [stderr] | [INFO] [stderr] 197 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spec.rs:206:13 [INFO] [stderr] | [INFO] [stderr] 206 | save: save, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `save` [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/spec.rs:207:13 [INFO] [stderr] | [INFO] [stderr] 207 | layout: layout, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `layout` [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/spec.rs:208:13 [INFO] [stderr] | [INFO] [stderr] 208 | streams: streams, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `streams` [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/machine.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | cpu: cpu, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cpu` [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/machine.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | tests: tests, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `tests` [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: this if statement can be collapsed [INFO] [stderr] --> src/node/exec.rs:229:9 [INFO] [stderr] | [INFO] [stderr] 229 | / if self.mode == Wrte { [INFO] [stderr] 230 | | if !io.is_blocked() { [INFO] [stderr] 231 | | self.mode = Run; [INFO] [stderr] 232 | | self.inc_pc(); [INFO] [stderr] 233 | | } [INFO] [stderr] 234 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 229 | if self.mode == Wrte && !io.is_blocked() { [INFO] [stderr] 230 | self.mode = Run; [INFO] [stderr] 231 | self.inc_pc(); [INFO] [stderr] 232 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/node/test.rs:70:16 [INFO] [stderr] | [INFO] [stderr] 70 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 71 | | if self.results.iter().all(|&(e, a)| e == a) { [INFO] [stderr] 72 | | Passed [INFO] [stderr] 73 | | } else { [INFO] [stderr] 74 | | Failed [INFO] [stderr] 75 | | } [INFO] [stderr] 76 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 70 | } else if self.results.iter().all(|&(e, a)| e == a) { [INFO] [stderr] 71 | Passed [INFO] [stderr] 72 | } else { [INFO] [stderr] 73 | Failed [INFO] [stderr] 74 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:13:26 [INFO] [stderr] | [INFO] [stderr] 13 | const SEED_RANDOM_EXEC: &'static str = "math.randomseed(os.time())"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:16:22 [INFO] [stderr] | [INFO] [stderr] 16 | const LAYOUT_TABLE: &'static str = "layout"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:17:19 [INFO] [stderr] | [INFO] [stderr] 17 | const LAYOUT_FN: &'static str = "get_layout"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:18:24 [INFO] [stderr] | [INFO] [stderr] 18 | const LAYOUT_FN_EXEC: &'static str = "layout = get_layout()"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:21:23 [INFO] [stderr] | [INFO] [stderr] 21 | const STREAMS_TABLE: &'static str = "streams"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:22:20 [INFO] [stderr] | [INFO] [stderr] 22 | const STREAMS_FN: &'static str = "get_streams"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:23:25 [INFO] [stderr] | [INFO] [stderr] 23 | const STREAMS_FN_EXEC: &'static str = "streams = get_streams()"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/node/exec.rs:229:9 [INFO] [stderr] | [INFO] [stderr] 229 | / if self.mode == Wrte { [INFO] [stderr] 230 | | if !io.is_blocked() { [INFO] [stderr] 231 | | self.mode = Run; [INFO] [stderr] 232 | | self.inc_pc(); [INFO] [stderr] 233 | | } [INFO] [stderr] 234 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 229 | if self.mode == Wrte && !io.is_blocked() { [INFO] [stderr] 230 | self.mode = Run; [INFO] [stderr] 231 | self.inc_pc(); [INFO] [stderr] 232 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/node/test.rs:70:16 [INFO] [stderr] | [INFO] [stderr] 70 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 71 | | if self.results.iter().all(|&(e, a)| e == a) { [INFO] [stderr] 72 | | Passed [INFO] [stderr] 73 | | } else { [INFO] [stderr] 74 | | Failed [INFO] [stderr] 75 | | } [INFO] [stderr] 76 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 70 | } else if self.results.iter().all(|&(e, a)| e == a) { [INFO] [stderr] 71 | Passed [INFO] [stderr] 72 | } else { [INFO] [stderr] 73 | Failed [INFO] [stderr] 74 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:13:26 [INFO] [stderr] | [INFO] [stderr] 13 | const SEED_RANDOM_EXEC: &'static str = "math.randomseed(os.time())"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:16:22 [INFO] [stderr] | [INFO] [stderr] 16 | const LAYOUT_TABLE: &'static str = "layout"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:17:19 [INFO] [stderr] | [INFO] [stderr] 17 | const LAYOUT_FN: &'static str = "get_layout"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:18:24 [INFO] [stderr] | [INFO] [stderr] 18 | const LAYOUT_FN_EXEC: &'static str = "layout = get_layout()"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:21:23 [INFO] [stderr] | [INFO] [stderr] 21 | const STREAMS_TABLE: &'static str = "streams"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:22:20 [INFO] [stderr] | [INFO] [stderr] 22 | const STREAMS_FN: &'static str = "get_streams"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/spec.rs:23:25 [INFO] [stderr] | [INFO] [stderr] 23 | const STREAMS_FN_EXEC: &'static str = "streams = get_streams()"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lex.rs:31:12 [INFO] [stderr] | [INFO] [stderr] 31 | if words.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!words.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: length comparison to zero [INFO] [stderr] --> src/lex.rs:51:16 [INFO] [stderr] | [INFO] [stderr] 51 | if word.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!word.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lex.rs:63:8 [INFO] [stderr] | [INFO] [stderr] 63 | if word.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!word.is_empty()` [INFO] [stderr] | [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/parse.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / match self { [INFO] [stderr] 26 | | &InvalidLabel => f.write_str("Invalid label"), [INFO] [stderr] 27 | | &UndefinedLabel(ref lbl) => f.write_fmt(format_args!("Undefined label: '{}'", lbl)), [INFO] [stderr] 28 | | &DuplicateLabel(ref lbl) => f.write_fmt(format_args!("Label is already defined: '{}'", lbl)), [INFO] [stderr] ... | [INFO] [stderr] 33 | | &TooManyOperands(ref ops) => f.write_fmt(format_args!("Too many operands: '{}'", ops)), [INFO] [stderr] 34 | | } [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] 25 | match *self { [INFO] [stderr] 26 | InvalidLabel => f.write_str("Invalid label"), [INFO] [stderr] 27 | UndefinedLabel(ref lbl) => f.write_fmt(format_args!("Undefined label: '{}'", lbl)), [INFO] [stderr] 28 | DuplicateLabel(ref lbl) => f.write_fmt(format_args!("Label is already defined: '{}'", lbl)), [INFO] [stderr] 29 | InvalidOpcode(ref op) => f.write_fmt(format_args!("Invalid opcode: '{}'", op)), [INFO] [stderr] 30 | InvalidExpression(ref expr) => f.write_fmt(format_args!("Invalid expression: '{}'", expr)), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parse.rs:79:9 [INFO] [stderr] | [INFO] [stderr] 79 | / if let &Some(Label(ref name, index)) = maybe_label { [INFO] [stderr] 80 | | if name.len() == 0 { [INFO] [stderr] 81 | | errors.push((line_num, InvalidLabel)); [INFO] [stderr] 82 | | } else if let None = label_map.get(name) { [INFO] [stderr] ... | [INFO] [stderr] 86 | | } [INFO] [stderr] 87 | | } [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] 79 | if let Some(Label(ref name, index)) = *maybe_label { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:80:16 [INFO] [stderr] | [INFO] [stderr] 80 | if name.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/parse.rs:82:27 [INFO] [stderr] | [INFO] [stderr] 82 | } else if let None = label_map.get(name) { [INFO] [stderr] | ____________________- ^^^^ [INFO] [stderr] 83 | | label_map.insert(name.clone(), index as isize); [INFO] [stderr] 84 | | } else { [INFO] [stderr] 85 | | errors.push((line_num, DuplicateLabel(name.clone()))); [INFO] [stderr] 86 | | } [INFO] [stderr] | |_____________- help: try this: `if label_map.get(name).is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:92:12 [INFO] [stderr] | [INFO] [stderr] 92 | if lexemes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!lexemes.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:100:8 [INFO] [stderr] | [INFO] [stderr] 100 | if errors.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!errors.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/parse.rs:129:23 [INFO] [stderr] | [INFO] [stderr] 129 | labels.get(label).ok_or(UndefinedLabel(label.to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| UndefinedLabel(label.to_string()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/parse.rs:134:8 [INFO] [stderr] | [INFO] [stderr] 134 | if operands.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `operands.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:145:8 [INFO] [stderr] | [INFO] [stderr] 145 | if operands.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `operands.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/parse.rs:154:8 [INFO] [stderr] | [INFO] [stderr] 154 | if operands.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `operands.is_empty()` [INFO] [stderr] | [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 should consider deriving a `Default` implementation for `io::IoBus` [INFO] [stderr] --> src/io.rs:71:5 [INFO] [stderr] | [INFO] [stderr] 71 | / pub fn new() -> IoBus { [INFO] [stderr] 72 | | IoBus { [INFO] [stderr] 73 | | next_index: 0, [INFO] [stderr] 74 | | ports: VecMap::new(), [INFO] [stderr] ... | [INFO] [stderr] 78 | | } [INFO] [stderr] 79 | | } [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] 61 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/io.rs:127:5 [INFO] [stderr] | [INFO] [stderr] 127 | / pub fn view<'a>(&'a mut self, node: NodeId) -> IoBusView<'a> { [INFO] [stderr] 128 | | assert!(self.nodes.get(node).is_some()); [INFO] [stderr] 129 | | IoBusView::new(self, node) [INFO] [stderr] 130 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `node::exec::BasicExecutionNode` [INFO] [stderr] --> src/node/exec.rs:72:5 [INFO] [stderr] | [INFO] [stderr] 72 | / pub fn new() -> BasicExecutionNode { [INFO] [stderr] 73 | | BasicExecutionNode { [INFO] [stderr] 74 | | program: Program::new(), [INFO] [stderr] 75 | | pc: 0, [INFO] [stderr] ... | [INFO] [stderr] 80 | | } [INFO] [stderr] 81 | | } [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] 70 | impl Default for node::exec::BasicExecutionNode { [INFO] [stderr] 71 | fn default() -> Self { [INFO] [stderr] 72 | Self::new() [INFO] [stderr] 73 | } [INFO] [stderr] 74 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/node/exec.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | self.program.get(self.pc as usize).map(|&i| i) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.program.get(self.pc as usize).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: this looks like you are swapping `self.bak` and `self.acc` manually [INFO] [stderr] --> src/node/exec.rs:132:17 [INFO] [stderr] | [INFO] [stderr] 132 | / let tmp = self.bak; [INFO] [stderr] 133 | | self.bak = self.acc; [INFO] [stderr] 134 | | self.acc = tmp; [INFO] [stderr] | |______________________________^ help: try: `std::mem::swap(&mut self.bak, &mut self.acc)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_swap)] on by default [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `node::stack::StackMemoryNode` [INFO] [stderr] --> src/node/stack.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | / pub fn new() -> StackMemoryNode { [INFO] [stderr] 16 | | StackMemoryNode { [INFO] [stderr] 17 | | stack: Vec::new(), [INFO] [stderr] 18 | | read_index: None, [INFO] [stderr] 19 | | } [INFO] [stderr] 20 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 8 | #[derive(Default)] [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/node/test.rs:15:33 [INFO] [stderr] | [INFO] [stderr] 15 | pub fn with_data(test_data: &Vec) -> TestInputNode { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[isize]` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/node/test.rs:17:24 [INFO] [stderr] | [INFO] [stderr] 17 | test_data: test_data.iter().map(|&i| i).collect::>(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `test_data.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/node/test.rs:48:33 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn with_data(test_data: &Vec) -> TestOutputNode { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[isize]` [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 are using an explicit closure for cloning elements [INFO] [stderr] --> src/node/test.rs:50:24 [INFO] [stderr] | [INFO] [stderr] 50 | test_data: test_data.iter().map(|&i| i).collect::>(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `test_data.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/node/test.rs:87:28 [INFO] [stderr] | [INFO] [stderr] 87 | pub fn with_data(data: &Vec, width: usize, height: usize) -> TestImageNode { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[isize]` [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/image.rs:69:28 [INFO] [stderr] | [INFO] [stderr] 69 | pub fn with_data(data: &Vec, width: usize, height: usize) -> Image { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[isize]` [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: single-character string constant used as pattern [INFO] [stderr] --> src/save.rs:46:26 [INFO] [stderr] | [INFO] [stderr] 46 | for src in src.split("@").skip(1) { [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/save.rs:71:8 [INFO] [stderr] | [INFO] [stderr] 71 | if errors.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!errors.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/spec.rs:94:16 [INFO] [stderr] | [INFO] [stderr] 94 | if let Err(_) = lua.execute::<()>(SEED_RANDOM_EXEC) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 95 | | return Err(SeedRandomFailed); [INFO] [stderr] 96 | | } [INFO] [stderr] | |_________- help: try this: `if lua.execute::<()>(SEED_RANDOM_EXEC).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/spec.rs:107:20 [INFO] [stderr] | [INFO] [stderr] 107 | if let Err(_) = lua.execute_from_reader::<(), _>(file) { [INFO] [stderr] | _____________- ^^^^^^ [INFO] [stderr] 108 | | return Err(ReadFileFailed); [INFO] [stderr] 109 | | } [INFO] [stderr] | |_____________- help: try this: `if lua.execute_from_reader::<(), _>(file).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/spec.rs:115:16 [INFO] [stderr] | [INFO] [stderr] 115 | if let None = lua.get::, _>(LAYOUT_FN) { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 116 | | return Err(GetLayoutFailed); [INFO] [stderr] 117 | | } [INFO] [stderr] | |_________- help: try this: `if lua.get::, _>(LAYOUT_FN).is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/spec.rs:121:16 [INFO] [stderr] | [INFO] [stderr] 121 | if let Err(_) = lua.execute::<()>(LAYOUT_FN_EXEC) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 122 | | return Err(GetLayoutFailed); [INFO] [stderr] 123 | | } [INFO] [stderr] | |_________- help: try this: `if lua.execute::<()>(LAYOUT_FN_EXEC).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/spec.rs:143:16 [INFO] [stderr] | [INFO] [stderr] 143 | if let None = lua.get::, _>(STREAMS_FN) { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 144 | | return Err(GetStreamsFailed); [INFO] [stderr] 145 | | } [INFO] [stderr] | |_________- help: try this: `if lua.get::, _>(STREAMS_FN).is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/spec.rs:149:16 [INFO] [stderr] | [INFO] [stderr] 149 | if let Err(_) = lua.execute::<()>(STREAMS_FN_EXEC) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 150 | | return Err(GetStreamsFailed); [INFO] [stderr] 151 | | } [INFO] [stderr] | |_________- help: try this: `if lua.execute::<()>(STREAMS_FN_EXEC).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `machine::Tis100` [INFO] [stderr] --> src/machine.rs:159:5 [INFO] [stderr] | [INFO] [stderr] 159 | / pub fn new() -> Tis100 { [INFO] [stderr] 160 | | let mut tis100 = Tis100 { [INFO] [stderr] 161 | | nodes: VecMap::new(), [INFO] [stderr] 162 | | bus: IoBus::new(), [INFO] [stderr] ... | [INFO] [stderr] 166 | | tis100 [INFO] [stderr] 167 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 157 | impl Default for machine::Tis100 { [INFO] [stderr] 158 | fn default() -> Self { [INFO] [stderr] 159 | Self::new() [INFO] [stderr] 160 | } [INFO] [stderr] 161 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lex.rs:31:12 [INFO] [stderr] | [INFO] [stderr] 31 | if words.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!words.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: length comparison to zero [INFO] [stderr] --> src/lex.rs:51:16 [INFO] [stderr] | [INFO] [stderr] 51 | if word.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!word.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lex.rs:63:8 [INFO] [stderr] | [INFO] [stderr] 63 | if word.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!word.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 27 [INFO] [stderr] --> src/lex.rs:108:1 [INFO] [stderr] | [INFO] [stderr] 108 | / fn test_lex_line() { [INFO] [stderr] 109 | | let (lbl, lex) = lex_line("LABEL: MOV UP ACC # comment"); [INFO] [stderr] 110 | | assert_eq!(lbl, Some("LABEL".to_string())); [INFO] [stderr] 111 | | assert_eq!(lex.len(), 3); [INFO] [stderr] ... | [INFO] [stderr] 145 | | assert_eq!(lex[2], "RI"); [INFO] [stderr] 146 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parse.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / match self { [INFO] [stderr] 26 | | &InvalidLabel => f.write_str("Invalid label"), [INFO] [stderr] 27 | | &UndefinedLabel(ref lbl) => f.write_fmt(format_args!("Undefined label: '{}'", lbl)), [INFO] [stderr] 28 | | &DuplicateLabel(ref lbl) => f.write_fmt(format_args!("Label is already defined: '{}'", lbl)), [INFO] [stderr] ... | [INFO] [stderr] 33 | | &TooManyOperands(ref ops) => f.write_fmt(format_args!("Too many operands: '{}'", ops)), [INFO] [stderr] 34 | | } [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] 25 | match *self { [INFO] [stderr] 26 | InvalidLabel => f.write_str("Invalid label"), [INFO] [stderr] 27 | UndefinedLabel(ref lbl) => f.write_fmt(format_args!("Undefined label: '{}'", lbl)), [INFO] [stderr] 28 | DuplicateLabel(ref lbl) => f.write_fmt(format_args!("Label is already defined: '{}'", lbl)), [INFO] [stderr] 29 | InvalidOpcode(ref op) => f.write_fmt(format_args!("Invalid opcode: '{}'", op)), [INFO] [stderr] 30 | InvalidExpression(ref expr) => f.write_fmt(format_args!("Invalid expression: '{}'", expr)), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parse.rs:79:9 [INFO] [stderr] | [INFO] [stderr] 79 | / if let &Some(Label(ref name, index)) = maybe_label { [INFO] [stderr] 80 | | if name.len() == 0 { [INFO] [stderr] 81 | | errors.push((line_num, InvalidLabel)); [INFO] [stderr] 82 | | } else if let None = label_map.get(name) { [INFO] [stderr] ... | [INFO] [stderr] 86 | | } [INFO] [stderr] 87 | | } [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] 79 | if let Some(Label(ref name, index)) = *maybe_label { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:80:16 [INFO] [stderr] | [INFO] [stderr] 80 | if name.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/parse.rs:82:27 [INFO] [stderr] | [INFO] [stderr] 82 | } else if let None = label_map.get(name) { [INFO] [stderr] | ____________________- ^^^^ [INFO] [stderr] 83 | | label_map.insert(name.clone(), index as isize); [INFO] [stderr] 84 | | } else { [INFO] [stderr] 85 | | errors.push((line_num, DuplicateLabel(name.clone()))); [INFO] [stderr] 86 | | } [INFO] [stderr] | |_____________- help: try this: `if label_map.get(name).is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:92:12 [INFO] [stderr] | [INFO] [stderr] 92 | if lexemes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!lexemes.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:100:8 [INFO] [stderr] | [INFO] [stderr] 100 | if errors.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!errors.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/parse.rs:129:23 [INFO] [stderr] | [INFO] [stderr] 129 | labels.get(label).ok_or(UndefinedLabel(label.to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| UndefinedLabel(label.to_string()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/parse.rs:134:8 [INFO] [stderr] | [INFO] [stderr] 134 | if operands.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `operands.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:145:8 [INFO] [stderr] | [INFO] [stderr] 145 | if operands.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `operands.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/parse.rs:154:8 [INFO] [stderr] | [INFO] [stderr] 154 | if operands.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `operands.is_empty()` [INFO] [stderr] | [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 should consider deriving a `Default` implementation for `io::IoBus` [INFO] [stderr] --> src/io.rs:71:5 [INFO] [stderr] | [INFO] [stderr] 71 | / pub fn new() -> IoBus { [INFO] [stderr] 72 | | IoBus { [INFO] [stderr] 73 | | next_index: 0, [INFO] [stderr] 74 | | ports: VecMap::new(), [INFO] [stderr] ... | [INFO] [stderr] 78 | | } [INFO] [stderr] 79 | | } [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] 61 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/io.rs:127:5 [INFO] [stderr] | [INFO] [stderr] 127 | / pub fn view<'a>(&'a mut self, node: NodeId) -> IoBusView<'a> { [INFO] [stderr] 128 | | assert!(self.nodes.get(node).is_some()); [INFO] [stderr] 129 | | IoBusView::new(self, node) [INFO] [stderr] 130 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `node::exec::BasicExecutionNode` [INFO] [stderr] --> src/node/exec.rs:72:5 [INFO] [stderr] | [INFO] [stderr] 72 | / pub fn new() -> BasicExecutionNode { [INFO] [stderr] 73 | | BasicExecutionNode { [INFO] [stderr] 74 | | program: Program::new(), [INFO] [stderr] 75 | | pc: 0, [INFO] [stderr] ... | [INFO] [stderr] 80 | | } [INFO] [stderr] 81 | | } [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] 70 | impl Default for node::exec::BasicExecutionNode { [INFO] [stderr] 71 | fn default() -> Self { [INFO] [stderr] 72 | Self::new() [INFO] [stderr] 73 | } [INFO] [stderr] 74 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/node/exec.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | self.program.get(self.pc as usize).map(|&i| i) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.program.get(self.pc as usize).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: this looks like you are swapping `self.bak` and `self.acc` manually [INFO] [stderr] --> src/node/exec.rs:132:17 [INFO] [stderr] | [INFO] [stderr] 132 | / let tmp = self.bak; [INFO] [stderr] 133 | | self.bak = self.acc; [INFO] [stderr] 134 | | self.acc = tmp; [INFO] [stderr] | |______________________________^ help: try: `std::mem::swap(&mut self.bak, &mut self.acc)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_swap)] on by default [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `node::stack::StackMemoryNode` [INFO] [stderr] --> src/node/stack.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | / pub fn new() -> StackMemoryNode { [INFO] [stderr] 16 | | StackMemoryNode { [INFO] [stderr] 17 | | stack: Vec::new(), [INFO] [stderr] 18 | | read_index: None, [INFO] [stderr] 19 | | } [INFO] [stderr] 20 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 8 | #[derive(Default)] [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/node/test.rs:15:33 [INFO] [stderr] | [INFO] [stderr] 15 | pub fn with_data(test_data: &Vec) -> TestInputNode { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[isize]` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/node/test.rs:17:24 [INFO] [stderr] | [INFO] [stderr] 17 | test_data: test_data.iter().map(|&i| i).collect::>(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `test_data.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/node/test.rs:48:33 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn with_data(test_data: &Vec) -> TestOutputNode { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[isize]` [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 are using an explicit closure for cloning elements [INFO] [stderr] --> src/node/test.rs:50:24 [INFO] [stderr] | [INFO] [stderr] 50 | test_data: test_data.iter().map(|&i| i).collect::>(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `test_data.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/node/test.rs:87:28 [INFO] [stderr] | [INFO] [stderr] 87 | pub fn with_data(data: &Vec, width: usize, height: usize) -> TestImageNode { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[isize]` [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/image.rs:69:28 [INFO] [stderr] | [INFO] [stderr] 69 | pub fn with_data(data: &Vec, width: usize, height: usize) -> Image { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[isize]` [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: single-character string constant used as pattern [INFO] [stderr] --> src/save.rs:46:26 [INFO] [stderr] | [INFO] [stderr] 46 | for src in src.split("@").skip(1) { [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/save.rs:71:8 [INFO] [stderr] | [INFO] [stderr] 71 | if errors.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!errors.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/spec.rs:94:16 [INFO] [stderr] | [INFO] [stderr] 94 | if let Err(_) = lua.execute::<()>(SEED_RANDOM_EXEC) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 95 | | return Err(SeedRandomFailed); [INFO] [stderr] 96 | | } [INFO] [stderr] | |_________- help: try this: `if lua.execute::<()>(SEED_RANDOM_EXEC).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/spec.rs:107:20 [INFO] [stderr] | [INFO] [stderr] 107 | if let Err(_) = lua.execute_from_reader::<(), _>(file) { [INFO] [stderr] | _____________- ^^^^^^ [INFO] [stderr] 108 | | return Err(ReadFileFailed); [INFO] [stderr] 109 | | } [INFO] [stderr] | |_____________- help: try this: `if lua.execute_from_reader::<(), _>(file).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/spec.rs:115:16 [INFO] [stderr] | [INFO] [stderr] 115 | if let None = lua.get::, _>(LAYOUT_FN) { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 116 | | return Err(GetLayoutFailed); [INFO] [stderr] 117 | | } [INFO] [stderr] | |_________- help: try this: `if lua.get::, _>(LAYOUT_FN).is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/spec.rs:121:16 [INFO] [stderr] | [INFO] [stderr] 121 | if let Err(_) = lua.execute::<()>(LAYOUT_FN_EXEC) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 122 | | return Err(GetLayoutFailed); [INFO] [stderr] 123 | | } [INFO] [stderr] | |_________- help: try this: `if lua.execute::<()>(LAYOUT_FN_EXEC).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/spec.rs:143:16 [INFO] [stderr] | [INFO] [stderr] 143 | if let None = lua.get::, _>(STREAMS_FN) { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 144 | | return Err(GetStreamsFailed); [INFO] [stderr] 145 | | } [INFO] [stderr] | |_________- help: try this: `if lua.get::, _>(STREAMS_FN).is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/spec.rs:149:16 [INFO] [stderr] | [INFO] [stderr] 149 | if let Err(_) = lua.execute::<()>(STREAMS_FN_EXEC) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 150 | | return Err(GetStreamsFailed); [INFO] [stderr] 151 | | } [INFO] [stderr] | |_________- help: try this: `if lua.execute::<()>(STREAMS_FN_EXEC).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `machine::Tis100` [INFO] [stderr] --> src/machine.rs:159:5 [INFO] [stderr] | [INFO] [stderr] 159 | / pub fn new() -> Tis100 { [INFO] [stderr] 160 | | let mut tis100 = Tis100 { [INFO] [stderr] 161 | | nodes: VecMap::new(), [INFO] [stderr] 162 | | bus: IoBus::new(), [INFO] [stderr] ... | [INFO] [stderr] 166 | | tis100 [INFO] [stderr] 167 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 157 | impl Default for machine::Tis100 { [INFO] [stderr] 158 | fn default() -> Self { [INFO] [stderr] 159 | Self::new() [INFO] [stderr] 160 | } [INFO] [stderr] 161 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/bin/puzzle.rs:13:15 [INFO] [stderr] | [INFO] [stderr] 13 | const USAGE: &'static str = "TIS-100 Puzzle Emulator\n\nUsage:\n puzzle "; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/bin/puzzle.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | Err(_) => panic!("Could not load save file"), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/bin/sandbox.rs:13:15 [INFO] [stderr] | [INFO] [stderr] 13 | const USAGE: &'static str = "TIS-100 Sandbox Emulator\n\nUsage:\n sandbox "; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/bin/sandbox.rs:56:24 [INFO] [stderr] | [INFO] [stderr] 56 | if let Err(_) = out_tx.send(val) { [INFO] [stderr] | _________________- ^^^^^^ [INFO] [stderr] 57 | | break; [INFO] [stderr] 58 | | } [INFO] [stderr] | |_________________- help: try this: `if out_tx.send(val).is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/bin/sandbox.rs:89:24 [INFO] [stderr] | [INFO] [stderr] 89 | if let Err(_) = in_tx.send(val) { [INFO] [stderr] | _________________- ^^^^^^ [INFO] [stderr] 90 | | break; [INFO] [stderr] 91 | | } [INFO] [stderr] | |_________________- help: try this: `if in_tx.send(val).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/bin/puzzle.rs:13:15 [INFO] [stderr] | [INFO] [stderr] 13 | const USAGE: &'static str = "TIS-100 Puzzle Emulator\n\nUsage:\n puzzle "; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/bin/puzzle.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | Err(_) => panic!("Could not load save file"), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/bin/sandbox.rs:13:15 [INFO] [stderr] | [INFO] [stderr] 13 | const USAGE: &'static str = "TIS-100 Sandbox Emulator\n\nUsage:\n sandbox "; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/bin/sandbox.rs:56:24 [INFO] [stderr] | [INFO] [stderr] 56 | if let Err(_) = out_tx.send(val) { [INFO] [stderr] | _________________- ^^^^^^ [INFO] [stderr] 57 | | break; [INFO] [stderr] 58 | | } [INFO] [stderr] | |_________________- help: try this: `if out_tx.send(val).is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/bin/sandbox.rs:89:24 [INFO] [stderr] | [INFO] [stderr] 89 | if let Err(_) = in_tx.send(val) { [INFO] [stderr] | _________________- ^^^^^^ [INFO] [stderr] 90 | | break; [INFO] [stderr] 91 | | } [INFO] [stderr] | |_________________- help: try this: `if in_tx.send(val).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3.12s [INFO] running `"docker" "inspect" "178c419c4be5adc1a2ef442450ab1568bcd1eaa2cbacfa4ce8cbd8322ad00085"` [INFO] running `"docker" "rm" "-f" "178c419c4be5adc1a2ef442450ab1568bcd1eaa2cbacfa4ce8cbd8322ad00085"` [INFO] [stdout] 178c419c4be5adc1a2ef442450ab1568bcd1eaa2cbacfa4ce8cbd8322ad00085