[INFO] cloning repository https://github.com/cierra-kb/reimu [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/cierra-kb/reimu" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcierra-kb%2Freimu", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcierra-kb%2Freimu'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] eda99b8d734340aedd05ac5eced8cd0068cad05d [INFO] linting cierra-kb/reimu against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcierra-kb%2Freimu" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/cierra-kb/reimu [INFO] finished tweaking git repo https://github.com/cierra-kb/reimu [INFO] tweaked toml for git repo https://github.com/cierra-kb/reimu written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/cierra-kb/reimu on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/cierra-kb/reimu already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded clap v4.5.50 [INFO] [stderr] Downloaded elf v0.8.0 [INFO] [stderr] Downloaded cpp_demangle v0.5.0 [INFO] [stderr] Downloaded clap_builder v4.5.50 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f20278204e83ae608cdaf6ce41a3388cdea523eaa50cd401e1af0c4620ffb614 [INFO] running `Command { std: "docker" "start" "-a" "f20278204e83ae608cdaf6ce41a3388cdea523eaa50cd401e1af0c4620ffb614", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f20278204e83ae608cdaf6ce41a3388cdea523eaa50cd401e1af0c4620ffb614", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f20278204e83ae608cdaf6ce41a3388cdea523eaa50cd401e1af0c4620ffb614", kill_on_drop: false }` [INFO] [stdout] f20278204e83ae608cdaf6ce41a3388cdea523eaa50cd401e1af0c4620ffb614 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e245ec4b5dc65c3641afc74f1b12c786ece0b62de6b02229d10b52ed3d4d2a43 [INFO] running `Command { std: "docker" "start" "-a" "e245ec4b5dc65c3641afc74f1b12c786ece0b62de6b02229d10b52ed3d4d2a43", kill_on_drop: false }` [INFO] [stderr] Compiling cpp_demangle v0.5.0 [INFO] [stderr] Checking elf v0.8.0 [INFO] [stderr] Checking anstream v0.6.21 [INFO] [stderr] Compiling syn v2.0.107 [INFO] [stderr] Checking clap_builder v4.5.50 [INFO] [stderr] Checking clap v4.5.50 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking reimu v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `Seek` [INFO] [stdout] --> src/binreader.rs:1:29 [INFO] [stdout] | [INFO] [stdout] 1 | use std::io::{Cursor, Read, Seek}; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/binreader.rs:76:38 [INFO] [stdout] | [INFO] [stdout] 76 | let mut position_to_string = match self.read_u32() { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 77 | | Some(offset) => offset, [INFO] [stdout] 78 | | None => return None, [INFO] [stdout] 79 | | }; [INFO] [stdout] | |_________^ help: try instead: `self.read_u32()?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `ok` [INFO] [stdout] --> src/binreader.rs:96:9 [INFO] [stdout] | [INFO] [stdout] 96 | / match String::from_utf8(buffer) { [INFO] [stdout] 97 | | Ok(str) => Some(str), [INFO] [stdout] 98 | | Err(_) => None, [INFO] [stdout] 99 | | } [INFO] [stdout] | |_________^ help: replace with: `String::from_utf8(buffer).ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_ok_err [INFO] [stdout] = note: `#[warn(clippy::manual_ok_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> src/main.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | / std::iter::repeat(" ") [INFO] [stdout] 37 | | .take(4 * level as usize) [INFO] [stdout] 38 | | .collect::(), [INFO] [stdout] | |____________________________________^ help: try: `" ".repeat(4 * level as usize)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] = note: `#[warn(clippy::manual_str_repeat)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/main.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | / std::iter::repeat(" ") [INFO] [stdout] 37 | | .take(4 * level as usize) [INFO] [stdout] | |_________________________________________^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(" ", 4 * level as usize)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:52:11 [INFO] [stdout] | [INFO] [stdout] 52 | data: &Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 52 - data: &Vec, [INFO] [stdout] 52 + data: &[u8], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/main.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | / if let Some(header) = shdrs [INFO] [stdout] 60 | | .into_iter() [INFO] [stdout] 61 | | .filter(|header| match strtab.get(header.sh_name as usize) { [INFO] [stdout] 62 | | Ok(header_name) => header_name == section_name.as_ref(), [INFO] [stdout] ... | [INFO] [stdout] 69 | | None [INFO] [stdout] 70 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 59 ~ shdrs [INFO] [stdout] 60 + .into_iter() [INFO] [stdout] 61 + .filter(|header| match strtab.get(header.sh_name as usize) { [INFO] [stdout] 62 + Ok(header_name) => header_name == section_name.as_ref(), [INFO] [stdout] 63 + Err(_) => false, [INFO] [stdout] 64 + }) [INFO] [stdout] 65 + .next().map(|header| header) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-let expression is unnecessary [INFO] [stdout] --> src/main.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | / if let Some(header) = shdrs [INFO] [stdout] 60 | | .into_iter() [INFO] [stdout] 61 | | .filter(|header| match strtab.get(header.sh_name as usize) { [INFO] [stdout] 62 | | Ok(header_name) => header_name == section_name.as_ref(), [INFO] [stdout] ... | [INFO] [stdout] 69 | | None [INFO] [stdout] 70 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_match [INFO] [stdout] = note: `#[warn(clippy::needless_match)]` on by default [INFO] [stdout] help: replace it with [INFO] [stdout] | [INFO] [stdout] 59 ~ shdrs [INFO] [stdout] 60 + .into_iter() [INFO] [stdout] 61 + .filter(|header| match strtab.get(header.sh_name as usize) { [INFO] [stdout] 62 + Ok(header_name) => header_name == section_name.as_ref(), [INFO] [stdout] 63 + Err(_) => false, [INFO] [stdout] 64 + }) [INFO] [stdout] 65 + .next() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/main.rs:59:27 [INFO] [stdout] | [INFO] [stdout] 59 | if let Some(header) = shdrs [INFO] [stdout] | ___________________________^ [INFO] [stdout] 60 | | .into_iter() [INFO] [stdout] 61 | | .filter(|header| match strtab.get(header.sh_name as usize) { [INFO] [stdout] 62 | | Ok(header_name) => header_name == section_name.as_ref(), [INFO] [stdout] 63 | | Err(_) => false, [INFO] [stdout] 64 | | }) [INFO] [stdout] 65 | | .next() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/main.rs:74:5 [INFO] [stdout] | [INFO] [stdout] 74 | / if let Some(header) = get_section_by_name(data, section_name) { [INFO] [stdout] 75 | | Some((header.sh_offset, header.sh_offset + header.sh_size)) [INFO] [stdout] 76 | | } else { [INFO] [stdout] 77 | | None [INFO] [stdout] 78 | | } [INFO] [stdout] | |_____^ help: try: `get_section_by_name(data, section_name).map(|header| (header.sh_offset, header.sh_offset + header.sh_size))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:128:5 [INFO] [stdout] | [INFO] [stdout] 128 | return (sym_addr_map, addr_sym_map); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 128 - return (sym_addr_map, addr_sym_map); [INFO] [stdout] 128 + (sym_addr_map, addr_sym_map) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:91:23 [INFO] [stdout] | [INFO] [stdout] 91 | fn dump_symbols(data: &Vec) -> (HashMap, HashMap) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 91 - fn dump_symbols(data: &Vec) -> (HashMap, HashMap) { [INFO] [stdout] 91 + fn dump_symbols(data: &[u8]) -> (HashMap, HashMap) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/main.rs:95:26 [INFO] [stdout] | [INFO] [stdout] 95 | let dynsym_section = shdrs [INFO] [stdout] | __________________________^ [INFO] [stdout] 96 | | .iter() [INFO] [stdout] 97 | | .filter(|hdr| hdr.sh_type == SHT_DYNSYM) [INFO] [stdout] 98 | | .next() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 95 ~ let dynsym_section = shdrs [INFO] [stdout] 96 + .iter().find(|hdr| hdr.sh_type == SHT_DYNSYM) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/main.rs:100:32 [INFO] [stdout] | [INFO] [stdout] 100 | let string_table_section = shdrs [INFO] [stdout] | ________________________________^ [INFO] [stdout] 101 | | .iter() [INFO] [stdout] 102 | | .filter(|hdr| hdr.sh_type == SHT_STRTAB) [INFO] [stdout] 103 | | .next() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 100 ~ let string_table_section = shdrs [INFO] [stdout] 101 + .iter().find(|hdr| hdr.sh_type == SHT_STRTAB) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:198:13 [INFO] [stdout] | [INFO] [stdout] 198 | return; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 197 - // reference: _ZTI17TextInputDelegate (1.3) [INFO] [stdout] 198 - return; [INFO] [stdout] 197 + // reference: _ZTI17TextInputDelegate (1.3) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:143:13 [INFO] [stdout] | [INFO] [stdout] 143 | / return get_file_offset_for_address_under_section(reader_data, ".rodata", address.into()) [INFO] [stdout] 144 | | as u32; [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 143 ~ get_file_offset_for_address_under_section(reader_data, ".rodata", address.into()) [INFO] [stdout] 144 ~ as u32 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:241:8 [INFO] [stdout] | [INFO] [stdout] 241 | if !class_name.find("::").is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `class_name.find("::").is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/main.rs:250:5 [INFO] [stdout] | [INFO] [stdout] 250 | mangled.push_str("E"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `mangled.push('E')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:257:21 [INFO] [stdout] | [INFO] [stdout] 257 | cxxabi_offsets: &Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 257 - cxxabi_offsets: &Vec, [INFO] [stdout] 257 + cxxabi_offsets: &[u32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:307:59 [INFO] [stdout] | [INFO] [stdout] 307 | let table = handle_vtable(reader, class_typeinfo, &cxxabi_offsets); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `cxxabi_offsets` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Seek` [INFO] [stdout] --> src/binreader.rs:1:29 [INFO] [stdout] | [INFO] [stdout] 1 | use std::io::{Cursor, Read, Seek}; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:352:18 [INFO] [stdout] | [INFO] [stdout] 352 | .expect(format!("failed to read given path: {:?}", game_bin_path).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("failed to read given path: {:?}", game_bin_path))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:363:18 [INFO] [stdout] | [INFO] [stdout] 363 | .expect(format!("failed to read given path: {:?}", game_bin_path).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("failed to read given path: {:?}", game_bin_path))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:382:26 [INFO] [stdout] | [INFO] [stdout] 382 | .expect(format!("unknown symbol for vtable: {:?}", vtable_symbol).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("unknown symbol for vtable: {:?}", vtable_symbol))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:421:59 [INFO] [stdout] | [INFO] [stdout] 421 | (*sym_to_addr.get(&vtable_symbol).expect( [INFO] [stdout] | ___________________________________________________________^ [INFO] [stdout] 422 | | format!("unknown symbol for vtable: {:?}", vtable_symbol).as_str(), [INFO] [stdout] 423 | | )) [INFO] [stdout] | |_________________________^ help: try: `unwrap_or_else(|| panic!("unknown symbol for vtable: {:?}", vtable_symbol))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `u32` [INFO] [stdout] --> src/main.rs:428:25 [INFO] [stdout] | [INFO] [stdout] 428 | vtable_offset.try_into().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing `.try_into()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/main.rs:437:39 [INFO] [stdout] | [INFO] [stdout] 437 | ... name: (&addr_to_sym[addr]).clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `addr_to_sym[addr]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:469:28 [INFO] [stdout] | [INFO] [stdout] 469 | if inherit_info.base.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!inherit_info.base.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:493:54 [INFO] [stdout] | [INFO] [stdout] 493 | ... let symbol = addr_to_sym[&addr].to_owned(); [INFO] [stdout] | ^^^^^ help: change this to: `addr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/main.rs:579:51 [INFO] [stdout] | [INFO] [stdout] 579 | ... let mut sig = (&demangled[start_of_args..]).to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `demangled[start_of_args..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/binreader.rs:76:38 [INFO] [stdout] | [INFO] [stdout] 76 | let mut position_to_string = match self.read_u32() { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 77 | | Some(offset) => offset, [INFO] [stdout] 78 | | None => return None, [INFO] [stdout] 79 | | }; [INFO] [stdout] | |_________^ help: try instead: `self.read_u32()?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `ok` [INFO] [stdout] --> src/binreader.rs:96:9 [INFO] [stdout] | [INFO] [stdout] 96 | / match String::from_utf8(buffer) { [INFO] [stdout] 97 | | Ok(str) => Some(str), [INFO] [stdout] 98 | | Err(_) => None, [INFO] [stdout] 99 | | } [INFO] [stdout] | |_________^ help: replace with: `String::from_utf8(buffer).ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_ok_err [INFO] [stdout] = note: `#[warn(clippy::manual_ok_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> src/main.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | / std::iter::repeat(" ") [INFO] [stdout] 37 | | .take(4 * level as usize) [INFO] [stdout] 38 | | .collect::(), [INFO] [stdout] | |____________________________________^ help: try: `" ".repeat(4 * level as usize)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] = note: `#[warn(clippy::manual_str_repeat)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/main.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | / std::iter::repeat(" ") [INFO] [stdout] 37 | | .take(4 * level as usize) [INFO] [stdout] | |_________________________________________^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(" ", 4 * level as usize)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:52:11 [INFO] [stdout] | [INFO] [stdout] 52 | data: &Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 52 - data: &Vec, [INFO] [stdout] 52 + data: &[u8], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/main.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | / if let Some(header) = shdrs [INFO] [stdout] 60 | | .into_iter() [INFO] [stdout] 61 | | .filter(|header| match strtab.get(header.sh_name as usize) { [INFO] [stdout] 62 | | Ok(header_name) => header_name == section_name.as_ref(), [INFO] [stdout] ... | [INFO] [stdout] 69 | | None [INFO] [stdout] 70 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 59 ~ shdrs [INFO] [stdout] 60 + .into_iter() [INFO] [stdout] 61 + .filter(|header| match strtab.get(header.sh_name as usize) { [INFO] [stdout] 62 + Ok(header_name) => header_name == section_name.as_ref(), [INFO] [stdout] 63 + Err(_) => false, [INFO] [stdout] 64 + }) [INFO] [stdout] 65 + .next().map(|header| header) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-let expression is unnecessary [INFO] [stdout] --> src/main.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | / if let Some(header) = shdrs [INFO] [stdout] 60 | | .into_iter() [INFO] [stdout] 61 | | .filter(|header| match strtab.get(header.sh_name as usize) { [INFO] [stdout] 62 | | Ok(header_name) => header_name == section_name.as_ref(), [INFO] [stdout] ... | [INFO] [stdout] 69 | | None [INFO] [stdout] 70 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_match [INFO] [stdout] = note: `#[warn(clippy::needless_match)]` on by default [INFO] [stdout] help: replace it with [INFO] [stdout] | [INFO] [stdout] 59 ~ shdrs [INFO] [stdout] 60 + .into_iter() [INFO] [stdout] 61 + .filter(|header| match strtab.get(header.sh_name as usize) { [INFO] [stdout] 62 + Ok(header_name) => header_name == section_name.as_ref(), [INFO] [stdout] 63 + Err(_) => false, [INFO] [stdout] 64 + }) [INFO] [stdout] 65 + .next() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/main.rs:59:27 [INFO] [stdout] | [INFO] [stdout] 59 | if let Some(header) = shdrs [INFO] [stdout] | ___________________________^ [INFO] [stdout] 60 | | .into_iter() [INFO] [stdout] 61 | | .filter(|header| match strtab.get(header.sh_name as usize) { [INFO] [stdout] 62 | | Ok(header_name) => header_name == section_name.as_ref(), [INFO] [stdout] 63 | | Err(_) => false, [INFO] [stdout] 64 | | }) [INFO] [stdout] 65 | | .next() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/main.rs:74:5 [INFO] [stdout] | [INFO] [stdout] 74 | / if let Some(header) = get_section_by_name(data, section_name) { [INFO] [stdout] 75 | | Some((header.sh_offset, header.sh_offset + header.sh_size)) [INFO] [stdout] 76 | | } else { [INFO] [stdout] 77 | | None [INFO] [stdout] 78 | | } [INFO] [stdout] | |_____^ help: try: `get_section_by_name(data, section_name).map(|header| (header.sh_offset, header.sh_offset + header.sh_size))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:128:5 [INFO] [stdout] | [INFO] [stdout] 128 | return (sym_addr_map, addr_sym_map); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 128 - return (sym_addr_map, addr_sym_map); [INFO] [stdout] 128 + (sym_addr_map, addr_sym_map) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:91:23 [INFO] [stdout] | [INFO] [stdout] 91 | fn dump_symbols(data: &Vec) -> (HashMap, HashMap) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 91 - fn dump_symbols(data: &Vec) -> (HashMap, HashMap) { [INFO] [stdout] 91 + fn dump_symbols(data: &[u8]) -> (HashMap, HashMap) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/main.rs:95:26 [INFO] [stdout] | [INFO] [stdout] 95 | let dynsym_section = shdrs [INFO] [stdout] | __________________________^ [INFO] [stdout] 96 | | .iter() [INFO] [stdout] 97 | | .filter(|hdr| hdr.sh_type == SHT_DYNSYM) [INFO] [stdout] 98 | | .next() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 95 ~ let dynsym_section = shdrs [INFO] [stdout] 96 + .iter().find(|hdr| hdr.sh_type == SHT_DYNSYM) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/main.rs:100:32 [INFO] [stdout] | [INFO] [stdout] 100 | let string_table_section = shdrs [INFO] [stdout] | ________________________________^ [INFO] [stdout] 101 | | .iter() [INFO] [stdout] 102 | | .filter(|hdr| hdr.sh_type == SHT_STRTAB) [INFO] [stdout] 103 | | .next() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 100 ~ let string_table_section = shdrs [INFO] [stdout] 101 + .iter().find(|hdr| hdr.sh_type == SHT_STRTAB) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:198:13 [INFO] [stdout] | [INFO] [stdout] 198 | return; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 197 - // reference: _ZTI17TextInputDelegate (1.3) [INFO] [stdout] 198 - return; [INFO] [stdout] 197 + // reference: _ZTI17TextInputDelegate (1.3) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:143:13 [INFO] [stdout] | [INFO] [stdout] 143 | / return get_file_offset_for_address_under_section(reader_data, ".rodata", address.into()) [INFO] [stdout] 144 | | as u32; [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 143 ~ get_file_offset_for_address_under_section(reader_data, ".rodata", address.into()) [INFO] [stdout] 144 ~ as u32 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:241:8 [INFO] [stdout] | [INFO] [stdout] 241 | if !class_name.find("::").is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `class_name.find("::").is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/main.rs:250:5 [INFO] [stdout] | [INFO] [stdout] 250 | mangled.push_str("E"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `mangled.push('E')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:257:21 [INFO] [stdout] | [INFO] [stdout] 257 | cxxabi_offsets: &Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 257 - cxxabi_offsets: &Vec, [INFO] [stdout] 257 + cxxabi_offsets: &[u32], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:307:59 [INFO] [stdout] | [INFO] [stdout] 307 | let table = handle_vtable(reader, class_typeinfo, &cxxabi_offsets); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `cxxabi_offsets` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.00s [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:352:18 [INFO] [stdout] | [INFO] [stdout] 352 | .expect(format!("failed to read given path: {:?}", game_bin_path).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("failed to read given path: {:?}", game_bin_path))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:363:18 [INFO] [stdout] | [INFO] [stdout] 363 | .expect(format!("failed to read given path: {:?}", game_bin_path).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("failed to read given path: {:?}", game_bin_path))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:382:26 [INFO] [stdout] | [INFO] [stdout] 382 | .expect(format!("unknown symbol for vtable: {:?}", vtable_symbol).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("unknown symbol for vtable: {:?}", vtable_symbol))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:421:59 [INFO] [stdout] | [INFO] [stdout] 421 | (*sym_to_addr.get(&vtable_symbol).expect( [INFO] [stdout] | ___________________________________________________________^ [INFO] [stdout] 422 | | format!("unknown symbol for vtable: {:?}", vtable_symbol).as_str(), [INFO] [stdout] 423 | | )) [INFO] [stdout] | |_________________________^ help: try: `unwrap_or_else(|| panic!("unknown symbol for vtable: {:?}", vtable_symbol))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `u32` [INFO] [stdout] --> src/main.rs:428:25 [INFO] [stdout] | [INFO] [stdout] 428 | vtable_offset.try_into().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing `.try_into()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/main.rs:437:39 [INFO] [stdout] | [INFO] [stdout] 437 | ... name: (&addr_to_sym[addr]).clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `addr_to_sym[addr]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:469:28 [INFO] [stdout] | [INFO] [stdout] 469 | if inherit_info.base.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!inherit_info.base.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:493:54 [INFO] [stdout] | [INFO] [stdout] 493 | ... let symbol = addr_to_sym[&addr].to_owned(); [INFO] [stdout] | ^^^^^ help: change this to: `addr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/main.rs:579:51 [INFO] [stdout] | [INFO] [stdout] 579 | ... let mut sig = (&demangled[start_of_args..]).to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `demangled[start_of_args..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "e245ec4b5dc65c3641afc74f1b12c786ece0b62de6b02229d10b52ed3d4d2a43", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e245ec4b5dc65c3641afc74f1b12c786ece0b62de6b02229d10b52ed3d4d2a43", kill_on_drop: false }` [INFO] [stdout] e245ec4b5dc65c3641afc74f1b12c786ece0b62de6b02229d10b52ed3d4d2a43