[INFO] crate dcpu16 0.4.0 is already in cache [INFO] extracting crate dcpu16 0.4.0 into work/ex/clippy-test-run/sources/stable/reg/dcpu16/0.4.0 [INFO] extracting crate dcpu16 0.4.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dcpu16/0.4.0 [INFO] validating manifest of dcpu16-0.4.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of dcpu16-0.4.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing dcpu16-0.4.0 [INFO] removed 1 missing tests [INFO] finished frobbing dcpu16-0.4.0 [INFO] frobbed toml for dcpu16-0.4.0 written to work/ex/clippy-test-run/sources/stable/reg/dcpu16/0.4.0/Cargo.toml [INFO] started frobbing dcpu16-0.4.0 [INFO] removed 1 missing tests [INFO] finished frobbing dcpu16-0.4.0 [INFO] frobbed toml for dcpu16-0.4.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dcpu16/0.4.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting dcpu16-0.4.0 against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dcpu16/0.4.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dclippy::into_iter_on_array" "-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] ec15d856806e10e5bcd234104fa18d763212c8ac9a6df0ce4dad8c59e92ac97f [INFO] running `"docker" "start" "-a" "ec15d856806e10e5bcd234104fa18d763212c8ac9a6df0ce4dad8c59e92ac97f"` [INFO] [stderr] warning: An explicit [[bin]] section is specified in Cargo.toml which currently [INFO] [stderr] disables Cargo from automatically inferring other binary targets. [INFO] [stderr] This inference behavior will change in the Rust 2018 edition and the following [INFO] [stderr] files will be included as a binary target: [INFO] [stderr] [INFO] [stderr] * /opt/crater/workdir/src/bin/cli.rs [INFO] [stderr] [INFO] [stderr] This is likely to break cargo build or cargo test as these files may not be [INFO] [stderr] ready to be compiled as a binary target today. You can future-proof yourself [INFO] [stderr] and disable this warning by adding `autobins = false` to your [package] [INFO] [stderr] section. You may also move the files to a location where Cargo would not [INFO] [stderr] automatically infer them to be a target, such as in subfolders. [INFO] [stderr] [INFO] [stderr] For more information on this warning you can consult [INFO] [stderr] https://github.com/rust-lang/cargo/issues/5330 [INFO] [stderr] warning: An explicit [[test]] section is specified in Cargo.toml which currently [INFO] [stderr] disables Cargo from automatically inferring other test targets. [INFO] [stderr] This inference behavior will change in the Rust 2018 edition and the following [INFO] [stderr] files will be included as a test target: [INFO] [stderr] [INFO] [stderr] * /opt/crater/workdir/tests/tests.rs [INFO] [stderr] * /opt/crater/workdir/tests/test_emulator.rs [INFO] [stderr] * /opt/crater/workdir/tests/test_assembler.rs [INFO] [stderr] [INFO] [stderr] This is likely to break cargo build or cargo test as these files may not be [INFO] [stderr] ready to be compiled as a test target today. You can future-proof yourself [INFO] [stderr] and disable this warning by adding `autotests = false` to your [package] [INFO] [stderr] section. You may also move the files to a location where Cargo would not [INFO] [stderr] automatically infer them to be a target, such as in subfolders. [INFO] [stderr] [INFO] [stderr] For more information on this warning you can consult [INFO] [stderr] https://github.com/rust-lang/cargo/issues/5330 [INFO] [stderr] Checking dcpu16 v0.4.0 (/opt/crater/workdir) [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/dcpu.rs:701:13 [INFO] [stderr] | [INFO] [stderr] 701 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/assembler.rs:188:21 [INFO] [stderr] | [INFO] [stderr] 188 | ParsingInfo{operand: operand, extra_byte: None, unassigned: false, offset: 0} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `operand` [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/assembler.rs:192:21 [INFO] [stderr] | [INFO] [stderr] 192 | ParsingInfo{operand: operand, extra_byte: Some(extra), unassigned: false, offset: 0} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `operand` [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/assembler.rs:396:45 [INFO] [stderr] | [INFO] [stderr] 396 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:407:25 [INFO] [stderr] | [INFO] [stderr] 407 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:468:33 [INFO] [stderr] | [INFO] [stderr] 468 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:473:49 [INFO] [stderr] | [INFO] [stderr] 473 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:499:45 [INFO] [stderr] | [INFO] [stderr] 499 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:506:29 [INFO] [stderr] | [INFO] [stderr] 506 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:509:29 [INFO] [stderr] | [INFO] [stderr] 509 | Token { ttype: ttype, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ttype` [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/assembler.rs:510:29 [INFO] [stderr] | [INFO] [stderr] 510 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:514:29 [INFO] [stderr] | [INFO] [stderr] 514 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:518:29 [INFO] [stderr] | [INFO] [stderr] 518 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:522:29 [INFO] [stderr] | [INFO] [stderr] 522 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:526:29 [INFO] [stderr] | [INFO] [stderr] 526 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:542:53 [INFO] [stderr] | [INFO] [stderr] 542 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:543:53 [INFO] [stderr] | [INFO] [stderr] 543 | len: len, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `len` [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/assembler.rs:554:29 [INFO] [stderr] | [INFO] [stderr] 554 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:555:29 [INFO] [stderr] | [INFO] [stderr] 555 | len: len } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `len` [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/assembler.rs:975:120 [INFO] [stderr] | [INFO] [stderr] 975 | ParsingInfo{operand: 0x1e, extra_byte: Some(id), unassigned: true, offset: offset} [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `offset` [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: using `println!("")` [INFO] [stderr] --> src/dcpu.rs:701:13 [INFO] [stderr] | [INFO] [stderr] 701 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/assembler.rs:188:21 [INFO] [stderr] | [INFO] [stderr] 188 | ParsingInfo{operand: operand, extra_byte: None, unassigned: false, offset: 0} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `operand` [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/assembler.rs:192:21 [INFO] [stderr] | [INFO] [stderr] 192 | ParsingInfo{operand: operand, extra_byte: Some(extra), unassigned: false, offset: 0} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `operand` [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/assembler.rs:396:45 [INFO] [stderr] | [INFO] [stderr] 396 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:407:25 [INFO] [stderr] | [INFO] [stderr] 407 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:468:33 [INFO] [stderr] | [INFO] [stderr] 468 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:473:49 [INFO] [stderr] | [INFO] [stderr] 473 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:499:45 [INFO] [stderr] | [INFO] [stderr] 499 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:506:29 [INFO] [stderr] | [INFO] [stderr] 506 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:509:29 [INFO] [stderr] | [INFO] [stderr] 509 | Token { ttype: ttype, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ttype` [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/assembler.rs:510:29 [INFO] [stderr] | [INFO] [stderr] 510 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:514:29 [INFO] [stderr] | [INFO] [stderr] 514 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:518:29 [INFO] [stderr] | [INFO] [stderr] 518 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:522:29 [INFO] [stderr] | [INFO] [stderr] 522 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:526:29 [INFO] [stderr] | [INFO] [stderr] 526 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:542:53 [INFO] [stderr] | [INFO] [stderr] 542 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:543:53 [INFO] [stderr] | [INFO] [stderr] 543 | len: len, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `len` [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/assembler.rs:554:29 [INFO] [stderr] | [INFO] [stderr] 554 | col: col, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `col` [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/assembler.rs:555:29 [INFO] [stderr] | [INFO] [stderr] 555 | len: len } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `len` [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/assembler.rs:975:120 [INFO] [stderr] | [INFO] [stderr] 975 | ParsingInfo{operand: 0x1e, extra_byte: Some(id), unassigned: true, offset: offset} [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `offset` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/dcpu.rs:108:43 [INFO] [stderr] | [INFO] [stderr] 108 | pub fn halt(&mut self, cycles: usize) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/dcpu.rs:251:55 [INFO] [stderr] | [INFO] [stderr] 251 | pub fn add_device(&mut self, device: Box) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/dcpu.rs:258:47 [INFO] [stderr] | [INFO] [stderr] 258 | pub fn interrupt(&mut self, message: u16) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: doc comment not used by rustdoc [INFO] [stderr] --> src/assembler.rs:775:9 [INFO] [stderr] | [INFO] [stderr] 775 | / /** [INFO] [stderr] 776 | | * This whole business needs refactoring. Every case is handled by [INFO] [stderr] 777 | | * an explicit case, which is extremely verbose. [INFO] [stderr] 778 | | */ [INFO] [stderr] | |____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_doc_comments)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/assembler.rs:1068:5 [INFO] [stderr] | [INFO] [stderr] 1068 | return Ok(ttype); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(ttype)` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/devices/monitor_lem1802.rs:21:22 [INFO] [stderr] | [INFO] [stderr] 21 | const DEFAULT_FONT: &'static [u16] = &[ [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&[u16]` [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/devices/monitor_lem1802.rs:46:25 [INFO] [stderr] | [INFO] [stderr] 46 | const DEFAULT_PALETTE: &'static [u16] = &[ [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&[u16]` [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/devices/monitor_lem1802.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | const LOGO_PIXELS: &'static [usize] = &[ [INFO] [stderr] | -^^^^^^^-------- help: consider removing `'static`: `&[usize]` [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: unneeded unit return type [INFO] [stderr] --> src/devices/monitor_lem1802.rs:214:53 [INFO] [stderr] | [INFO] [stderr] 214 | fn process_interrupt(&mut self, cpu: &mut DCPU) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/monitor_lem1802.rs:260:47 [INFO] [stderr] | [INFO] [stderr] 260 | fn run(&mut self, _: &mut DCPU, _: usize) -> () {} [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/clock_generic.rs:33:53 [INFO] [stderr] | [INFO] [stderr] 33 | fn process_interrupt(&mut self, cpu: &mut DCPU) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/clock_generic.rs:60:54 [INFO] [stderr] | [INFO] [stderr] 60 | fn run(&mut self, cpu: &mut DCPU, cycles: usize) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/keyboard_generic.rs:46:64 [INFO] [stderr] | [INFO] [stderr] 46 | pub fn register_press(&mut self, cpu: &mut DCPU, key: u16) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/keyboard_generic.rs:75:66 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn register_release(&mut self, cpu: &mut DCPU, key: u16) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/keyboard_generic.rs:97:53 [INFO] [stderr] | [INFO] [stderr] 97 | fn process_interrupt(&mut self, cpu: &mut DCPU) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/keyboard_generic.rs:127:47 [INFO] [stderr] | [INFO] [stderr] 127 | fn run(&mut self, _: &mut DCPU, _: usize) -> () {} [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/floppy_m35fd.rs:88:45 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn set_state(&mut self, state: u16) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/floppy_m35fd.rs:99:45 [INFO] [stderr] | [INFO] [stderr] 99 | pub fn set_error(&mut self, error: u16) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/floppy_m35fd.rs:131:53 [INFO] [stderr] | [INFO] [stderr] 131 | fn process_interrupt(&mut self, cpu: &mut DCPU) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/floppy_m35fd.rs:207:54 [INFO] [stderr] | [INFO] [stderr] 207 | fn run(&mut self, cpu: &mut DCPU, cycles: usize) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/assembler.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/dcpu.rs:108:43 [INFO] [stderr] | [INFO] [stderr] 108 | pub fn halt(&mut self, cycles: usize) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/dcpu.rs:251:55 [INFO] [stderr] | [INFO] [stderr] 251 | pub fn add_device(&mut self, device: Box) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/dcpu.rs:258:47 [INFO] [stderr] | [INFO] [stderr] 258 | pub fn interrupt(&mut self, message: u16) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: doc comment not used by rustdoc [INFO] [stderr] --> src/assembler.rs:775:9 [INFO] [stderr] | [INFO] [stderr] 775 | / /** [INFO] [stderr] 776 | | * This whole business needs refactoring. Every case is handled by [INFO] [stderr] 777 | | * an explicit case, which is extremely verbose. [INFO] [stderr] 778 | | */ [INFO] [stderr] | |____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_doc_comments)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/assembler.rs:1068:5 [INFO] [stderr] | [INFO] [stderr] 1068 | return Ok(ttype); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(ttype)` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/devices/monitor_lem1802.rs:21:22 [INFO] [stderr] | [INFO] [stderr] 21 | const DEFAULT_FONT: &'static [u16] = &[ [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&[u16]` [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/devices/monitor_lem1802.rs:46:25 [INFO] [stderr] | [INFO] [stderr] 46 | const DEFAULT_PALETTE: &'static [u16] = &[ [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&[u16]` [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/devices/monitor_lem1802.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | const LOGO_PIXELS: &'static [usize] = &[ [INFO] [stderr] | -^^^^^^^-------- help: consider removing `'static`: `&[usize]` [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: unneeded unit return type [INFO] [stderr] --> src/devices/monitor_lem1802.rs:214:53 [INFO] [stderr] | [INFO] [stderr] 214 | fn process_interrupt(&mut self, cpu: &mut DCPU) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/monitor_lem1802.rs:260:47 [INFO] [stderr] | [INFO] [stderr] 260 | fn run(&mut self, _: &mut DCPU, _: usize) -> () {} [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/clock_generic.rs:33:53 [INFO] [stderr] | [INFO] [stderr] 33 | fn process_interrupt(&mut self, cpu: &mut DCPU) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/clock_generic.rs:60:54 [INFO] [stderr] | [INFO] [stderr] 60 | fn run(&mut self, cpu: &mut DCPU, cycles: usize) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/keyboard_generic.rs:46:64 [INFO] [stderr] | [INFO] [stderr] 46 | pub fn register_press(&mut self, cpu: &mut DCPU, key: u16) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/keyboard_generic.rs:75:66 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn register_release(&mut self, cpu: &mut DCPU, key: u16) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/keyboard_generic.rs:97:53 [INFO] [stderr] | [INFO] [stderr] 97 | fn process_interrupt(&mut self, cpu: &mut DCPU) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/keyboard_generic.rs:127:47 [INFO] [stderr] | [INFO] [stderr] 127 | fn run(&mut self, _: &mut DCPU, _: usize) -> () {} [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/floppy_m35fd.rs:88:45 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn set_state(&mut self, state: u16) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/floppy_m35fd.rs:99:45 [INFO] [stderr] | [INFO] [stderr] 99 | pub fn set_error(&mut self, error: u16) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/floppy_m35fd.rs:131:53 [INFO] [stderr] | [INFO] [stderr] 131 | fn process_interrupt(&mut self, cpu: &mut DCPU) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/devices/floppy_m35fd.rs:207:54 [INFO] [stderr] | [INFO] [stderr] 207 | fn run(&mut self, cpu: &mut DCPU, cycles: usize) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/assembler.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/assembler.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/assembler.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/devices/monitor_lem1802.rs:150:17 [INFO] [stderr] | [INFO] [stderr] 150 | let mut slice = &mut v[..]; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `dcpu::DCPU` [INFO] [stderr] --> src/dcpu.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | / pub fn new() -> DCPU { [INFO] [stderr] 61 | | DCPU { [INFO] [stderr] 62 | | terminate: false, [INFO] [stderr] 63 | | reg: [0; 8], [INFO] [stderr] ... | [INFO] [stderr] 76 | | } [INFO] [stderr] 77 | | } [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] 59 | impl Default for dcpu::DCPU { [INFO] [stderr] 60 | fn default() -> Self { [INFO] [stderr] 61 | Self::new() [INFO] [stderr] 62 | } [INFO] [stderr] 63 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:296:29 [INFO] [stderr] | [INFO] [stderr] 296 | let v = (self.value(id_a, true, true) as i32) + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value(id_a, true, true))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:297:29 [INFO] [stderr] | [INFO] [stderr] 297 | (self.value(id_b, false, false) as i32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value(id_b, false, false))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:319:29 [INFO] [stderr] | [INFO] [stderr] 319 | let v = (self.value(id_a, true, true) as i32) * [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value(id_a, true, true))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:320:29 [INFO] [stderr] | [INFO] [stderr] 320 | (self.value(id_b, false, false) as i32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value(id_b, false, false))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:330:29 [INFO] [stderr] | [INFO] [stderr] 330 | let v = (self.value_signed(id_a, true, true) as i32) * [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value_signed(id_a, true, true))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:331:29 [INFO] [stderr] | [INFO] [stderr] 331 | (self.value_signed(id_b, false, false) as i32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value_signed(id_b, false, false))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:347:38 [INFO] [stderr] | [INFO] [stderr] 347 | self.ex = ((((b as i32) << 16) / (a as i32)) & 0xffff) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:347:58 [INFO] [stderr] | [INFO] [stderr] 347 | self.ex = ((((b as i32) << 16) / (a as i32)) & 0xffff) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:360:38 [INFO] [stderr] | [INFO] [stderr] 360 | self.ex = ((((b as i32) << 16) / (a as i32)) & 0xffff) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:360:58 [INFO] [stderr] | [INFO] [stderr] 360 | self.ex = ((((b as i32) << 16) / (a as i32)) & 0xffff) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:408:33 [INFO] [stderr] | [INFO] [stderr] 408 | self.ex = (((b as u32) << 16)>>a) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:416:53 [INFO] [stderr] | [INFO] [stderr] 416 | self.ex = (((b as u32) << 16)>> (a as u32)) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:423:33 [INFO] [stderr] | [INFO] [stderr] 423 | self.ex = (((b as u32) << (a as u32)) >> 16) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:423:47 [INFO] [stderr] | [INFO] [stderr] 423 | self.ex = (((b as u32) << (a as u32)) >> 16) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the variable `j` is used as a loop counter. Consider using `for (j, item) in buffer.enumerate()` or similar iterators [INFO] [stderr] --> src/dcpu.rs:651:18 [INFO] [stderr] | [INFO] [stderr] 651 | for v in buffer { [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:653:23 [INFO] [stderr] | [INFO] [stderr] 653 | sig = v as u16; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:655:44 [INFO] [stderr] | [INFO] [stderr] 655 | self.mem[i] = (sig << 8) + (v as u16); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `assembler::PCPU` [INFO] [stderr] --> src/assembler.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | / pub fn new() -> PCPU { [INFO] [stderr] 96 | | PCPU { [INFO] [stderr] 97 | | mem: [0; MEMORY_SIZE], [INFO] [stderr] 98 | | pc: 0, [INFO] [stderr] ... | [INFO] [stderr] 107 | | } [INFO] [stderr] 108 | | } [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] 94 | impl Default for assembler::PCPU { [INFO] [stderr] 95 | fn default() -> Self { [INFO] [stderr] 96 | Self::new() [INFO] [stderr] 97 | } [INFO] [stderr] 98 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/assembler.rs:129:28 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn format_error(etype: &ParsingErrorType, cpu: &PCPU) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider passing by value instead: `ParsingErrorType` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler.rs:130:5 [INFO] [stderr] | [INFO] [stderr] 130 | / match etype { [INFO] [stderr] 131 | | &ParsingErrorType::InvalidLiteral => [INFO] [stderr] 132 | | format!("Invalid literal"), [INFO] [stderr] 133 | | &ParsingErrorType::UnclosedStringLiteral => [INFO] [stderr] ... | [INFO] [stderr] 162 | | }, [INFO] [stderr] 163 | | } [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] 130 | match *etype { [INFO] [stderr] 131 | ParsingErrorType::InvalidLiteral => [INFO] [stderr] 132 | format!("Invalid literal"), [INFO] [stderr] 133 | ParsingErrorType::UnclosedStringLiteral => [INFO] [stderr] 134 | format!("Unclosed string literal"), [INFO] [stderr] 135 | ParsingErrorType::IllegalCharacter => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:132:13 [INFO] [stderr] | [INFO] [stderr] 132 | format!("Invalid literal"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Invalid literal".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | format!("Unclosed string literal"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Unclosed string literal".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | format!("Illegal character"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Illegal character".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | format!("Line must start with an instruction or a label"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Line must start with an instruction or a label".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:140:13 [INFO] [stderr] | [INFO] [stderr] 140 | format!("Illegal L-value; unable to assign to numeric literal"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Illegal L-value; unable to assign to numeric literal".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:142:13 [INFO] [stderr] | [INFO] [stderr] 142 | format!("Expecting comma"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expecting comma".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:144:13 [INFO] [stderr] | [INFO] [stderr] 144 | format!("Expecting operand"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expecting operand".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:146:13 [INFO] [stderr] | [INFO] [stderr] 146 | format!("Expecting literal or label"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expecting literal or label".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:148:13 [INFO] [stderr] | [INFO] [stderr] 148 | format!("Expecting closing bracket"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expecting closing bracket".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:150:13 [INFO] [stderr] | [INFO] [stderr] 150 | format!("Expecting label name"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expecting label name".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:152:13 [INFO] [stderr] | [INFO] [stderr] 152 | format!("Expecting more tokens after this one"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expecting more tokens after this one".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | format!("Extra tokens found after successfully parsed line"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Extra tokens found after successfully parsed line".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:156:13 [INFO] [stderr] | [INFO] [stderr] 156 | format!("Push cannot be used as a-operand / Pop cannot be used as b-operand"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Push cannot be used as a-operand / Pop cannot be used as b-operand".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:160:25 [INFO] [stderr] | [INFO] [stderr] 160 | None => format!("Unknown label definition not found"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Unknown label definition not found".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | / match self { [INFO] [stderr] 233 | | &TokenType::NumericLiteral(i) => write!(f, "NumericLiteral({})", i), [INFO] [stderr] 234 | | &TokenType::StringLiteral(i) => write!(f, "StringLiteral({})", i), [INFO] [stderr] 235 | | &TokenType::BasicOpcode(i) => write!(f, "BasicOpcode({})", i), [INFO] [stderr] ... | [INFO] [stderr] 255 | | &TokenType::Colon => write!(f, "Colon"), [INFO] [stderr] 256 | | } [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] 232 | match *self { [INFO] [stderr] 233 | TokenType::NumericLiteral(i) => write!(f, "NumericLiteral({})", i), [INFO] [stderr] 234 | TokenType::StringLiteral(i) => write!(f, "StringLiteral({})", i), [INFO] [stderr] 235 | TokenType::BasicOpcode(i) => write!(f, "BasicOpcode({})", i), [INFO] [stderr] 236 | TokenType::SpecialOpcode(i) => write!(f, "SpecialOpcode({})", i), [INFO] [stderr] 237 | TokenType::DataOpcode => write!(f, "DataOpcode"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 29 [INFO] [stderr] --> src/assembler.rs:345:1 [INFO] [stderr] | [INFO] [stderr] 345 | / pub fn tokenize(line_no: usize, line: &str, cpu: &mut PCPU) -> Result, ParsingError> { [INFO] [stderr] 346 | | let mut tokens: Vec = vec!(); [INFO] [stderr] 347 | | [INFO] [stderr] 348 | | let mut i = 0; [INFO] [stderr] ... | [INFO] [stderr] 564 | | Ok(tokens) [INFO] [stderr] 565 | | } [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/assembler.rs:567:26 [INFO] [stderr] | [INFO] [stderr] 567 | fn process_canon(tokens: &Vec, prio: usize) -> (Vec, bool) { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:638:32 [INFO] [stderr] | [INFO] [stderr] 638 | pub fn canonize_tokens(tokens: &Vec) -> 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] help: change this to [INFO] [stderr] | [INFO] [stderr] 638 | pub fn canonize_tokens(tokens: &[Token]) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] help: change `tokens.clone()` to [INFO] [stderr] | [INFO] [stderr] 639 | let mut new_tokens = tokens.to_owned(); [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/assembler.rs:671:40 [INFO] [stderr] | [INFO] [stderr] 671 | fn parse_value(line_no: usize, tokens: &Vec, cur: &mut usize, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1057:45 [INFO] [stderr] | [INFO] [stderr] 1057 | fn fetch_token_type(line_no: usize, tokens: &Vec, cur: usize) -> Result<&TokenType, ParsingError> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1071:40 [INFO] [stderr] | [INFO] [stderr] 1071 | fn check_comma(line_no: usize, tokens: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1090:46 [INFO] [stderr] | [INFO] [stderr] 1090 | fn check_end_of_line(line_no: usize, tokens: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1106:31 [INFO] [stderr] | [INFO] [stderr] 1106 | tokens: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:1110:5 [INFO] [stderr] | [INFO] [stderr] 1110 | / match ttype { [INFO] [stderr] 1111 | | &TokenType::BasicOpcode(opcode) => { [INFO] [stderr] 1112 | | *cur += 1; [INFO] [stderr] 1113 | | let b = try!(parse_value(line_no, tokens, cur, cpu, true)); [INFO] [stderr] ... | [INFO] [stderr] 1154 | | } [INFO] [stderr] 1155 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1110 | if let &TokenType::BasicOpcode(opcode) = ttype { [INFO] [stderr] 1111 | *cur += 1; [INFO] [stderr] 1112 | let b = try!(parse_value(line_no, tokens, cur, cpu, true)); [INFO] [stderr] 1113 | [INFO] [stderr] 1114 | try!(check_comma(line_no, tokens, cur)); [INFO] [stderr] 1115 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler.rs:1110:5 [INFO] [stderr] | [INFO] [stderr] 1110 | / match ttype { [INFO] [stderr] 1111 | | &TokenType::BasicOpcode(opcode) => { [INFO] [stderr] 1112 | | *cur += 1; [INFO] [stderr] 1113 | | let b = try!(parse_value(line_no, tokens, cur, cpu, true)); [INFO] [stderr] ... | [INFO] [stderr] 1154 | | } [INFO] [stderr] 1155 | | } [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] 1110 | match *ttype { [INFO] [stderr] 1111 | TokenType::BasicOpcode(opcode) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:1126:13 [INFO] [stderr] | [INFO] [stderr] 1126 | / match a.extra_byte { [INFO] [stderr] 1127 | | Some(byte) => { [INFO] [stderr] 1128 | | cpu.mem[cpu.pc as usize] = byte; [INFO] [stderr] 1129 | | if a.unassigned { [INFO] [stderr] ... | [INFO] [stderr] 1136 | | None => {}, [INFO] [stderr] 1137 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1126 | if let Some(byte) = a.extra_byte { [INFO] [stderr] 1127 | cpu.mem[cpu.pc as usize] = byte; [INFO] [stderr] 1128 | if a.unassigned { [INFO] [stderr] 1129 | let ul = UnassignedLabel{addr: cpu.pc, label: byte, offset: a.offset}; [INFO] [stderr] 1130 | cpu.unassigned_addresses.push(ul); [INFO] [stderr] 1131 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:1139:13 [INFO] [stderr] | [INFO] [stderr] 1139 | / match b.extra_byte { [INFO] [stderr] 1140 | | Some(byte) => { [INFO] [stderr] 1141 | | cpu.mem[cpu.pc as usize] = byte; [INFO] [stderr] 1142 | | if b.unassigned { [INFO] [stderr] ... | [INFO] [stderr] 1148 | | None => {}, [INFO] [stderr] 1149 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1139 | if let Some(byte) = b.extra_byte { [INFO] [stderr] 1140 | cpu.mem[cpu.pc as usize] = byte; [INFO] [stderr] 1141 | if b.unassigned { [INFO] [stderr] 1142 | let ul = UnassignedLabel{addr: cpu.pc, label: byte, offset: b.offset}; [INFO] [stderr] 1143 | cpu.unassigned_addresses.push(ul); [INFO] [stderr] 1144 | } [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/assembler.rs:1161:33 [INFO] [stderr] | [INFO] [stderr] 1161 | tokens: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:1165:5 [INFO] [stderr] | [INFO] [stderr] 1165 | / match ttype { [INFO] [stderr] 1166 | | &TokenType::SpecialOpcode(opcode) => { [INFO] [stderr] 1167 | | *cur += 1; [INFO] [stderr] 1168 | | [INFO] [stderr] ... | [INFO] [stderr] 1192 | | } [INFO] [stderr] 1193 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1165 | if let &TokenType::SpecialOpcode(opcode) = ttype { [INFO] [stderr] 1166 | *cur += 1; [INFO] [stderr] 1167 | [INFO] [stderr] 1168 | let a = try!(parse_value(line_no, tokens, cur, cpu, false)); [INFO] [stderr] 1169 | [INFO] [stderr] 1170 | try!(check_end_of_line(line_no, tokens, cur)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler.rs:1165:5 [INFO] [stderr] | [INFO] [stderr] 1165 | / match ttype { [INFO] [stderr] 1166 | | &TokenType::SpecialOpcode(opcode) => { [INFO] [stderr] 1167 | | *cur += 1; [INFO] [stderr] 1168 | | [INFO] [stderr] ... | [INFO] [stderr] 1192 | | } [INFO] [stderr] 1193 | | } [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] 1165 | match *ttype { [INFO] [stderr] 1166 | TokenType::SpecialOpcode(opcode) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:1178:13 [INFO] [stderr] | [INFO] [stderr] 1178 | / match a.extra_byte { [INFO] [stderr] 1179 | | Some(byte) => { [INFO] [stderr] 1180 | | cpu.mem[cpu.pc as usize] = byte; [INFO] [stderr] 1181 | | if a.unassigned { [INFO] [stderr] ... | [INFO] [stderr] 1187 | | None => {}, [INFO] [stderr] 1188 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1178 | if let Some(byte) = a.extra_byte { [INFO] [stderr] 1179 | cpu.mem[cpu.pc as usize] = byte; [INFO] [stderr] 1180 | if a.unassigned { [INFO] [stderr] 1181 | let ul = UnassignedLabel{addr: cpu.pc, label: byte, offset: a.offset}; [INFO] [stderr] 1182 | cpu.unassigned_addresses.push(ul); [INFO] [stderr] 1183 | } [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/assembler.rs:1199:30 [INFO] [stderr] | [INFO] [stderr] 1199 | tokens: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1218:9 [INFO] [stderr] | [INFO] [stderr] 1218 | / match ttype { [INFO] [stderr] 1219 | | &TokenType::NumericLiteral(value) => { [INFO] [stderr] 1220 | | *cur += 1; [INFO] [stderr] 1221 | | cpu.mem[cpu.pc as usize] = value; [INFO] [stderr] ... | [INFO] [stderr] 1238 | | } [INFO] [stderr] 1239 | | } [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] 1218 | match *ttype { [INFO] [stderr] 1219 | TokenType::NumericLiteral(value) => { [INFO] [stderr] 1220 | *cur += 1; [INFO] [stderr] 1221 | cpu.mem[cpu.pc as usize] = value; [INFO] [stderr] 1222 | cpu.pc += 1; [INFO] [stderr] 1223 | }, [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/assembler.rs:1245:30 [INFO] [stderr] | [INFO] [stderr] 1245 | tokens: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1253:17 [INFO] [stderr] | [INFO] [stderr] 1253 | let count = match ttype { [INFO] [stderr] | _________________^ [INFO] [stderr] 1254 | | &TokenType::NumericLiteral(value) => { [INFO] [stderr] 1255 | | *cur += 1; [INFO] [stderr] 1256 | | value [INFO] [stderr] ... | [INFO] [stderr] 1265 | | }, [INFO] [stderr] 1266 | | }; [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] 1253 | let count = match *ttype { [INFO] [stderr] 1254 | TokenType::NumericLiteral(value) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler.rs:1271:17 [INFO] [stderr] | [INFO] [stderr] 1271 | let value = match ttype2 { [INFO] [stderr] | _________________^ [INFO] [stderr] 1272 | | &TokenType::NumericLiteral(value) => { [INFO] [stderr] 1273 | | *cur += 1; [INFO] [stderr] 1274 | | value [INFO] [stderr] ... | [INFO] [stderr] 1283 | | }, [INFO] [stderr] 1284 | | }; [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] 1271 | let value = match *ttype2 { [INFO] [stderr] 1272 | TokenType::NumericLiteral(value) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/devices/monitor_lem1802.rs:150:17 [INFO] [stderr] | [INFO] [stderr] 150 | let mut slice = &mut v[..]; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [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/assembler.rs:1297:39 [INFO] [stderr] | [INFO] [stderr] 1297 | fn parse_line(line_no: usize, tokens: &Vec, cpu: &mut PCPU, cur: &mut usize) -> Result<(), ParsingError> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1301:5 [INFO] [stderr] | [INFO] [stderr] 1301 | / match try!(fetch_token_type(line_no, tokens, *cur)) { [INFO] [stderr] 1302 | | &TokenType::BasicOpcode(_) => { [INFO] [stderr] 1303 | | try!(parse_basic_opcode(line_no, tokens, cur, cpu)); [INFO] [stderr] 1304 | | Ok(()) [INFO] [stderr] ... | [INFO] [stderr] 1348 | | }, [INFO] [stderr] 1349 | | } [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] 1302 | TokenType::BasicOpcode(_) => { [INFO] [stderr] 1303 | try!(parse_basic_opcode(line_no, tokens, cur, cpu)); [INFO] [stderr] 1304 | Ok(()) [INFO] [stderr] 1305 | }, [INFO] [stderr] 1306 | TokenType::SpecialOpcode(_) => { [INFO] [stderr] 1307 | try!(parse_special_opcode(line_no, tokens, cur, cpu)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler.rs:1320:13 [INFO] [stderr] | [INFO] [stderr] 1320 | / match try!(fetch_token_type(line_no, tokens, *cur)) { [INFO] [stderr] 1321 | | &TokenType::Label(v) => { [INFO] [stderr] 1322 | | let label = cpu.pc; [INFO] [stderr] 1323 | | if !cpu.labels.contains_key(&v) { [INFO] [stderr] ... | [INFO] [stderr] 1338 | | } [INFO] [stderr] 1339 | | } [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] 1321 | TokenType::Label(v) => { [INFO] [stderr] 1322 | *(match $ expr { [INFO] [stderr] 1323 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 1324 | :: Err ( err ) => { [INFO] [stderr] 1325 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 1326 | $ crate :: convert :: From :: from ( err ) ) } }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/assembler.rs:1323:21 [INFO] [stderr] | [INFO] [stderr] 1323 | / if !cpu.labels.contains_key(&v) { [INFO] [stderr] 1324 | | cpu.labels.insert(v, label); [INFO] [stderr] 1325 | | } [INFO] [stderr] | |_____________________^ help: consider using: `cpu.labels.entry(v).or_insert(label)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/assembler.rs:1329:24 [INFO] [stderr] | [INFO] [stderr] 1329 | Ok(try!(parse_line(line_no, tokens, cpu, cur))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/assembler.rs:1352:21 [INFO] [stderr] | [INFO] [stderr] 1352 | pub fn parse(lines: &Vec, cpu: &mut PCPU) -> Result<(), ParsingError> { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: length comparison to zero [INFO] [stderr] --> src/assembler.rs:1360:12 [INFO] [stderr] | [INFO] [stderr] 1360 | if l.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `l.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `dcpu::DCPU` [INFO] [stderr] --> src/dcpu.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | / pub fn new() -> DCPU { [INFO] [stderr] 61 | | DCPU { [INFO] [stderr] 62 | | terminate: false, [INFO] [stderr] 63 | | reg: [0; 8], [INFO] [stderr] ... | [INFO] [stderr] 76 | | } [INFO] [stderr] 77 | | } [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] 59 | impl Default for dcpu::DCPU { [INFO] [stderr] 60 | fn default() -> Self { [INFO] [stderr] 61 | Self::new() [INFO] [stderr] 62 | } [INFO] [stderr] 63 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `devices::monitor_lem1802::DeviceMonitorLEM1802` [INFO] [stderr] --> src/devices/monitor_lem1802.rs:73:5 [INFO] [stderr] | [INFO] [stderr] 73 | / pub fn new() -> DeviceMonitorLEM1802 { [INFO] [stderr] 74 | | DeviceMonitorLEM1802 { [INFO] [stderr] 75 | | connected: false, [INFO] [stderr] 76 | | ram_location: 0, [INFO] [stderr] ... | [INFO] [stderr] 80 | | } [INFO] [stderr] 81 | | } [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] 4 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/devices/monitor_lem1802.rs:113:18 [INFO] [stderr] | [INFO] [stderr] 113 | ((cpu.mem[(loc as usize + c * 2) % dcpu::MEMORY_SIZE] as u32) << 16) + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(cpu.mem[(loc as usize + c * 2) % dcpu::MEMORY_SIZE])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/devices/monitor_lem1802.rs:114:18 [INFO] [stderr] | [INFO] [stderr] 114 | (cpu.mem[(loc as usize + c * 2 + 1) % dcpu::MEMORY_SIZE] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(cpu.mem[(loc as usize + c * 2 + 1) % dcpu::MEMORY_SIZE])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/devices/monitor_lem1802.rs:117:18 [INFO] [stderr] | [INFO] [stderr] 117 | ((DEFAULT_FONT[c * 2] as u32) << 16) + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(DEFAULT_FONT[c * 2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/devices/monitor_lem1802.rs:118:18 [INFO] [stderr] | [INFO] [stderr] 118 | (DEFAULT_FONT[c * 2 + 1] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(DEFAULT_FONT[c * 2 + 1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `DEFAULT_FONT` [INFO] [stderr] --> src/devices/monitor_lem1802.rs:245:26 [INFO] [stderr] | [INFO] [stderr] 245 | for i in 0..DEFAULT_FONT.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 245 | for (i, ) in DEFAULT_FONT.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `DEFAULT_PALETTE` [INFO] [stderr] --> src/devices/monitor_lem1802.rs:251:26 [INFO] [stderr] | [INFO] [stderr] 251 | for i in 0..DEFAULT_PALETTE.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 251 | for (i, ) in DEFAULT_PALETTE.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `devices::clock_generic::DeviceClockGeneric` [INFO] [stderr] --> src/devices/clock_generic.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | / pub fn new() -> DeviceClockGeneric { [INFO] [stderr] 17 | | DeviceClockGeneric { [INFO] [stderr] 18 | | cycles_between_ticks: None, [INFO] [stderr] 19 | | cycles_in_current_tick: 0, [INFO] [stderr] ... | [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [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] 7 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f64 may become silently lossy if types change [INFO] [stderr] --> src/devices/clock_generic.rs:41:89 [INFO] [stderr] | [INFO] [stderr] 41 | self.cycles_between_ticks = Some(((dcpu::CYCLE_HZ as f64) / (60.0 / (reg_b as f64))) as usize); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(reg_b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/devices/clock_generic.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | / match self.cycles_between_ticks { [INFO] [stderr] 62 | | Some(n_cycles) => { [INFO] [stderr] 63 | | self.cycles_in_current_tick += cycles; [INFO] [stderr] 64 | | while self.cycles_in_current_tick >= n_cycles { [INFO] [stderr] ... | [INFO] [stderr] 74 | | }, [INFO] [stderr] 75 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 61 | if let Some(n_cycles) = self.cycles_between_ticks { [INFO] [stderr] 62 | self.cycles_in_current_tick += cycles; [INFO] [stderr] 63 | while self.cycles_in_current_tick >= n_cycles { [INFO] [stderr] 64 | self.cycles_in_current_tick -= n_cycles; [INFO] [stderr] 65 | self.ticks += 1; [INFO] [stderr] 66 | if let Some(m) = self.interrupt_message { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `devices::keyboard_generic::DeviceKeyboardGeneric` [INFO] [stderr] --> src/devices/keyboard_generic.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | / pub fn new() -> DeviceKeyboardGeneric { [INFO] [stderr] 39 | | DeviceKeyboardGeneric { [INFO] [stderr] 40 | | buffer: Vec::new(), [INFO] [stderr] 41 | | interrupt_message: None, [INFO] [stderr] 42 | | pressed: [false; 0x92], [INFO] [stderr] 43 | | } [INFO] [stderr] 44 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 37 | impl Default for devices::keyboard_generic::DeviceKeyboardGeneric { [INFO] [stderr] 38 | fn default() -> Self { [INFO] [stderr] 39 | Self::new() [INFO] [stderr] 40 | } [INFO] [stderr] 41 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `devices::floppy_m35fd::FloppyDisk` [INFO] [stderr] --> src/devices/floppy_m35fd.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | / pub fn new() -> FloppyDisk { [INFO] [stderr] 25 | | FloppyDisk { [INFO] [stderr] 26 | | sectors: Vec::new(), [INFO] [stderr] 27 | | write_protected: false, [INFO] [stderr] 28 | | } [INFO] [stderr] 29 | | } [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] 18 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `devices::floppy_m35fd::DeviceFloppyM35FD` [INFO] [stderr] --> src/devices/floppy_m35fd.rs:68:5 [INFO] [stderr] | [INFO] [stderr] 68 | / pub fn new() -> DeviceFloppyM35FD { [INFO] [stderr] 69 | | DeviceFloppyM35FD { [INFO] [stderr] 70 | | state: 0, [INFO] [stderr] 71 | | error: 0, [INFO] [stderr] ... | [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | } [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] 67 | impl Default for devices::floppy_m35fd::DeviceFloppyM35FD { [INFO] [stderr] 68 | fn default() -> Self { [INFO] [stderr] 69 | Self::new() [INFO] [stderr] 70 | } [INFO] [stderr] 71 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:296:29 [INFO] [stderr] | [INFO] [stderr] 296 | let v = (self.value(id_a, true, true) as i32) + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value(id_a, true, true))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:297:29 [INFO] [stderr] | [INFO] [stderr] 297 | (self.value(id_b, false, false) as i32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value(id_b, false, false))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:319:29 [INFO] [stderr] | [INFO] [stderr] 319 | let v = (self.value(id_a, true, true) as i32) * [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value(id_a, true, true))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:320:29 [INFO] [stderr] | [INFO] [stderr] 320 | (self.value(id_b, false, false) as i32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value(id_b, false, false))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:330:29 [INFO] [stderr] | [INFO] [stderr] 330 | let v = (self.value_signed(id_a, true, true) as i32) * [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value_signed(id_a, true, true))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:331:29 [INFO] [stderr] | [INFO] [stderr] 331 | (self.value_signed(id_b, false, false) as i32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value_signed(id_b, false, false))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:347:38 [INFO] [stderr] | [INFO] [stderr] 347 | self.ex = ((((b as i32) << 16) / (a as i32)) & 0xffff) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:347:58 [INFO] [stderr] | [INFO] [stderr] 347 | self.ex = ((((b as i32) << 16) / (a as i32)) & 0xffff) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:360:38 [INFO] [stderr] | [INFO] [stderr] 360 | self.ex = ((((b as i32) << 16) / (a as i32)) & 0xffff) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:360:58 [INFO] [stderr] | [INFO] [stderr] 360 | self.ex = ((((b as i32) << 16) / (a as i32)) & 0xffff) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:408:33 [INFO] [stderr] | [INFO] [stderr] 408 | self.ex = (((b as u32) << 16)>>a) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:416:53 [INFO] [stderr] | [INFO] [stderr] 416 | self.ex = (((b as u32) << 16)>> (a as u32)) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(a)` [INFO] [stderr] warning: the loop variable `i` is used to index `s` [INFO] [stderr] --> src/devices/floppy_m35fd.rs:221:46 [INFO] [stderr] | [INFO] [stderr] 221 | for i in 0..FLOPPY_SECTOR_SIZE { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] | [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 221 | for (i, ) in s.iter().enumerate().take(FLOPPY_SECTOR_SIZE) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:423:33 [INFO] [stderr] | [INFO] [stderr] 423 | self.ex = (((b as u32) << (a as u32)) >> 16) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:423:47 [INFO] [stderr] | [INFO] [stderr] 423 | self.ex = (((b as u32) << (a as u32)) >> 16) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/devices/floppy_m35fd.rs:231:37 [INFO] [stderr] | [INFO] [stderr] 231 | state = match floppy_disk.write_protected { [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 232 | | true => STATE_READY_WP, [INFO] [stderr] 233 | | false => STATE_READY, [INFO] [stderr] 234 | | }; [INFO] [stderr] | |_____________________________^ help: consider using an if/else expression: `if floppy_disk.write_protected { STATE_READY_WP } else { STATE_READY }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/devices/floppy_m35fd.rs:273:37 [INFO] [stderr] | [INFO] [stderr] 273 | state = match floppy_disk.write_protected { [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 274 | | true => STATE_READY_WP, [INFO] [stderr] 275 | | false => STATE_READY, [INFO] [stderr] 276 | | }; [INFO] [stderr] | |_____________________________^ help: consider using an if/else expression: `if floppy_disk.write_protected { STATE_READY_WP } else { STATE_READY }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the variable `j` is used as a loop counter. Consider using `for (j, item) in buffer.enumerate()` or similar iterators [INFO] [stderr] --> src/dcpu.rs:651:18 [INFO] [stderr] | [INFO] [stderr] 651 | for v in buffer { [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:653:23 [INFO] [stderr] | [INFO] [stderr] 653 | sig = v as u16; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/dcpu.rs:655:44 [INFO] [stderr] | [INFO] [stderr] 655 | self.mem[i] = (sig << 8) + (v as u16); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `assembler::PCPU` [INFO] [stderr] --> src/assembler.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | / pub fn new() -> PCPU { [INFO] [stderr] 96 | | PCPU { [INFO] [stderr] 97 | | mem: [0; MEMORY_SIZE], [INFO] [stderr] 98 | | pc: 0, [INFO] [stderr] ... | [INFO] [stderr] 107 | | } [INFO] [stderr] 108 | | } [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] 94 | impl Default for assembler::PCPU { [INFO] [stderr] 95 | fn default() -> Self { [INFO] [stderr] 96 | Self::new() [INFO] [stderr] 97 | } [INFO] [stderr] 98 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/assembler.rs:129:28 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn format_error(etype: &ParsingErrorType, cpu: &PCPU) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider passing by value instead: `ParsingErrorType` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler.rs:130:5 [INFO] [stderr] | [INFO] [stderr] 130 | / match etype { [INFO] [stderr] 131 | | &ParsingErrorType::InvalidLiteral => [INFO] [stderr] 132 | | format!("Invalid literal"), [INFO] [stderr] 133 | | &ParsingErrorType::UnclosedStringLiteral => [INFO] [stderr] ... | [INFO] [stderr] 162 | | }, [INFO] [stderr] 163 | | } [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] 130 | match *etype { [INFO] [stderr] 131 | ParsingErrorType::InvalidLiteral => [INFO] [stderr] 132 | format!("Invalid literal"), [INFO] [stderr] 133 | ParsingErrorType::UnclosedStringLiteral => [INFO] [stderr] 134 | format!("Unclosed string literal"), [INFO] [stderr] 135 | ParsingErrorType::IllegalCharacter => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:132:13 [INFO] [stderr] | [INFO] [stderr] 132 | format!("Invalid literal"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Invalid literal".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | format!("Unclosed string literal"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Unclosed string literal".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | format!("Illegal character"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Illegal character".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | format!("Line must start with an instruction or a label"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Line must start with an instruction or a label".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:140:13 [INFO] [stderr] | [INFO] [stderr] 140 | format!("Illegal L-value; unable to assign to numeric literal"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Illegal L-value; unable to assign to numeric literal".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:142:13 [INFO] [stderr] | [INFO] [stderr] 142 | format!("Expecting comma"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expecting comma".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:144:13 [INFO] [stderr] | [INFO] [stderr] 144 | format!("Expecting operand"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expecting operand".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:146:13 [INFO] [stderr] | [INFO] [stderr] 146 | format!("Expecting literal or label"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expecting literal or label".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:148:13 [INFO] [stderr] | [INFO] [stderr] 148 | format!("Expecting closing bracket"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expecting closing bracket".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:150:13 [INFO] [stderr] | [INFO] [stderr] 150 | format!("Expecting label name"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expecting label name".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:152:13 [INFO] [stderr] | [INFO] [stderr] 152 | format!("Expecting more tokens after this one"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expecting more tokens after this one".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | format!("Extra tokens found after successfully parsed line"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Extra tokens found after successfully parsed line".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:156:13 [INFO] [stderr] | [INFO] [stderr] 156 | format!("Push cannot be used as a-operand / Pop cannot be used as b-operand"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Push cannot be used as a-operand / Pop cannot be used as b-operand".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/assembler.rs:160:25 [INFO] [stderr] | [INFO] [stderr] 160 | None => format!("Unknown label definition not found"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Unknown label definition not found".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | / match self { [INFO] [stderr] 233 | | &TokenType::NumericLiteral(i) => write!(f, "NumericLiteral({})", i), [INFO] [stderr] 234 | | &TokenType::StringLiteral(i) => write!(f, "StringLiteral({})", i), [INFO] [stderr] 235 | | &TokenType::BasicOpcode(i) => write!(f, "BasicOpcode({})", i), [INFO] [stderr] ... | [INFO] [stderr] 255 | | &TokenType::Colon => write!(f, "Colon"), [INFO] [stderr] 256 | | } [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] 232 | match *self { [INFO] [stderr] 233 | TokenType::NumericLiteral(i) => write!(f, "NumericLiteral({})", i), [INFO] [stderr] 234 | TokenType::StringLiteral(i) => write!(f, "StringLiteral({})", i), [INFO] [stderr] 235 | TokenType::BasicOpcode(i) => write!(f, "BasicOpcode({})", i), [INFO] [stderr] 236 | TokenType::SpecialOpcode(i) => write!(f, "SpecialOpcode({})", i), [INFO] [stderr] 237 | TokenType::DataOpcode => write!(f, "DataOpcode"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 29 [INFO] [stderr] --> src/assembler.rs:345:1 [INFO] [stderr] | [INFO] [stderr] 345 | / pub fn tokenize(line_no: usize, line: &str, cpu: &mut PCPU) -> Result, ParsingError> { [INFO] [stderr] 346 | | let mut tokens: Vec = vec!(); [INFO] [stderr] 347 | | [INFO] [stderr] 348 | | let mut i = 0; [INFO] [stderr] ... | [INFO] [stderr] 564 | | Ok(tokens) [INFO] [stderr] 565 | | } [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/assembler.rs:567:26 [INFO] [stderr] | [INFO] [stderr] 567 | fn process_canon(tokens: &Vec, prio: usize) -> (Vec, bool) { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:638:32 [INFO] [stderr] | [INFO] [stderr] 638 | pub fn canonize_tokens(tokens: &Vec) -> 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] help: change this to [INFO] [stderr] | [INFO] [stderr] 638 | pub fn canonize_tokens(tokens: &[Token]) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] help: change `tokens.clone()` to [INFO] [stderr] | [INFO] [stderr] 639 | let mut new_tokens = tokens.to_owned(); [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/assembler.rs:671:40 [INFO] [stderr] | [INFO] [stderr] 671 | fn parse_value(line_no: usize, tokens: &Vec, cur: &mut usize, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1057:45 [INFO] [stderr] | [INFO] [stderr] 1057 | fn fetch_token_type(line_no: usize, tokens: &Vec, cur: usize) -> Result<&TokenType, ParsingError> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1071:40 [INFO] [stderr] | [INFO] [stderr] 1071 | fn check_comma(line_no: usize, tokens: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1090:46 [INFO] [stderr] | [INFO] [stderr] 1090 | fn check_end_of_line(line_no: usize, tokens: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1106:31 [INFO] [stderr] | [INFO] [stderr] 1106 | tokens: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:1110:5 [INFO] [stderr] | [INFO] [stderr] 1110 | / match ttype { [INFO] [stderr] 1111 | | &TokenType::BasicOpcode(opcode) => { [INFO] [stderr] 1112 | | *cur += 1; [INFO] [stderr] 1113 | | let b = try!(parse_value(line_no, tokens, cur, cpu, true)); [INFO] [stderr] ... | [INFO] [stderr] 1154 | | } [INFO] [stderr] 1155 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1110 | if let &TokenType::BasicOpcode(opcode) = ttype { [INFO] [stderr] 1111 | *cur += 1; [INFO] [stderr] 1112 | let b = try!(parse_value(line_no, tokens, cur, cpu, true)); [INFO] [stderr] 1113 | [INFO] [stderr] 1114 | try!(check_comma(line_no, tokens, cur)); [INFO] [stderr] 1115 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler.rs:1110:5 [INFO] [stderr] | [INFO] [stderr] 1110 | / match ttype { [INFO] [stderr] 1111 | | &TokenType::BasicOpcode(opcode) => { [INFO] [stderr] 1112 | | *cur += 1; [INFO] [stderr] 1113 | | let b = try!(parse_value(line_no, tokens, cur, cpu, true)); [INFO] [stderr] ... | [INFO] [stderr] 1154 | | } [INFO] [stderr] 1155 | | } [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] 1110 | match *ttype { [INFO] [stderr] 1111 | TokenType::BasicOpcode(opcode) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:1126:13 [INFO] [stderr] | [INFO] [stderr] 1126 | / match a.extra_byte { [INFO] [stderr] 1127 | | Some(byte) => { [INFO] [stderr] 1128 | | cpu.mem[cpu.pc as usize] = byte; [INFO] [stderr] 1129 | | if a.unassigned { [INFO] [stderr] ... | [INFO] [stderr] 1136 | | None => {}, [INFO] [stderr] 1137 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1126 | if let Some(byte) = a.extra_byte { [INFO] [stderr] 1127 | cpu.mem[cpu.pc as usize] = byte; [INFO] [stderr] 1128 | if a.unassigned { [INFO] [stderr] 1129 | let ul = UnassignedLabel{addr: cpu.pc, label: byte, offset: a.offset}; [INFO] [stderr] 1130 | cpu.unassigned_addresses.push(ul); [INFO] [stderr] 1131 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:1139:13 [INFO] [stderr] | [INFO] [stderr] 1139 | / match b.extra_byte { [INFO] [stderr] 1140 | | Some(byte) => { [INFO] [stderr] 1141 | | cpu.mem[cpu.pc as usize] = byte; [INFO] [stderr] 1142 | | if b.unassigned { [INFO] [stderr] ... | [INFO] [stderr] 1148 | | None => {}, [INFO] [stderr] 1149 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1139 | if let Some(byte) = b.extra_byte { [INFO] [stderr] 1140 | cpu.mem[cpu.pc as usize] = byte; [INFO] [stderr] 1141 | if b.unassigned { [INFO] [stderr] 1142 | let ul = UnassignedLabel{addr: cpu.pc, label: byte, offset: b.offset}; [INFO] [stderr] 1143 | cpu.unassigned_addresses.push(ul); [INFO] [stderr] 1144 | } [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/assembler.rs:1161:33 [INFO] [stderr] | [INFO] [stderr] 1161 | tokens: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:1165:5 [INFO] [stderr] | [INFO] [stderr] 1165 | / match ttype { [INFO] [stderr] 1166 | | &TokenType::SpecialOpcode(opcode) => { [INFO] [stderr] 1167 | | *cur += 1; [INFO] [stderr] 1168 | | [INFO] [stderr] ... | [INFO] [stderr] 1192 | | } [INFO] [stderr] 1193 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1165 | if let &TokenType::SpecialOpcode(opcode) = ttype { [INFO] [stderr] 1166 | *cur += 1; [INFO] [stderr] 1167 | [INFO] [stderr] 1168 | let a = try!(parse_value(line_no, tokens, cur, cpu, false)); [INFO] [stderr] 1169 | [INFO] [stderr] 1170 | try!(check_end_of_line(line_no, tokens, cur)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler.rs:1165:5 [INFO] [stderr] | [INFO] [stderr] 1165 | / match ttype { [INFO] [stderr] 1166 | | &TokenType::SpecialOpcode(opcode) => { [INFO] [stderr] 1167 | | *cur += 1; [INFO] [stderr] 1168 | | [INFO] [stderr] ... | [INFO] [stderr] 1192 | | } [INFO] [stderr] 1193 | | } [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] 1165 | match *ttype { [INFO] [stderr] 1166 | TokenType::SpecialOpcode(opcode) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:1178:13 [INFO] [stderr] | [INFO] [stderr] 1178 | / match a.extra_byte { [INFO] [stderr] 1179 | | Some(byte) => { [INFO] [stderr] 1180 | | cpu.mem[cpu.pc as usize] = byte; [INFO] [stderr] 1181 | | if a.unassigned { [INFO] [stderr] ... | [INFO] [stderr] 1187 | | None => {}, [INFO] [stderr] 1188 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1178 | if let Some(byte) = a.extra_byte { [INFO] [stderr] 1179 | cpu.mem[cpu.pc as usize] = byte; [INFO] [stderr] 1180 | if a.unassigned { [INFO] [stderr] 1181 | let ul = UnassignedLabel{addr: cpu.pc, label: byte, offset: a.offset}; [INFO] [stderr] 1182 | cpu.unassigned_addresses.push(ul); [INFO] [stderr] 1183 | } [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/assembler.rs:1199:30 [INFO] [stderr] | [INFO] [stderr] 1199 | tokens: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1218:9 [INFO] [stderr] | [INFO] [stderr] 1218 | / match ttype { [INFO] [stderr] 1219 | | &TokenType::NumericLiteral(value) => { [INFO] [stderr] 1220 | | *cur += 1; [INFO] [stderr] 1221 | | cpu.mem[cpu.pc as usize] = value; [INFO] [stderr] ... | [INFO] [stderr] 1238 | | } [INFO] [stderr] 1239 | | } [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] 1218 | match *ttype { [INFO] [stderr] 1219 | TokenType::NumericLiteral(value) => { [INFO] [stderr] 1220 | *cur += 1; [INFO] [stderr] 1221 | cpu.mem[cpu.pc as usize] = value; [INFO] [stderr] 1222 | cpu.pc += 1; [INFO] [stderr] 1223 | }, [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/assembler.rs:1245:30 [INFO] [stderr] | [INFO] [stderr] 1245 | tokens: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1253:17 [INFO] [stderr] | [INFO] [stderr] 1253 | let count = match ttype { [INFO] [stderr] | _________________^ [INFO] [stderr] 1254 | | &TokenType::NumericLiteral(value) => { [INFO] [stderr] 1255 | | *cur += 1; [INFO] [stderr] 1256 | | value [INFO] [stderr] ... | [INFO] [stderr] 1265 | | }, [INFO] [stderr] 1266 | | }; [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] 1253 | let count = match *ttype { [INFO] [stderr] 1254 | TokenType::NumericLiteral(value) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler.rs:1271:17 [INFO] [stderr] | [INFO] [stderr] 1271 | let value = match ttype2 { [INFO] [stderr] | _________________^ [INFO] [stderr] 1272 | | &TokenType::NumericLiteral(value) => { [INFO] [stderr] 1273 | | *cur += 1; [INFO] [stderr] 1274 | | value [INFO] [stderr] ... | [INFO] [stderr] 1283 | | }, [INFO] [stderr] 1284 | | }; [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] 1271 | let value = match *ttype2 { [INFO] [stderr] 1272 | TokenType::NumericLiteral(value) => { [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/assembler.rs:1297:39 [INFO] [stderr] | [INFO] [stderr] 1297 | fn parse_line(line_no: usize, tokens: &Vec, cpu: &mut PCPU, cur: &mut usize) -> Result<(), ParsingError> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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/assembler.rs:1301:5 [INFO] [stderr] | [INFO] [stderr] 1301 | / match try!(fetch_token_type(line_no, tokens, *cur)) { [INFO] [stderr] 1302 | | &TokenType::BasicOpcode(_) => { [INFO] [stderr] 1303 | | try!(parse_basic_opcode(line_no, tokens, cur, cpu)); [INFO] [stderr] 1304 | | Ok(()) [INFO] [stderr] ... | [INFO] [stderr] 1348 | | }, [INFO] [stderr] 1349 | | } [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] 1302 | TokenType::BasicOpcode(_) => { [INFO] [stderr] 1303 | try!(parse_basic_opcode(line_no, tokens, cur, cpu)); [INFO] [stderr] 1304 | Ok(()) [INFO] [stderr] 1305 | }, [INFO] [stderr] 1306 | TokenType::SpecialOpcode(_) => { [INFO] [stderr] 1307 | try!(parse_special_opcode(line_no, tokens, cur, cpu)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler.rs:1320:13 [INFO] [stderr] | [INFO] [stderr] 1320 | / match try!(fetch_token_type(line_no, tokens, *cur)) { [INFO] [stderr] 1321 | | &TokenType::Label(v) => { [INFO] [stderr] 1322 | | let label = cpu.pc; [INFO] [stderr] 1323 | | if !cpu.labels.contains_key(&v) { [INFO] [stderr] ... | [INFO] [stderr] 1338 | | } [INFO] [stderr] 1339 | | } [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] 1321 | TokenType::Label(v) => { [INFO] [stderr] 1322 | *(match $ expr { [INFO] [stderr] 1323 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 1324 | :: Err ( err ) => { [INFO] [stderr] 1325 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 1326 | $ crate :: convert :: From :: from ( err ) ) } }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/assembler.rs:1323:21 [INFO] [stderr] | [INFO] [stderr] 1323 | / if !cpu.labels.contains_key(&v) { [INFO] [stderr] 1324 | | cpu.labels.insert(v, label); [INFO] [stderr] 1325 | | } [INFO] [stderr] | |_____________________^ help: consider using: `cpu.labels.entry(v).or_insert(label)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/assembler.rs:1329:24 [INFO] [stderr] | [INFO] [stderr] 1329 | Ok(try!(parse_line(line_no, tokens, cpu, cur))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/assembler.rs:1352:21 [INFO] [stderr] | [INFO] [stderr] 1352 | pub fn parse(lines: &Vec, cpu: &mut PCPU) -> Result<(), ParsingError> { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: length comparison to zero [INFO] [stderr] --> src/assembler.rs:1360:12 [INFO] [stderr] | [INFO] [stderr] 1360 | if l.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `l.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `devices::monitor_lem1802::DeviceMonitorLEM1802` [INFO] [stderr] --> src/devices/monitor_lem1802.rs:73:5 [INFO] [stderr] | [INFO] [stderr] 73 | / pub fn new() -> DeviceMonitorLEM1802 { [INFO] [stderr] 74 | | DeviceMonitorLEM1802 { [INFO] [stderr] 75 | | connected: false, [INFO] [stderr] 76 | | ram_location: 0, [INFO] [stderr] ... | [INFO] [stderr] 80 | | } [INFO] [stderr] 81 | | } [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] 4 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/devices/monitor_lem1802.rs:113:18 [INFO] [stderr] | [INFO] [stderr] 113 | ((cpu.mem[(loc as usize + c * 2) % dcpu::MEMORY_SIZE] as u32) << 16) + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(cpu.mem[(loc as usize + c * 2) % dcpu::MEMORY_SIZE])` [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/bin/cli.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/devices/monitor_lem1802.rs:114:18 [INFO] [stderr] | [INFO] [stderr] 114 | (cpu.mem[(loc as usize + c * 2 + 1) % dcpu::MEMORY_SIZE] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(cpu.mem[(loc as usize + c * 2 + 1) % dcpu::MEMORY_SIZE])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/devices/monitor_lem1802.rs:117:18 [INFO] [stderr] | [INFO] [stderr] 117 | ((DEFAULT_FONT[c * 2] as u32) << 16) + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(DEFAULT_FONT[c * 2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/devices/monitor_lem1802.rs:118:18 [INFO] [stderr] | [INFO] [stderr] 118 | (DEFAULT_FONT[c * 2 + 1] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(DEFAULT_FONT[c * 2 + 1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `DEFAULT_FONT` [INFO] [stderr] --> src/devices/monitor_lem1802.rs:245:26 [INFO] [stderr] | [INFO] [stderr] 245 | for i in 0..DEFAULT_FONT.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 245 | for (i, ) in DEFAULT_FONT.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `DEFAULT_PALETTE` [INFO] [stderr] --> src/devices/monitor_lem1802.rs:251:26 [INFO] [stderr] | [INFO] [stderr] 251 | for i in 0..DEFAULT_PALETTE.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 251 | for (i, ) in DEFAULT_PALETTE.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `devices::clock_generic::DeviceClockGeneric` [INFO] [stderr] --> src/devices/clock_generic.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | / pub fn new() -> DeviceClockGeneric { [INFO] [stderr] 17 | | DeviceClockGeneric { [INFO] [stderr] 18 | | cycles_between_ticks: None, [INFO] [stderr] 19 | | cycles_in_current_tick: 0, [INFO] [stderr] ... | [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [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] 7 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f64 may become silently lossy if types change [INFO] [stderr] --> src/devices/clock_generic.rs:41:89 [INFO] [stderr] | [INFO] [stderr] 41 | self.cycles_between_ticks = Some(((dcpu::CYCLE_HZ as f64) / (60.0 / (reg_b as f64))) as usize); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(reg_b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/devices/clock_generic.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | / match self.cycles_between_ticks { [INFO] [stderr] 62 | | Some(n_cycles) => { [INFO] [stderr] 63 | | self.cycles_in_current_tick += cycles; [INFO] [stderr] 64 | | while self.cycles_in_current_tick >= n_cycles { [INFO] [stderr] ... | [INFO] [stderr] 74 | | }, [INFO] [stderr] 75 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 61 | if let Some(n_cycles) = self.cycles_between_ticks { [INFO] [stderr] 62 | self.cycles_in_current_tick += cycles; [INFO] [stderr] 63 | while self.cycles_in_current_tick >= n_cycles { [INFO] [stderr] 64 | self.cycles_in_current_tick -= n_cycles; [INFO] [stderr] 65 | self.ticks += 1; [INFO] [stderr] 66 | if let Some(m) = self.interrupt_message { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `devices::keyboard_generic::DeviceKeyboardGeneric` [INFO] [stderr] --> src/devices/keyboard_generic.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | / pub fn new() -> DeviceKeyboardGeneric { [INFO] [stderr] 39 | | DeviceKeyboardGeneric { [INFO] [stderr] 40 | | buffer: Vec::new(), [INFO] [stderr] 41 | | interrupt_message: None, [INFO] [stderr] 42 | | pressed: [false; 0x92], [INFO] [stderr] 43 | | } [INFO] [stderr] 44 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 37 | impl Default for devices::keyboard_generic::DeviceKeyboardGeneric { [INFO] [stderr] 38 | fn default() -> Self { [INFO] [stderr] 39 | Self::new() [INFO] [stderr] 40 | } [INFO] [stderr] 41 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `devices::floppy_m35fd::FloppyDisk` [INFO] [stderr] --> src/devices/floppy_m35fd.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | / pub fn new() -> FloppyDisk { [INFO] [stderr] 25 | | FloppyDisk { [INFO] [stderr] 26 | | sectors: Vec::new(), [INFO] [stderr] 27 | | write_protected: false, [INFO] [stderr] 28 | | } [INFO] [stderr] 29 | | } [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] 18 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `devices::floppy_m35fd::DeviceFloppyM35FD` [INFO] [stderr] --> src/devices/floppy_m35fd.rs:68:5 [INFO] [stderr] | [INFO] [stderr] 68 | / pub fn new() -> DeviceFloppyM35FD { [INFO] [stderr] 69 | | DeviceFloppyM35FD { [INFO] [stderr] 70 | | state: 0, [INFO] [stderr] 71 | | error: 0, [INFO] [stderr] ... | [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | } [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] 67 | impl Default for devices::floppy_m35fd::DeviceFloppyM35FD { [INFO] [stderr] 68 | fn default() -> Self { [INFO] [stderr] 69 | Self::new() [INFO] [stderr] 70 | } [INFO] [stderr] 71 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `s` [INFO] [stderr] --> src/devices/floppy_m35fd.rs:221:46 [INFO] [stderr] | [INFO] [stderr] 221 | for i in 0..FLOPPY_SECTOR_SIZE { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 221 | for (i, ) in s.iter().enumerate().take(FLOPPY_SECTOR_SIZE) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/devices/floppy_m35fd.rs:231:37 [INFO] [stderr] | [INFO] [stderr] 231 | state = match floppy_disk.write_protected { [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 232 | | true => STATE_READY_WP, [INFO] [stderr] 233 | | false => STATE_READY, [INFO] [stderr] 234 | | }; [INFO] [stderr] | |_____________________________^ help: consider using an if/else expression: `if floppy_disk.write_protected { STATE_READY_WP } else { STATE_READY }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/devices/floppy_m35fd.rs:273:37 [INFO] [stderr] | [INFO] [stderr] 273 | state = match floppy_disk.write_protected { [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 274 | | true => STATE_READY_WP, [INFO] [stderr] 275 | | false => STATE_READY, [INFO] [stderr] 276 | | }; [INFO] [stderr] | |_____________________________^ help: consider using an if/else expression: `if floppy_disk.write_protected { STATE_READY_WP } else { STATE_READY }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/bin/cli.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/bin/tokenizer.rs:87:21 [INFO] [stderr] | [INFO] [stderr] 87 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/bin/cli.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/bin/cli.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/bin/cli.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/bin/cli.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/bin/tokenizer.rs:87:21 [INFO] [stderr] | [INFO] [stderr] 87 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/bin/cli.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/bin/cli.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/bin/cli.rs:5:21 [INFO] [stderr] | [INFO] [stderr] 5 | pub const VERSION: &'static str = env!("CARGO_PKG_VERSION"); [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/bin/cli.rs:5:21 [INFO] [stderr] | [INFO] [stderr] 5 | pub const VERSION: &'static str = env!("CARGO_PKG_VERSION"); [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/bin/cli.rs:5:21 [INFO] [stderr] | [INFO] [stderr] 5 | pub const VERSION: &'static str = env!("CARGO_PKG_VERSION"); [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/bin/cli.rs:5:21 [INFO] [stderr] | [INFO] [stderr] 5 | pub const VERSION: &'static str = env!("CARGO_PKG_VERSION"); [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bin/assembler.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | let ref filename = matches.free[0]; [INFO] [stderr] | ----^^^^^^^^^^^^------------------- help: try: `let filename = &matches.free[0];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bin/assembler.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | / match line { [INFO] [stderr] 65 | | Ok(s) => {lines.push(s.trim_matches(x).to_string())}, [INFO] [stderr] 66 | | Err(_) => {}, [INFO] [stderr] 67 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(s) = line {lines.push(s.trim_matches(x).to_string())}` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/bin/cli.rs:5:21 [INFO] [stderr] | [INFO] [stderr] 5 | pub const VERSION: &'static str = env!("CARGO_PKG_VERSION"); [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/bin/cli.rs:5:21 [INFO] [stderr] | [INFO] [stderr] 5 | pub const VERSION: &'static str = env!("CARGO_PKG_VERSION"); [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bin/disassembler.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | let ref filename = matches.free[0]; [INFO] [stderr] | ----^^^^^^^^^^^^------------------- help: try: `let filename = &matches.free[0];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: the variable `j` is used as a loop counter. Consider using `for (j, item) in buffer.enumerate()` or similar iterators [INFO] [stderr] --> src/bin/disassembler.rs:67:22 [INFO] [stderr] | [INFO] [stderr] 67 | for v in buffer { [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/bin/disassembler.rs:69:27 [INFO] [stderr] | [INFO] [stderr] 69 | sig = v as u16; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(v)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/bin/disassembler.rs:71:52 [INFO] [stderr] | [INFO] [stderr] 71 | cpu.mem[nwords] = (sig << 8) + (v as u16); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/bin/cli.rs:5:21 [INFO] [stderr] | [INFO] [stderr] 5 | pub const VERSION: &'static str = env!("CARGO_PKG_VERSION"); [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/bin/cli.rs:5:21 [INFO] [stderr] | [INFO] [stderr] 5 | pub const VERSION: &'static str = env!("CARGO_PKG_VERSION"); [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bin/assembler.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | let ref filename = matches.free[0]; [INFO] [stderr] | ----^^^^^^^^^^^^------------------- help: try: `let filename = &matches.free[0];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bin/assembler.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | / match line { [INFO] [stderr] 65 | | Ok(s) => {lines.push(s.trim_matches(x).to_string())}, [INFO] [stderr] 66 | | Err(_) => {}, [INFO] [stderr] 67 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(s) = line {lines.push(s.trim_matches(x).to_string())}` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bin/tokenizer.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | let ref filename = matches.free[0]; [INFO] [stderr] | ----^^^^^^^^^^^^------------------- help: try: `let filename = &matches.free[0];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bin/tokenizer.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | / match line { [INFO] [stderr] 61 | | Ok(s) => {lines.push(s.trim_matches(x).to_string())}, [INFO] [stderr] 62 | | Err(_) => {}, [INFO] [stderr] 63 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(s) = line {lines.push(s.trim_matches(x).to_string())}` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bin/tokenizer.rs:70:12 [INFO] [stderr] | [INFO] [stderr] 70 | if l.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `l.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/bin/tokenizer.rs:83:20 [INFO] [stderr] | [INFO] [stderr] 83 | if new_tokens.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!new_tokens.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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bin/tokenizer.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | let ref filename = matches.free[0]; [INFO] [stderr] | ----^^^^^^^^^^^^------------------- help: try: `let filename = &matches.free[0];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bin/tokenizer.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | / match line { [INFO] [stderr] 61 | | Ok(s) => {lines.push(s.trim_matches(x).to_string())}, [INFO] [stderr] 62 | | Err(_) => {}, [INFO] [stderr] 63 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(s) = line {lines.push(s.trim_matches(x).to_string())}` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bin/tokenizer.rs:70:12 [INFO] [stderr] | [INFO] [stderr] 70 | if l.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `l.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/bin/tokenizer.rs:83:20 [INFO] [stderr] | [INFO] [stderr] 83 | if new_tokens.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!new_tokens.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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bin/disassembler.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | let ref filename = matches.free[0]; [INFO] [stderr] | ----^^^^^^^^^^^^------------------- help: try: `let filename = &matches.free[0];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bin/emulator.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | let ref filename = matches.free[0]; [INFO] [stderr] | ----^^^^^^^^^^^^------------------- help: try: `let filename = &matches.free[0];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: the variable `j` is used as a loop counter. Consider using `for (j, item) in buffer.enumerate()` or similar iterators [INFO] [stderr] --> src/bin/disassembler.rs:67:22 [INFO] [stderr] | [INFO] [stderr] 67 | for v in buffer { [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/bin/disassembler.rs:69:27 [INFO] [stderr] | [INFO] [stderr] 69 | sig = v as u16; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(v)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/bin/disassembler.rs:71:52 [INFO] [stderr] | [INFO] [stderr] 71 | cpu.mem[nwords] = (sig << 8) + (v as u16); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bin/emulator.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | let ref filename = matches.free[0]; [INFO] [stderr] | ----^^^^^^^^^^^^------------------- help: try: `let filename = &matches.free[0];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3.77s [INFO] running `"docker" "inspect" "ec15d856806e10e5bcd234104fa18d763212c8ac9a6df0ce4dad8c59e92ac97f"` [INFO] running `"docker" "rm" "-f" "ec15d856806e10e5bcd234104fa18d763212c8ac9a6df0ce4dad8c59e92ac97f"` [INFO] [stdout] ec15d856806e10e5bcd234104fa18d763212c8ac9a6df0ce4dad8c59e92ac97f