[INFO] updating cached repository katrinasm/exlev [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/katrinasm/exlev [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/katrinasm/exlev" "work/ex/clippy-test-run/sources/stable/gh/katrinasm/exlev"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/katrinasm/exlev'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/katrinasm/exlev" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/katrinasm/exlev"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/katrinasm/exlev'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 0b6650cf953a0d07ec55d5d5074c2517bda95601 [INFO] sha for GitHub repo katrinasm/exlev: 0b6650cf953a0d07ec55d5d5074c2517bda95601 [INFO] validating manifest of katrinasm/exlev 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 katrinasm/exlev 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 katrinasm/exlev [INFO] finished frobbing katrinasm/exlev [INFO] frobbed toml for katrinasm/exlev written to work/ex/clippy-test-run/sources/stable/gh/katrinasm/exlev/Cargo.toml [INFO] started frobbing katrinasm/exlev [INFO] finished frobbing katrinasm/exlev [INFO] frobbed toml for katrinasm/exlev written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/katrinasm/exlev/Cargo.toml [INFO] crate katrinasm/exlev has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting katrinasm/exlev 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/gh/katrinasm/exlev:/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] 0d10b45a78b11c48b46a6e3a8052b83713e49ba192d88aad04a4465373166ae8 [INFO] running `"docker" "start" "-a" "0d10b45a78b11c48b46a6e3a8052b83713e49ba192d88aad04a4465373166ae8"` [INFO] [stderr] Checking sxd-document v0.2.3 [INFO] [stderr] Checking sxd-xpath v0.4.0 [INFO] [stderr] Checking exlev v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spr.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/spr.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | pos_x: pos_x, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `pos_x` [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/spr.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | pos_y: pos_y, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `pos_y` [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/spr.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | xbit: xbit, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `xbit` [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/spr.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | xbytes: xbytes, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `xbytes` [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/level.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | tiles: tiles, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `tiles` [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/level.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/level.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/level.rs:146:13 [INFO] [stderr] | [INFO] [stderr] 146 | screens: screens, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `screens` [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/level.rs:149:13 [INFO] [stderr] | [INFO] [stderr] 149 | dex: dex, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dex` [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/level.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | screens: screens, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `screens` [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/level.rs:173:13 [INFO] [stderr] | [INFO] [stderr] 173 | dex: dex, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dex` [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/spr.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/spr.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | pos_x: pos_x, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `pos_x` [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/spr.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | pos_y: pos_y, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `pos_y` [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/spr.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | xbit: xbit, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `xbit` [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/spr.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | xbytes: xbytes, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `xbytes` [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/level.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | tiles: tiles, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `tiles` [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/level.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/level.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/level.rs:146:13 [INFO] [stderr] | [INFO] [stderr] 146 | screens: screens, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `screens` [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/level.rs:149:13 [INFO] [stderr] | [INFO] [stderr] 149 | dex: dex, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dex` [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/level.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | screens: screens, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `screens` [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/level.rs:173:13 [INFO] [stderr] | [INFO] [stderr] 173 | dex: dex, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dex` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/tmx/read.rs:261:12 [INFO] [stderr] | [INFO] [stderr] 261 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 262 | | if let Some(Node::Element(e)) = nodes.document_order_first() { [INFO] [stderr] 263 | | Ok(Some(e)) [INFO] [stderr] 264 | | } else { [INFO] [stderr] 265 | | Err(format!("header componenent {} is deeply messed up", name).into()) [INFO] [stderr] 266 | | } [INFO] [stderr] 267 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 261 | } else if let Some(Node::Element(e)) = nodes.document_order_first() { [INFO] [stderr] 262 | Ok(Some(e)) [INFO] [stderr] 263 | } else { [INFO] [stderr] 264 | Err(format!("header componenent {} is deeply messed up", name).into()) [INFO] [stderr] 265 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/level_table.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | ptr [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/level_table.rs:7:15 [INFO] [stderr] | [INFO] [stderr] 7 | let ptr = Address::new_from_snes_bytes(&rb[ptr_ofs .. ptr_ofs + 3], Lorom).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/tmx/read.rs:261:12 [INFO] [stderr] | [INFO] [stderr] 261 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 262 | | if let Some(Node::Element(e)) = nodes.document_order_first() { [INFO] [stderr] 263 | | Ok(Some(e)) [INFO] [stderr] 264 | | } else { [INFO] [stderr] 265 | | Err(format!("header componenent {} is deeply messed up", name).into()) [INFO] [stderr] 266 | | } [INFO] [stderr] 267 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 261 | } else if let Some(Node::Element(e)) = nodes.document_order_first() { [INFO] [stderr] 262 | Ok(Some(e)) [INFO] [stderr] 263 | } else { [INFO] [stderr] 264 | Err(format!("header componenent {} is deeply messed up", name).into()) [INFO] [stderr] 265 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/level_table.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | ptr [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/level_table.rs:7:15 [INFO] [stderr] | [INFO] [stderr] 7 | let ptr = Address::new_from_snes_bytes(&rb[ptr_ofs .. ptr_ofs + 3], Lorom).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `CResult` [INFO] [stderr] --> src/compression/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | type CResult = Result; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/entrance.rs:21:47 [INFO] [stderr] | [INFO] [stderr] 21 | } else if !secondary && sub_id > 0x10 { // only 0x10 main entrances per level [INFO] [stderr] | _______________________________________________^ [INFO] [stderr] 22 | | None [INFO] [stderr] 23 | | } else if sub_id > 0x20 { // only 0x20 secondary entrances per level [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/entrance.rs:19:30 [INFO] [stderr] | [INFO] [stderr] 19 | if levelnum >= 0x200 { // only 0x200 levels [INFO] [stderr] | ______________________________^ [INFO] [stderr] 20 | | None [INFO] [stderr] 21 | | } else if !secondary && sub_id > 0x10 { // only 0x10 main entrances per level [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/entrance.rs:87:21 [INFO] [stderr] | [INFO] [stderr] 87 | pub fn to_bytes(&self) -> [u8; 3] { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this function has too many arguments (8/7) [INFO] [stderr] --> src/entrance.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / pub fn from_parts(levelnum: u16, sub_id: u8, secondary: bool, pos_x: u16, pos_y: u16, anim: u8, slippery: bool, water: bool) [INFO] [stderr] 129 | | -> Option { [INFO] [stderr] 130 | | if let Some(id) = EntranceId::from_parts(levelnum, sub_id, secondary) { [INFO] [stderr] 131 | | Some(EntrancePlacement {id, pos_x, pos_y, anim, slippery, water, _construct: ()}) [INFO] [stderr] ... | [INFO] [stderr] 134 | | } [INFO] [stderr] 135 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `filt` [INFO] [stderr] --> src/tmx/read.rs:107:14 [INFO] [stderr] | [INFO] [stderr] 107 | for i in 0..filt.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] 107 | for (i, ) in filt.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/tmx/read.rs:226:24 [INFO] [stderr] | [INFO] [stderr] 226 | return Err(format!("bad header component (palette): should have type \"file\"").into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"bad header component (palette): should have type \"file\"".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/tmx/read.rs:241:24 [INFO] [stderr] | [INFO] [stderr] 241 | return Err(format!("bad header component (palette): has no value").into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"bad header component (palette): has no value".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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tmx/read.rs:387:88 [INFO] [stderr] | [INFO] [stderr] 387 | let anim = (attr_u32(node, "gid").ok_or("An entrance has an invalid animation")? - (firstgid as u32)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(firstgid)` [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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/tmx/read.rs:405:16 [INFO] [stderr] | [INFO] [stderr] 405 | if let Some(_) = exitmap.insert((x, y), exit) { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 406 | | return Err(format!("screen {}, {} has two exit objects", x, y).into()); [INFO] [stderr] 407 | | } [INFO] [stderr] | |_________- help: try this: `if exitmap.insert((x, y), exit).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/binlevel/write.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | let ref screendex = ScreenDex::from_level(level); [INFO] [stderr] | ----^^^^^^^^^^^^^-------------------------------- help: try: `let screendex = &ScreenDex::from_level(level);` [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 are using an explicit closure for cloning elements [INFO] [stderr] --> src/binlevel/write.rs:61:31 [INFO] [stderr] | [INFO] [stderr] 61 | for run in rle::make_runs(tile_bytes.iter().map(|v| *v)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `tile_bytes.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/binlevel/write.rs:81:12 [INFO] [stderr] | [INFO] [stderr] 81 | if scr.sprites.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `scr.sprites.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: this function has too many arguments (11/7) [INFO] [stderr] --> src/binlevel/write.rs:142:1 [INFO] [stderr] | [INFO] [stderr] 142 | / fn write_entrance( [INFO] [stderr] 143 | | dest: &mut W, [INFO] [stderr] 144 | | lvlnum: u16, [INFO] [stderr] 145 | | x: u16, y: u16, [INFO] [stderr] ... | [INFO] [stderr] 161 | | Ok(6) [INFO] [stderr] 162 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/binlevel/write.rs:202:8 [INFO] [stderr] | [INFO] [stderr] 202 | Ok(dest.write_all( [INFO] [stderr] | ________^ [INFO] [stderr] 203 | | &[v as u8, (v >> 8) as u8, (v >> 16) as u8] [INFO] [stderr] 204 | | ).unwrap()) [INFO] [stderr] | |______________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 202 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/binlevel/rle.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | / if self.it.peek().is_none() { [INFO] [stderr] 25 | | return None; [INFO] [stderr] 26 | | }; [INFO] [stderr] | |_________^ help: replace_it_with: `self.it.peek()?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/binlevel/rle.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | fn runs<'a, I: Iterator>(xs: I) -> RunIter { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `tiles` [INFO] [stderr] --> src/level.rs:19:18 [INFO] [stderr] | [INFO] [stderr] 19 | for i in 0..256 { [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] 19 | for (i, ) in tiles.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/level.rs:19:18 [INFO] [stderr] | [INFO] [stderr] 19 | for i in 0..256 { [INFO] [stderr] | ^^^^^^ help: try replacing the loop by: `tiles[..256].clone_from_slice(&self.tiles[..256])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/level.rs:56:12 [INFO] [stderr] | [INFO] [stderr] 56 | if self.sprites.len() == 0 && other.sprites.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.sprites.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/level.rs:56:39 [INFO] [stderr] | [INFO] [stderr] 56 | if self.sprites.len() == 0 && other.sprites.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `other.sprites.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: large size difference between variants [INFO] [stderr] --> src/level.rs:268:5 [INFO] [stderr] | [INFO] [stderr] 268 | Custom(SnesPal), [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 268 | Custom(Box), [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/address.rs:11:24 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn region_base(&self, n: u8) -> u32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/address.rs:14:50 [INFO] [stderr] | [INFO] [stderr] 14 | Sa1rom(_) | Sddrom(_) => 0xc0_0000 + n as u32 * 0x10_0000, [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(n)` [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 only used to index `rombytes`. [INFO] [stderr] --> src/level_table.rs:38:14 [INFO] [stderr] | [INFO] [stderr] 38 | for i in tag_start .. end { [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] 38 | for in rombytes.iter_mut().take(end).skip(tag_start) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/level_table.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | set_version(rombytes, level); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/level_table.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | let b = bytes.as_ref(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try this: `bytes` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/snes_color.rs:13:18 [INFO] [stderr] | [INFO] [stderr] 13 | red: (red as f32) / 255.0, [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f32::from(red)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/snes_color.rs:14:20 [INFO] [stderr] | [INFO] [stderr] 14 | green: (green as f32) / 255.0, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f32::from(green)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/snes_color.rs:15:19 [INFO] [stderr] | [INFO] [stderr] 15 | blue: (blue as f32) / 255.0, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f32::from(blue)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/snes_color.rs:22:18 [INFO] [stderr] | [INFO] [stderr] 22 | red: (red as f32) / 31.0, [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f32::from(red)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/snes_color.rs:23:20 [INFO] [stderr] | [INFO] [stderr] 23 | green: (green as f32) / 31.0, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f32::from(green)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/snes_color.rs:24:19 [INFO] [stderr] | [INFO] [stderr] 24 | blue: (blue as f32) / 31.0, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f32::from(blue)` [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: length comparison to zero [INFO] [stderr] --> src/compression/lc_lz_shared.rs:4:8 [INFO] [stderr] | [INFO] [stderr] 4 | if buf.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buf.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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/compression/lc_lz_shared.rs:14:42 [INFO] [stderr] | [INFO] [stderr] 14 | let (cmd, len) = (buf[0] >> 5 & 0x7, buf[0] as u16 & 0x1f); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(buf[0])` [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/compression/lc_lz_shared.rs:23:15 [INFO] [stderr] | [INFO] [stderr] 23 | ((buf[0] as u16 & 0x2) << 8) | buf[1] as u16, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(buf[0])` [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/compression/lc_lz_shared.rs:23:44 [INFO] [stderr] | [INFO] [stderr] 23 | ((buf[0] as u16 & 0x2) << 8) | buf[1] as u16, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(buf[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: bit mask could be simplified with a call to `trailing_zeros` [INFO] [stderr] --> src/rats.rs:28:16 [INFO] [stderr] | [INFO] [stderr] 28 | if i & 0x7fff == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i.trailing_zeros() >= 15` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::verbose_bit_mask)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#verbose_bit_mask [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/rats.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | assert!(data.len() != 0, "tried to insert zero-length object"); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!data.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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/rats.rs:78:6 [INFO] [stderr] | [INFO] [stderr] 78 | ((buf[0] as u16) | ((buf[1] as u16) << 8)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[0])` [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/rats.rs:78:25 [INFO] [stderr] | [INFO] [stderr] 78 | ((buf[0] as u16) | ((buf[1] as u16) << 8)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / match submain() { [INFO] [stderr] 26 | | Err(e) => println!("Error: {}", e), [INFO] [stderr] 27 | | _ => (), [INFO] [stderr] 28 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = submain() { println!("Error: {}", e) }` [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: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:63:16 [INFO] [stderr] | [INFO] [stderr] 63 | if !rom_path.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `rom_path.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:66:16 [INFO] [stderr] | [INFO] [stderr] 66 | if !action.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `action.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:71:16 [INFO] [stderr] | [INFO] [stderr] 71 | if !action.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `action.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:76:16 [INFO] [stderr] | [INFO] [stderr] 76 | if !action.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `action.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:81:16 [INFO] [stderr] | [INFO] [stderr] 81 | if !action.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `action.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:86:16 [INFO] [stderr] | [INFO] [stderr] 86 | if !action.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `action.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:89:16 [INFO] [stderr] | [INFO] [stderr] 89 | if !action.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `action.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:92:16 [INFO] [stderr] | [INFO] [stderr] 92 | if !item_path.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `item_path.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `exlev`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: type alias is never used: `CResult` [INFO] [stderr] --> src/compression/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | type CResult = Result; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/entrance.rs:21:47 [INFO] [stderr] | [INFO] [stderr] 21 | } else if !secondary && sub_id > 0x10 { // only 0x10 main entrances per level [INFO] [stderr] | _______________________________________________^ [INFO] [stderr] 22 | | None [INFO] [stderr] 23 | | } else if sub_id > 0x20 { // only 0x20 secondary entrances per level [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/entrance.rs:19:30 [INFO] [stderr] | [INFO] [stderr] 19 | if levelnum >= 0x200 { // only 0x200 levels [INFO] [stderr] | ______________________________^ [INFO] [stderr] 20 | | None [INFO] [stderr] 21 | | } else if !secondary && sub_id > 0x10 { // only 0x10 main entrances per level [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/entrance.rs:87:21 [INFO] [stderr] | [INFO] [stderr] 87 | pub fn to_bytes(&self) -> [u8; 3] { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this function has too many arguments (8/7) [INFO] [stderr] --> src/entrance.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / pub fn from_parts(levelnum: u16, sub_id: u8, secondary: bool, pos_x: u16, pos_y: u16, anim: u8, slippery: bool, water: bool) [INFO] [stderr] 129 | | -> Option { [INFO] [stderr] 130 | | if let Some(id) = EntranceId::from_parts(levelnum, sub_id, secondary) { [INFO] [stderr] 131 | | Some(EntrancePlacement {id, pos_x, pos_y, anim, slippery, water, _construct: ()}) [INFO] [stderr] ... | [INFO] [stderr] 134 | | } [INFO] [stderr] 135 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `filt` [INFO] [stderr] --> src/tmx/read.rs:107:14 [INFO] [stderr] | [INFO] [stderr] 107 | for i in 0..filt.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] 107 | for (i, ) in filt.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/tmx/read.rs:226:24 [INFO] [stderr] | [INFO] [stderr] 226 | return Err(format!("bad header component (palette): should have type \"file\"").into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"bad header component (palette): should have type \"file\"".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/tmx/read.rs:241:24 [INFO] [stderr] | [INFO] [stderr] 241 | return Err(format!("bad header component (palette): has no value").into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"bad header component (palette): has no value".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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tmx/read.rs:387:88 [INFO] [stderr] | [INFO] [stderr] 387 | let anim = (attr_u32(node, "gid").ok_or("An entrance has an invalid animation")? - (firstgid as u32)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(firstgid)` [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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/tmx/read.rs:405:16 [INFO] [stderr] | [INFO] [stderr] 405 | if let Some(_) = exitmap.insert((x, y), exit) { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 406 | | return Err(format!("screen {}, {} has two exit objects", x, y).into()); [INFO] [stderr] 407 | | } [INFO] [stderr] | |_________- help: try this: `if exitmap.insert((x, y), exit).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/binlevel/write.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | let ref screendex = ScreenDex::from_level(level); [INFO] [stderr] | ----^^^^^^^^^^^^^-------------------------------- help: try: `let screendex = &ScreenDex::from_level(level);` [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 are using an explicit closure for cloning elements [INFO] [stderr] --> src/binlevel/write.rs:61:31 [INFO] [stderr] | [INFO] [stderr] 61 | for run in rle::make_runs(tile_bytes.iter().map(|v| *v)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `tile_bytes.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/binlevel/write.rs:81:12 [INFO] [stderr] | [INFO] [stderr] 81 | if scr.sprites.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `scr.sprites.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: this function has too many arguments (11/7) [INFO] [stderr] --> src/binlevel/write.rs:142:1 [INFO] [stderr] | [INFO] [stderr] 142 | / fn write_entrance( [INFO] [stderr] 143 | | dest: &mut W, [INFO] [stderr] 144 | | lvlnum: u16, [INFO] [stderr] 145 | | x: u16, y: u16, [INFO] [stderr] ... | [INFO] [stderr] 161 | | Ok(6) [INFO] [stderr] 162 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/binlevel/write.rs:202:8 [INFO] [stderr] | [INFO] [stderr] 202 | Ok(dest.write_all( [INFO] [stderr] | ________^ [INFO] [stderr] 203 | | &[v as u8, (v >> 8) as u8, (v >> 16) as u8] [INFO] [stderr] 204 | | ).unwrap()) [INFO] [stderr] | |______________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 202 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/binlevel/rle.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | / if self.it.peek().is_none() { [INFO] [stderr] 25 | | return None; [INFO] [stderr] 26 | | }; [INFO] [stderr] | |_________^ help: replace_it_with: `self.it.peek()?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/binlevel/rle.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | fn runs<'a, I: Iterator>(xs: I) -> RunIter { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `tiles` [INFO] [stderr] --> src/level.rs:19:18 [INFO] [stderr] | [INFO] [stderr] 19 | for i in 0..256 { [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] 19 | for (i, ) in tiles.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/level.rs:19:18 [INFO] [stderr] | [INFO] [stderr] 19 | for i in 0..256 { [INFO] [stderr] | ^^^^^^ help: try replacing the loop by: `tiles[..256].clone_from_slice(&self.tiles[..256])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/level.rs:56:12 [INFO] [stderr] | [INFO] [stderr] 56 | if self.sprites.len() == 0 && other.sprites.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.sprites.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/level.rs:56:39 [INFO] [stderr] | [INFO] [stderr] 56 | if self.sprites.len() == 0 && other.sprites.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `other.sprites.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: large size difference between variants [INFO] [stderr] --> src/level.rs:268:5 [INFO] [stderr] | [INFO] [stderr] 268 | Custom(SnesPal), [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 268 | Custom(Box), [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/address.rs:11:24 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn region_base(&self, n: u8) -> u32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/address.rs:14:50 [INFO] [stderr] | [INFO] [stderr] 14 | Sa1rom(_) | Sddrom(_) => 0xc0_0000 + n as u32 * 0x10_0000, [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(n)` [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 only used to index `rombytes`. [INFO] [stderr] --> src/level_table.rs:38:14 [INFO] [stderr] | [INFO] [stderr] 38 | for i in tag_start .. end { [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] 38 | for in rombytes.iter_mut().take(end).skip(tag_start) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/level_table.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | set_version(rombytes, level); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/level_table.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | let b = bytes.as_ref(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try this: `bytes` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/snes_color.rs:13:18 [INFO] [stderr] | [INFO] [stderr] 13 | red: (red as f32) / 255.0, [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f32::from(red)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/snes_color.rs:14:20 [INFO] [stderr] | [INFO] [stderr] 14 | green: (green as f32) / 255.0, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f32::from(green)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/snes_color.rs:15:19 [INFO] [stderr] | [INFO] [stderr] 15 | blue: (blue as f32) / 255.0, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f32::from(blue)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/snes_color.rs:22:18 [INFO] [stderr] | [INFO] [stderr] 22 | red: (red as f32) / 31.0, [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f32::from(red)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/snes_color.rs:23:20 [INFO] [stderr] | [INFO] [stderr] 23 | green: (green as f32) / 31.0, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f32::from(green)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/snes_color.rs:24:19 [INFO] [stderr] | [INFO] [stderr] 24 | blue: (blue as f32) / 31.0, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f32::from(blue)` [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: length comparison to zero [INFO] [stderr] --> src/compression/lc_lz_shared.rs:4:8 [INFO] [stderr] | [INFO] [stderr] 4 | if buf.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buf.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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/compression/lc_lz_shared.rs:14:42 [INFO] [stderr] | [INFO] [stderr] 14 | let (cmd, len) = (buf[0] >> 5 & 0x7, buf[0] as u16 & 0x1f); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(buf[0])` [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/compression/lc_lz_shared.rs:23:15 [INFO] [stderr] | [INFO] [stderr] 23 | ((buf[0] as u16 & 0x2) << 8) | buf[1] as u16, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(buf[0])` [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/compression/lc_lz_shared.rs:23:44 [INFO] [stderr] | [INFO] [stderr] 23 | ((buf[0] as u16 & 0x2) << 8) | buf[1] as u16, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(buf[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: bit mask could be simplified with a call to `trailing_zeros` [INFO] [stderr] --> src/rats.rs:28:16 [INFO] [stderr] | [INFO] [stderr] 28 | if i & 0x7fff == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i.trailing_zeros() >= 15` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::verbose_bit_mask)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#verbose_bit_mask [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/rats.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | assert!(data.len() != 0, "tried to insert zero-length object"); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!data.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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/rats.rs:78:6 [INFO] [stderr] | [INFO] [stderr] 78 | ((buf[0] as u16) | ((buf[1] as u16) << 8)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[0])` [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/rats.rs:78:25 [INFO] [stderr] | [INFO] [stderr] 78 | ((buf[0] as u16) | ((buf[1] as u16) << 8)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / match submain() { [INFO] [stderr] 26 | | Err(e) => println!("Error: {}", e), [INFO] [stderr] 27 | | _ => (), [INFO] [stderr] 28 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = submain() { println!("Error: {}", e) }` [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: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:63:16 [INFO] [stderr] | [INFO] [stderr] 63 | if !rom_path.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `rom_path.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:66:16 [INFO] [stderr] | [INFO] [stderr] 66 | if !action.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `action.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:71:16 [INFO] [stderr] | [INFO] [stderr] 71 | if !action.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `action.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:76:16 [INFO] [stderr] | [INFO] [stderr] 76 | if !action.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `action.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:81:16 [INFO] [stderr] | [INFO] [stderr] 81 | if !action.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `action.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:86:16 [INFO] [stderr] | [INFO] [stderr] 86 | if !action.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `action.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:89:16 [INFO] [stderr] | [INFO] [stderr] 89 | if !action.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `action.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:92:16 [INFO] [stderr] | [INFO] [stderr] 92 | if !item_path.is_none() { return None; }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `item_path.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `exlev`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "0d10b45a78b11c48b46a6e3a8052b83713e49ba192d88aad04a4465373166ae8"` [INFO] running `"docker" "rm" "-f" "0d10b45a78b11c48b46a6e3a8052b83713e49ba192d88aad04a4465373166ae8"` [INFO] [stdout] 0d10b45a78b11c48b46a6e3a8052b83713e49ba192d88aad04a4465373166ae8