[INFO] updating cached repository mazurwiktor/memlyzer [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/mazurwiktor/memlyzer [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/mazurwiktor/memlyzer" "work/ex/clippy-test-run/sources/stable/gh/mazurwiktor/memlyzer"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/mazurwiktor/memlyzer'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/mazurwiktor/memlyzer" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mazurwiktor/memlyzer"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mazurwiktor/memlyzer'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 39653f43879bd0e3f5209d70a23c75a013451d6b [INFO] sha for GitHub repo mazurwiktor/memlyzer: 39653f43879bd0e3f5209d70a23c75a013451d6b [INFO] validating manifest of mazurwiktor/memlyzer 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 mazurwiktor/memlyzer 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 mazurwiktor/memlyzer [INFO] finished frobbing mazurwiktor/memlyzer [INFO] frobbed toml for mazurwiktor/memlyzer written to work/ex/clippy-test-run/sources/stable/gh/mazurwiktor/memlyzer/Cargo.toml [INFO] started frobbing mazurwiktor/memlyzer [INFO] finished frobbing mazurwiktor/memlyzer [INFO] frobbed toml for mazurwiktor/memlyzer written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mazurwiktor/memlyzer/Cargo.toml [INFO] crate mazurwiktor/memlyzer 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 mazurwiktor/memlyzer against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/mazurwiktor/memlyzer:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 8f78a7e3764ecab3fd4f20ef28b71c33b2218cfbf788ca6826183d67e967eb65 [INFO] running `"docker" "start" "-a" "8f78a7e3764ecab3fd4f20ef28b71c33b2218cfbf788ca6826183d67e967eb65"` [INFO] [stderr] Checking chrono v0.4.4 [INFO] [stderr] Checking config v0.9.0 [INFO] [stderr] Checking simplelog v0.5.2 [INFO] [stderr] Checking memlyzer v0.1.1 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/memory.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | return self.messages.is_empty(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.messages.is_empty()` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/memory.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | msgs [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/memory.rs:48:16 [INFO] [stderr] | [INFO] [stderr] 48 | let msgs = entry_idexes(raw_memory, "Loot of") [INFO] [stderr] | ________________^ [INFO] [stderr] 49 | | .iter() [INFO] [stderr] 50 | | .map(|idx| { [INFO] [stderr] 51 | | let entry = &entry(&raw_memory[*idx..]); [INFO] [stderr] 52 | | Message::from(entry, magic_number(&raw_memory, *idx, entry)) [INFO] [stderr] 53 | | }) [INFO] [stderr] 54 | | .collect(); [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: unneeded return statement [INFO] [stderr] --> src/memory.rs:76:5 [INFO] [stderr] | [INFO] [stderr] 76 | return indexes; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `indexes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/memory.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | / if *_byte == keyword_bytes[0] { [INFO] [stderr] 69 | | if raw_memory[idx..].len() > keyword_bytes.len() { [INFO] [stderr] 70 | | if raw_memory[idx..idx + keyword_bytes.len()] == *keyword_bytes { [INFO] [stderr] 71 | | indexes.push(idx); [INFO] [stderr] 72 | | } [INFO] [stderr] 73 | | } [INFO] [stderr] 74 | | } [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] 68 | if *_byte == keyword_bytes[0] && raw_memory[idx..].len() > keyword_bytes.len() { [INFO] [stderr] 69 | if raw_memory[idx..idx + keyword_bytes.len()] == *keyword_bytes { [INFO] [stderr] 70 | indexes.push(idx); [INFO] [stderr] 71 | } [INFO] [stderr] 72 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/memory.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | / if raw_memory[idx..].len() > keyword_bytes.len() { [INFO] [stderr] 70 | | if raw_memory[idx..idx + keyword_bytes.len()] == *keyword_bytes { [INFO] [stderr] 71 | | indexes.push(idx); [INFO] [stderr] 72 | | } [INFO] [stderr] 73 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 69 | if raw_memory[idx..].len() > keyword_bytes.len() && raw_memory[idx..idx + keyword_bytes.len()] == *keyword_bytes { [INFO] [stderr] 70 | indexes.push(idx); [INFO] [stderr] 71 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/memory.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | return self.messages.is_empty(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.messages.is_empty()` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/memory.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | msgs [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/memory.rs:48:16 [INFO] [stderr] | [INFO] [stderr] 48 | let msgs = entry_idexes(raw_memory, "Loot of") [INFO] [stderr] | ________________^ [INFO] [stderr] 49 | | .iter() [INFO] [stderr] 50 | | .map(|idx| { [INFO] [stderr] 51 | | let entry = &entry(&raw_memory[*idx..]); [INFO] [stderr] 52 | | Message::from(entry, magic_number(&raw_memory, *idx, entry)) [INFO] [stderr] 53 | | }) [INFO] [stderr] 54 | | .collect(); [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: unneeded return statement [INFO] [stderr] --> src/memory.rs:76:5 [INFO] [stderr] | [INFO] [stderr] 76 | return indexes; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `indexes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/memory.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | / if *_byte == keyword_bytes[0] { [INFO] [stderr] 69 | | if raw_memory[idx..].len() > keyword_bytes.len() { [INFO] [stderr] 70 | | if raw_memory[idx..idx + keyword_bytes.len()] == *keyword_bytes { [INFO] [stderr] 71 | | indexes.push(idx); [INFO] [stderr] 72 | | } [INFO] [stderr] 73 | | } [INFO] [stderr] 74 | | } [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] 68 | if *_byte == keyword_bytes[0] && raw_memory[idx..].len() > keyword_bytes.len() { [INFO] [stderr] 69 | if raw_memory[idx..idx + keyword_bytes.len()] == *keyword_bytes { [INFO] [stderr] 70 | indexes.push(idx); [INFO] [stderr] 71 | } [INFO] [stderr] 72 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/memory.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | / if raw_memory[idx..].len() > keyword_bytes.len() { [INFO] [stderr] 70 | | if raw_memory[idx..idx + keyword_bytes.len()] == *keyword_bytes { [INFO] [stderr] 71 | | indexes.push(idx); [INFO] [stderr] 72 | | } [INFO] [stderr] 73 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 69 | if raw_memory[idx..].len() > keyword_bytes.len() && raw_memory[idx..idx + keyword_bytes.len()] == *keyword_bytes { [INFO] [stderr] 70 | indexes.push(idx); [INFO] [stderr] 71 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/client.rs:46:45 [INFO] [stderr] | [INFO] [stderr] 46 | let processes: Vec<&str> = stdout.split("\n").collect(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/client.rs:54:47 [INFO] [stderr] | [INFO] [stderr] 54 | let process_entry = process.split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/client.rs:79:16 [INFO] [stderr] | [INFO] [stderr] 79 | if let Some(_) = line.find("heap") { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 80 | | // 1234-1235 rw-p 00000000 00:00 0 [heap] [INFO] [stderr] 81 | | let region = line.split(" ").collect::>()[0] [INFO] [stderr] 82 | | .split("-") [INFO] [stderr] ... | [INFO] [stderr] 91 | | }); [INFO] [stderr] 92 | | } [INFO] [stderr] | |_________- help: try this: `if line.find("heap").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: single-character string constant used as pattern [INFO] [stderr] --> src/client.rs:82:24 [INFO] [stderr] | [INFO] [stderr] 82 | .split("-") [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/client.rs:81:37 [INFO] [stderr] | [INFO] [stderr] 81 | let region = line.split(" ").collect::>()[0] [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/loot.rs:36:20 [INFO] [stderr] | [INFO] [stderr] 36 | .split(":") [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/loot.rs:54:18 [INFO] [stderr] | [INFO] [stderr] 54 | .map(|s| String::from(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/loot.rs:48:20 [INFO] [stderr] | [INFO] [stderr] 48 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/loot.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | / pub fn monster_name<'a>(&'a self) -> &'a str { [INFO] [stderr] 89 | | &self.monster [INFO] [stderr] 90 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/loot.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | / pub fn looted_items<'a>(&'a self) -> String { [INFO] [stderr] 93 | | self.items.join(", ") [INFO] [stderr] 94 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/memory.rs:61:33 [INFO] [stderr] | [INFO] [stderr] 61 | .fold(0, |sum, b| sum + *b as u32) [INFO] [stderr] | ^^^^^^^^^ help: try: `u32::from(*b)` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/memory.rs:86:18 [INFO] [stderr] | [INFO] [stderr] 86 | let _bytes = chunk [INFO] [stderr] | __________________^ [INFO] [stderr] 87 | | .iter() [INFO] [stderr] 88 | | .filter(|b| **b != '\0' as u8) [INFO] [stderr] 89 | | .take_while(|b| **b < 127u8) [INFO] [stderr] 90 | | .map(|b| *b) [INFO] [stderr] | |____________________^ [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] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 86 | let _bytes = chunk [INFO] [stderr] 87 | .iter() [INFO] [stderr] 88 | .filter(|b| **b != '\0' as u8) [INFO] [stderr] 89 | .take_while(|b| **b < 127u8).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/memory.rs:88:28 [INFO] [stderr] | [INFO] [stderr] 88 | .filter(|b| **b != '\0' as u8) [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'\0' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:50:22 [INFO] [stderr] | [INFO] [stderr] 50 | &format!("{}", loot.monster_name()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `loot.monster_name().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] = 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: useless use of `format!` [INFO] [stderr] --> src/main.rs:51:22 [INFO] [stderr] | [INFO] [stderr] 51 | &format!("{}", loot.looted_items()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `loot.looted_items().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] = 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: single-character string constant used as pattern [INFO] [stderr] --> src/client.rs:46:45 [INFO] [stderr] | [INFO] [stderr] 46 | let processes: Vec<&str> = stdout.split("\n").collect(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/client.rs:54:47 [INFO] [stderr] | [INFO] [stderr] 54 | let process_entry = process.split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/client.rs:79:16 [INFO] [stderr] | [INFO] [stderr] 79 | if let Some(_) = line.find("heap") { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 80 | | // 1234-1235 rw-p 00000000 00:00 0 [heap] [INFO] [stderr] 81 | | let region = line.split(" ").collect::>()[0] [INFO] [stderr] 82 | | .split("-") [INFO] [stderr] ... | [INFO] [stderr] 91 | | }); [INFO] [stderr] 92 | | } [INFO] [stderr] | |_________- help: try this: `if line.find("heap").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: single-character string constant used as pattern [INFO] [stderr] --> src/client.rs:82:24 [INFO] [stderr] | [INFO] [stderr] 82 | .split("-") [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/client.rs:81:37 [INFO] [stderr] | [INFO] [stderr] 81 | let region = line.split(" ").collect::>()[0] [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/loot.rs:36:20 [INFO] [stderr] | [INFO] [stderr] 36 | .split(":") [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/loot.rs:54:18 [INFO] [stderr] | [INFO] [stderr] 54 | .map(|s| String::from(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/loot.rs:48:20 [INFO] [stderr] | [INFO] [stderr] 48 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/loot.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | / pub fn monster_name<'a>(&'a self) -> &'a str { [INFO] [stderr] 89 | | &self.monster [INFO] [stderr] 90 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/loot.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | / pub fn looted_items<'a>(&'a self) -> String { [INFO] [stderr] 93 | | self.items.join(", ") [INFO] [stderr] 94 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/loot.rs:124:39 [INFO] [stderr] | [INFO] [stderr] 124 | let loot = Loot::from(msg).filter(&vec![String::from("x")]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[String::from("x")]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/loot.rs:131:39 [INFO] [stderr] | [INFO] [stderr] 131 | let loot = Loot::from(msg).filter(&vec![String::from("y")]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[String::from("y")]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/loot.rs:138:39 [INFO] [stderr] | [INFO] [stderr] 138 | let loot = Loot::from(msg).filter(&vec![ [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 139 | | String::from("y"), [INFO] [stderr] 140 | | String::from("z"), [INFO] [stderr] 141 | | String::from("a"), [INFO] [stderr] 142 | | ]); [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] help: you can use a slice directly [INFO] [stderr] | [INFO] [stderr] 138 | let loot = Loot::from(msg).filter(&[String::from("y"), [INFO] [stderr] 139 | String::from("z"), [INFO] [stderr] 140 | String::from("a")]); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/loot.rs:149:39 [INFO] [stderr] | [INFO] [stderr] 149 | let loot = Loot::from(msg).filter(&vec![String::from("a")]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[String::from("a")]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/loot.rs:156:39 [INFO] [stderr] | [INFO] [stderr] 156 | let loot = Loot::from(msg).filter(&vec![ [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 157 | | String::from("a"), [INFO] [stderr] 158 | | String::from("b"), [INFO] [stderr] 159 | | String::from("zch"), [INFO] [stderr] 160 | | ]); [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] help: you can use a slice directly [INFO] [stderr] | [INFO] [stderr] 156 | let loot = Loot::from(msg).filter(&[String::from("a"), [INFO] [stderr] 157 | String::from("b"), [INFO] [stderr] 158 | String::from("zch")]); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/memory.rs:61:33 [INFO] [stderr] | [INFO] [stderr] 61 | .fold(0, |sum, b| sum + *b as u32) [INFO] [stderr] | ^^^^^^^^^ help: try: `u32::from(*b)` [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/memory.rs:81:22 [INFO] [stderr] | [INFO] [stderr] 81 | let raw_memory = "01234Loot of a sandcrawler: 4 gold coin".as_bytes(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"01234Loot of a sandcrawler: 4 gold coin"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/memory.rs:86:18 [INFO] [stderr] | [INFO] [stderr] 86 | let _bytes = chunk [INFO] [stderr] | __________________^ [INFO] [stderr] 87 | | .iter() [INFO] [stderr] 88 | | .filter(|b| **b != '\0' as u8) [INFO] [stderr] 89 | | .take_while(|b| **b < 127u8) [INFO] [stderr] 90 | | .map(|b| *b) [INFO] [stderr] | |____________________^ [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] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 86 | let _bytes = chunk [INFO] [stderr] 87 | .iter() [INFO] [stderr] 88 | .filter(|b| **b != '\0' as u8) [INFO] [stderr] 89 | .take_while(|b| **b < 127u8).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/memory.rs:88:28 [INFO] [stderr] | [INFO] [stderr] 88 | .filter(|b| **b != '\0' as u8) [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'\0' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/memory.rs:101:15 [INFO] [stderr] | [INFO] [stderr] 101 | let msg = "Loot of a sandcrawler: 4 gold coin ".as_bytes(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"Loot of a sandcrawler: 4 gold coin "` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/memory.rs:113:15 [INFO] [stderr] | [INFO] [stderr] 113 | let msg = "Loot of a x: x xl".as_bytes(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"Loot of a x: x xl"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:50:22 [INFO] [stderr] | [INFO] [stderr] 50 | &format!("{}", loot.monster_name()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `loot.monster_name().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] = 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: useless use of `format!` [INFO] [stderr] --> src/main.rs:51:22 [INFO] [stderr] | [INFO] [stderr] 51 | &format!("{}", loot.looted_items()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `loot.looted_items().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] = 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] Finished dev [unoptimized + debuginfo] target(s) in 6.13s [INFO] running `"docker" "inspect" "8f78a7e3764ecab3fd4f20ef28b71c33b2218cfbf788ca6826183d67e967eb65"` [INFO] running `"docker" "rm" "-f" "8f78a7e3764ecab3fd4f20ef28b71c33b2218cfbf788ca6826183d67e967eb65"` [INFO] [stdout] 8f78a7e3764ecab3fd4f20ef28b71c33b2218cfbf788ca6826183d67e967eb65