[INFO] cloning repository https://github.com/qian160/rvld [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/qian160/rvld" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqian160%2Frvld", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqian160%2Frvld'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] e6534ce1caf62c65f33a67d2240952dd170db95a [INFO] linting qian160/rvld against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqian160%2Frvld" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/qian160/rvld [INFO] finished tweaking git repo https://github.com/qian160/rvld [INFO] tweaked toml for git repo https://github.com/qian160/rvld written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/qian160/rvld 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/qian160/rvld 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] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded elf v0.7.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 81fa4b6be9ca6b538d82c76a08010c79cfe5c03c8188eda61b355b7aaa6fa74d [INFO] running `Command { std: "docker" "start" "-a" "81fa4b6be9ca6b538d82c76a08010c79cfe5c03c8188eda61b355b7aaa6fa74d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "81fa4b6be9ca6b538d82c76a08010c79cfe5c03c8188eda61b355b7aaa6fa74d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "81fa4b6be9ca6b538d82c76a08010c79cfe5c03c8188eda61b355b7aaa6fa74d", kill_on_drop: false }` [INFO] [stdout] 81fa4b6be9ca6b538d82c76a08010c79cfe5c03c8188eda61b355b7aaa6fa74d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 6dd5245c8fd4c602967e77fb6ad05110dca91b8d6794c4b4c96f10a8a53d2149 [INFO] running `Command { std: "docker" "start" "-a" "6dd5245c8fd4c602967e77fb6ad05110dca91b8d6794c4b4c96f10a8a53d2149", kill_on_drop: false }` [INFO] [stderr] Checking elf v0.7.2 [INFO] [stderr] Checking rvld v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/utils.rs:136:1 [INFO] [stdout] | [INFO] [stdout] 136 | / /// an ugly function to deal with rust's borrow rules... [INFO] [stdout] ... | [INFO] [stdout] 140 | | [INFO] [stdout] | |_^ [INFO] [stdout] 141 | pub fn ptr2ref(ptr: *mut T) -> &'static mut T { [INFO] [stdout] | -------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the doc comment should not document function `ptr2ref` then comment it out [INFO] [stdout] | [INFO] [stdout] 136 | // /// an ugly function to deal with rust's borrow rules... [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/linker/elf.rs:193:2 [INFO] [stdout] | [INFO] [stdout] 193 | / /// some special shndx values [INFO] [stdout] 194 | | [INFO] [stdout] | |____^ [INFO] [stdout] 195 | /// Symbols with st_shndx=SHN_ABS are absolute and are not affected by relocation. [INFO] [stdout] 196 | pub fn IsAbs(&self) -> bool { [INFO] [stdout] | ------------ the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the documentation should include the empty line include it in the comment [INFO] [stdout] | [INFO] [stdout] 194 | /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/utils.rs:136:1 [INFO] [stdout] | [INFO] [stdout] 136 | / /// an ugly function to deal with rust's borrow rules... [INFO] [stdout] ... | [INFO] [stdout] 140 | | [INFO] [stdout] | |_^ [INFO] [stdout] 141 | pub fn ptr2ref(ptr: *mut T) -> &'static mut T { [INFO] [stdout] | -------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the doc comment should not document function `ptr2ref` then comment it out [INFO] [stdout] | [INFO] [stdout] 136 | // /// an ugly function to deal with rust's borrow rules... [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/linker/elf.rs:193:2 [INFO] [stdout] | [INFO] [stdout] 193 | / /// some special shndx values [INFO] [stdout] 194 | | [INFO] [stdout] | |____^ [INFO] [stdout] 195 | /// Symbols with st_shndx=SHN_ABS are absolute and are not affected by relocation. [INFO] [stdout] 196 | pub fn IsAbs(&self) -> bool { [INFO] [stdout] | ------------ the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the documentation should include the empty line include it in the comment [INFO] [stdout] | [INFO] [stdout] 194 | /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `shdr` is assigned to, but never used [INFO] [stdout] --> src/linker/objectfile.rs:246:21 [INFO] [stdout] | [INFO] [stdout] 246 | let mut shdr = Shdr{..Default::default()}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_shdr` instead [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `shdr` is never read [INFO] [stdout] --> src/linker/objectfile.rs:249:24 [INFO] [stdout] | [INFO] [stdout] 249 | (name, shdr.Flags) = match esym.Type() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `shdr` is never read [INFO] [stdout] --> src/linker/objectfile.rs:258:17 [INFO] [stdout] | [INFO] [stdout] 258 | shdr.Type = abi::SHT_NOBITS; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `shdr` is never read [INFO] [stdout] --> src/linker/objectfile.rs:259:17 [INFO] [stdout] | [INFO] [stdout] 259 | shdr.Size = obj.ElfSyms[i].Size as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `shdr` is never read [INFO] [stdout] --> src/linker/objectfile.rs:260:17 [INFO] [stdout] | [INFO] [stdout] 260 | shdr.AddrAlign = obj.ElfSyms[i].Val; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/linker/output.rs:248:7 [INFO] [stdout] | [INFO] [stdout] 248 | for mut frag in fragments { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `shdr` is assigned to, but never used [INFO] [stdout] --> src/linker/objectfile.rs:246:21 [INFO] [stdout] | [INFO] [stdout] 246 | let mut shdr = Shdr{..Default::default()}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_shdr` instead [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `shdr` is never read [INFO] [stdout] --> src/linker/objectfile.rs:249:24 [INFO] [stdout] | [INFO] [stdout] 249 | (name, shdr.Flags) = match esym.Type() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `shdr` is never read [INFO] [stdout] --> src/linker/objectfile.rs:258:17 [INFO] [stdout] | [INFO] [stdout] 258 | shdr.Type = abi::SHT_NOBITS; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `shdr` is never read [INFO] [stdout] --> src/linker/objectfile.rs:259:17 [INFO] [stdout] | [INFO] [stdout] 259 | shdr.Size = obj.ElfSyms[i].Size as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `shdr` is never read [INFO] [stdout] --> src/linker/objectfile.rs:260:17 [INFO] [stdout] | [INFO] [stdout] 260 | shdr.AddrAlign = obj.ElfSyms[i].Val; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/linker/output.rs:377:7 [INFO] [stdout] | [INFO] [stdout] 377 | let mut phdr = &mut vec.borrow_mut()[len - 1]; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/linker/output.rs:248:7 [INFO] [stdout] | [INFO] [stdout] 248 | for mut frag in fragments { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/linker/output.rs:377:7 [INFO] [stdout] | [INFO] [stdout] 377 | let mut phdr = &mut vec.borrow_mut()[len - 1]; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/utils.rs:112:24 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn vec2slice(v: &Vec) -> &[u8] { [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] 112 - pub fn vec2slice(v: &Vec) -> &[u8] { [INFO] [stdout] 112 + pub fn vec2slice(v: &[T]) -> &[u8] { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/linker/elf.rs:168:2 [INFO] [stdout] | [INFO] [stdout] 168 | FileTypeUnknown, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/linker/elf.rs:169:2 [INFO] [stdout] | [INFO] [stdout] 169 | FileTypeEmpty, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/linker/elf.rs:170:2 [INFO] [stdout] | [INFO] [stdout] 170 | FileTypeObject, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/linker/elf.rs:171:2 [INFO] [stdout] | [INFO] [stdout] 171 | FileTypeArchive, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same prefix: `FileType` [INFO] [stdout] --> src/linker/elf.rs:166:1 [INFO] [stdout] | [INFO] [stdout] 166 | / pub enum FileType{ [INFO] [stdout] 167 | | #[default] [INFO] [stdout] 168 | | FileTypeUnknown, [INFO] [stdout] 169 | | FileTypeEmpty, [INFO] [stdout] 170 | | FileTypeObject, [INFO] [stdout] 171 | | FileTypeArchive, [INFO] [stdout] 172 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/elf.rs:240:26 [INFO] [stdout] | [INFO] [stdout] 240 | let mt = GetMachineType(&file); [INFO] [stdout] | ^^^^^ help: change this to: `file` [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: length comparison to zero [INFO] [stdout] --> src/linker/file.rs:46:27 [INFO] [stdout] | [INFO] [stdout] 46 | let Contents = if contents.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `contents.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: function call inside of `expect` [INFO] [stdout] --> src/linker/file.rs:47:33 [INFO] [stdout] | [INFO] [stdout] 47 | std::fs::read(name).expect(&format!("{} read failed", name)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("{} read failed", name))` [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: length comparison to zero [INFO] [stdout] --> src/linker/file.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | if Contents.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `Contents.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] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/linker/file.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 87 | if checkMagic(&file.Contents) == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!checkMagic(&file.Contents)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` 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/linker/file.rs:99:33 [INFO] [stdout] | [INFO] [stdout] 99 | let shdr = Read::(&contents); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `contents` [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: deref on an immutable reference [INFO] [stdout] --> src/linker/file.rs:133:24 [INFO] [stdout] | [INFO] [stdout] 133 | return &*shdr; [INFO] [stdout] | ^^^^^^ help: if you would like to reborrow, try removing `&*`: `shdr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/linker/file.rs:140:19 [INFO] [stdout] | [INFO] [stdout] 140 | let end = (s.Offset + s.Size) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(s.Offset + s.Size)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/linker/file.rs:145:19 [INFO] [stdout] | [INFO] [stdout] 145 | &Contents[s.Offset as usize..end] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `s.Offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/file.rs:154:37 [INFO] [stdout] | [INFO] [stdout] 154 | let syms = ReadSlice::(&bytes); [INFO] [stdout] | ^^^^^^ help: change this to: `bytes` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/utils.rs:112:24 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn vec2slice(v: &Vec) -> &[u8] { [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] 112 - pub fn vec2slice(v: &Vec) -> &[u8] { [INFO] [stdout] 112 + pub fn vec2slice(v: &[T]) -> &[u8] { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/linker/archive.rs:65:4 [INFO] [stdout] | [INFO] [stdout] 65 | pos = pos + 1; [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace it with: `pos += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/linker/passes.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | if file.borrow().IsAlive() == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!file.borrow().IsAlive()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/linker/passes.rs:54:13 [INFO] [stdout] | [INFO] [stdout] 54 | assert!(roots.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!roots.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] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/linker/elf.rs:168:2 [INFO] [stdout] | [INFO] [stdout] 168 | FileTypeUnknown, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/linker/elf.rs:169:2 [INFO] [stdout] | [INFO] [stdout] 169 | FileTypeEmpty, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/linker/elf.rs:170:2 [INFO] [stdout] | [INFO] [stdout] 170 | FileTypeObject, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name starts with the enum's name [INFO] [stdout] --> src/linker/elf.rs:171:2 [INFO] [stdout] | [INFO] [stdout] 171 | FileTypeArchive, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same prefix: `FileType` [INFO] [stdout] --> src/linker/elf.rs:166:1 [INFO] [stdout] | [INFO] [stdout] 166 | / pub enum FileType{ [INFO] [stdout] 167 | | #[default] [INFO] [stdout] 168 | | FileTypeUnknown, [INFO] [stdout] 169 | | FileTypeEmpty, [INFO] [stdout] 170 | | FileTypeObject, [INFO] [stdout] 171 | | FileTypeArchive, [INFO] [stdout] 172 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/linker/passes.rs:56:11 [INFO] [stdout] | [INFO] [stdout] 56 | while roots.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!roots.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] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/linker/passes.rs:58:12 [INFO] [stdout] | [INFO] [stdout] 58 | if file.borrow().IsAlive() == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!file.borrow().IsAlive()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/elf.rs:240:26 [INFO] [stdout] | [INFO] [stdout] 240 | let mt = GetMachineType(&file); [INFO] [stdout] | ^^^^^ help: change this to: `file` [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: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/linker/passes.rs:155:24 [INFO] [stdout] | [INFO] [stdout] 155 | if i.borrow().IsAlive == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!i.borrow().IsAlive` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/linker/passes.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 172 | if osec.borrow().Members.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!osec.borrow().Members.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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/linker/passes.rs:243:9 [INFO] [stdout] | [INFO] [stdout] 243 | return writeable << 7 | notExec << 6 | notTls << 5 | isBss << 4; [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] 243 - return writeable << 7 | notExec << 6 | notTls << 5 | isBss << 4; [INFO] [stdout] 243 + writeable << 7 | notExec << 6 | notTls << 5 | isBss << 4 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/linker/file.rs:46:27 [INFO] [stdout] | [INFO] [stdout] 46 | let Contents = if contents.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `contents.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: function call inside of `expect` [INFO] [stdout] --> src/linker/file.rs:47:33 [INFO] [stdout] | [INFO] [stdout] 47 | std::fs::read(name).expect(&format!("{} read failed", name)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("{} read failed", name))` [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: length comparison to zero [INFO] [stdout] --> src/linker/file.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | if Contents.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `Contents.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] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/linker/file.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 87 | if checkMagic(&file.Contents) == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!checkMagic(&file.Contents)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` 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/linker/file.rs:99:33 [INFO] [stdout] | [INFO] [stdout] 99 | let shdr = Read::(&contents); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `contents` [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: deref on an immutable reference [INFO] [stdout] --> src/linker/file.rs:133:24 [INFO] [stdout] | [INFO] [stdout] 133 | return &*shdr; [INFO] [stdout] | ^^^^^^ help: if you would like to reborrow, try removing `&*`: `shdr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/linker/file.rs:140:19 [INFO] [stdout] | [INFO] [stdout] 140 | let end = (s.Offset + s.Size) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(s.Offset + s.Size)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/linker/file.rs:145:19 [INFO] [stdout] | [INFO] [stdout] 145 | &Contents[s.Offset as usize..end] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `s.Offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/file.rs:154:37 [INFO] [stdout] | [INFO] [stdout] 154 | let syms = ReadSlice::(&bytes); [INFO] [stdout] | ^^^^^^ help: change this to: `bytes` [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 creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/objectfile.rs:70:29 [INFO] [stdout] | [INFO] [stdout] 70 | o.FillUpElfSyms(&symtab); [INFO] [stdout] | ^^^^^^^ help: change this to: `symtab` [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 creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/objectfile.rs:98:43 [INFO] [stdout] | [INFO] [stdout] 98 | let name = ElfGetName(&obj.borrow().Shstrtab.GetSlice(), shdr.Name as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `obj.borrow().Shstrtab.GetSlice()` [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 creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/objectfile.rs:129:49 [INFO] [stdout] | [INFO] [stdout] 129 | let bytes = InputFile::GetBytesFromShdr(&self, shdr); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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 creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/objectfile.rs:130:48 [INFO] [stdout] | [INFO] [stdout] 130 | self.SymtabShndxSec = ReadSlice::(&bytes); [INFO] [stdout] | ^^^^^^ help: change this to: `bytes` [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: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/linker/objectfile.rs:139:24 [INFO] [stdout] | [INFO] [stdout] 139 | let n_locals = obj.FirstGlobal as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `obj.FirstGlobal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/objectfile.rs:150:35 [INFO] [stdout] | [INFO] [stdout] 150 | let name = ElfGetName(&obj.SymbolStrTab.GetSlice(), esym.Name as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `obj.SymbolStrTab.GetSlice()` [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: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/linker/objectfile.rs:160:16 [INFO] [stdout] | [INFO] [stdout] 160 | if esym.IsAbs() == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `!esym.IsAbs()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/linker/archive.rs:65:4 [INFO] [stdout] | [INFO] [stdout] 65 | pos = pos + 1; [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace it with: `pos += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` 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/linker/objectfile.rs:172:35 [INFO] [stdout] | [INFO] [stdout] 172 | let name = ElfGetName(&obj.SymbolStrTab.GetSlice(), obj.ElfSyms[i].Name as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `obj.SymbolStrTab.GetSlice()` [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: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/linker/objectfile.rs:182:33 [INFO] [stdout] | [INFO] [stdout] 182 | self.SymtabShndxSec[idx as usize] as usize [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `idx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/linker/passes.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | if file.borrow().IsAlive() == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!file.borrow().IsAlive()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/linker/passes.rs:54:13 [INFO] [stdout] | [INFO] [stdout] 54 | assert!(roots.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!roots.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] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/linker/passes.rs:56:11 [INFO] [stdout] | [INFO] [stdout] 56 | while roots.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!roots.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] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/linker/passes.rs:58:12 [INFO] [stdout] | [INFO] [stdout] 58 | if file.borrow().IsAlive() == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!file.borrow().IsAlive()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Some` variant of the iterator element is used [INFO] [stdout] --> src/linker/objectfile.rs:317:9 [INFO] [stdout] | [INFO] [stdout] 317 | / for m in &mut self.MergeableSections { [INFO] [stdout] 318 | | if let Some(ms) = m { [INFO] [stdout] 319 | | let len = ms.Strs.len(); [INFO] [stdout] 320 | | ms.Fragments = Vec::with_capacity(len); [INFO] [stdout] ... | [INFO] [stdout] 327 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/linker/objectfile.rs:318:13 [INFO] [stdout] | [INFO] [stdout] 318 | / if let Some(ms) = m { [INFO] [stdout] 319 | | let len = ms.Strs.len(); [INFO] [stdout] 320 | | ms.Fragments = Vec::with_capacity(len); [INFO] [stdout] 321 | | for i in 0..len { [INFO] [stdout] ... | [INFO] [stdout] 326 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 317 ~ for ms in self.MergeableSections.iter_mut().flatten() { [INFO] [stdout] 318 + let len = ms.Strs.len(); [INFO] [stdout] 319 + ms.Fragments = Vec::with_capacity(len); [INFO] [stdout] 320 + for i in 0..len { [INFO] [stdout] 321 + ms.Fragments.push( [INFO] [stdout] 322 + MergedSection::Insert(ms.Parent.clone(), ms.Strs[i].clone(), ms.P2Align).clone() [INFO] [stdout] 323 + ); [INFO] [stdout] 324 + } [INFO] [stdout] 325 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/linker/passes.rs:155:24 [INFO] [stdout] | [INFO] [stdout] 155 | if i.borrow().IsAlive == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!i.borrow().IsAlive` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/linker/passes.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 172 | if osec.borrow().Members.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!osec.borrow().Members.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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/linker/passes.rs:243:9 [INFO] [stdout] | [INFO] [stdout] 243 | return writeable << 7 | notExec << 6 | notTls << 5 | isBss << 4; [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] 243 - return writeable << 7 | notExec << 6 | notTls << 5 | isBss << 4; [INFO] [stdout] 243 + writeable << 7 | notExec << 6 | notTls << 5 | isBss << 4 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/linker/output.rs:243:4 [INFO] [stdout] | [INFO] [stdout] 243 | return x.Key.cmp(&y.Key); [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] 243 - return x.Key.cmp(&y.Key); [INFO] [stdout] 243 + x.Key.cmp(&y.Key) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/linker/output.rs:309:2 [INFO] [stdout] | [INFO] [stdout] 309 | / return match res { [INFO] [stdout] 310 | | Some(osec) => osec.clone(), [INFO] [stdout] 311 | | None => { [INFO] [stdout] 312 | | let idx = ctx.OutputSections.len(); [INFO] [stdout] ... | [INFO] [stdout] 317 | | } [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] 309 ~ match res { [INFO] [stdout] 310 ~ Some(osec) => osec.clone(), [INFO] [stdout] 311 ~ None => { [INFO] [stdout] 312 ~ let idx = ctx.OutputSections.len(); [INFO] [stdout] 313 ~ let osec = (*OutputSection::new(name, ty, flags, idx)).ToRcRefcell(); [INFO] [stdout] 314 ~ ctx.OutputSections.push(osec.clone()); [INFO] [stdout] 315 ~ osec [INFO] [stdout] 316 ~ } [INFO] [stdout] 317 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/linker/output.rs:332:10 [INFO] [stdout] | [INFO] [stdout] 332 | assert!(ctx.Objs.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!ctx.Objs.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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/objectfile.rs:70:29 [INFO] [stdout] | [INFO] [stdout] 70 | o.FillUpElfSyms(&symtab); [INFO] [stdout] | ^^^^^^^ help: change this to: `symtab` [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 boolean expression can be simplified [INFO] [stdout] --> src/linker/output.rs:436:9 [INFO] [stdout] | [INFO] [stdout] 436 | if !(c.toPhdrFlags() == flags) || c.isBss() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(c.toPhdrFlags() != flags)` [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: this boolean expression can be simplified [INFO] [stdout] --> src/linker/output.rs:446:22 [INFO] [stdout] | [INFO] [stdout] 446 | if !c.isBss() || !(c.toPhdrFlags() == flags) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(c.toPhdrFlags() != flags)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/objectfile.rs:98:43 [INFO] [stdout] | [INFO] [stdout] 98 | let name = ElfGetName(&obj.borrow().Shstrtab.GetSlice(), shdr.Name as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `obj.borrow().Shstrtab.GetSlice()` [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 creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/objectfile.rs:129:49 [INFO] [stdout] | [INFO] [stdout] 129 | let bytes = InputFile::GetBytesFromShdr(&self, shdr); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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 creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/objectfile.rs:130:48 [INFO] [stdout] | [INFO] [stdout] 130 | self.SymtabShndxSec = ReadSlice::(&bytes); [INFO] [stdout] | ^^^^^^ help: change this to: `bytes` [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: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/linker/objectfile.rs:139:24 [INFO] [stdout] | [INFO] [stdout] 139 | let n_locals = obj.FirstGlobal as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `obj.FirstGlobal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/objectfile.rs:150:35 [INFO] [stdout] | [INFO] [stdout] 150 | let name = ElfGetName(&obj.SymbolStrTab.GetSlice(), esym.Name as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `obj.SymbolStrTab.GetSlice()` [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: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/linker/objectfile.rs:160:16 [INFO] [stdout] | [INFO] [stdout] 160 | if esym.IsAbs() == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `!esym.IsAbs()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/objectfile.rs:172:35 [INFO] [stdout] | [INFO] [stdout] 172 | let name = ElfGetName(&obj.SymbolStrTab.GetSlice(), obj.ElfSyms[i].Name as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `obj.SymbolStrTab.GetSlice()` [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: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/linker/objectfile.rs:182:33 [INFO] [stdout] | [INFO] [stdout] 182 | self.SymtabShndxSec[idx as usize] as usize [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `idx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/linker/inputsections.rs:83:3 [INFO] [stdout] | [INFO] [stdout] 83 | return &obj.ElfSections2[self.Shndx - obj.ElfSections.len()]; [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] 83 - return &obj.ElfSections2[self.Shndx - obj.ElfSections.len()]; [INFO] [stdout] 83 + &obj.ElfSections2[self.Shndx - obj.ElfSections.len()] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/inputsections.rs:87:14 [INFO] [stdout] | [INFO] [stdout] 87 | ElfGetName(&self.File.borrow().Shstrtab.GetSlice(), self.Shdr().Name as usize) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.File.borrow().Shstrtab.GetSlice()` [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: unneeded `return` statement [INFO] [stdout] --> src/linker/inputsections.rs:116:3 [INFO] [stdout] | [INFO] [stdout] 116 | / return ( [INFO] [stdout] 117 | | Some(self.Fragments[idx].clone()), [INFO] [stdout] 118 | | offset - self.FragOffset[idx] [INFO] [stdout] 119 | | ); [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] 116 ~ ( [INFO] [stdout] 117 ~ Some(self.Fragments[idx].clone()), [INFO] [stdout] 118 ~ offset - self.FragOffset[idx] [INFO] [stdout] 119 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/linker/inputsections.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | while data.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!data.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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/inputsections.rs:146:23 [INFO] [stdout] | [INFO] [stdout] 146 | let end = FindNull(&data, shdr.EntSize); [INFO] [stdout] | ^^^^^ help: change this to: `data` [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: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/linker/inputsections.rs:158:6 [INFO] [stdout] | [INFO] [stdout] 158 | if data.len() % shdr.EntSize as usize != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `!data.len().is_multiple_of(shdr.EntSize as usize)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/linker/inputsections.rs:158:19 [INFO] [stdout] | [INFO] [stdout] 158 | if data.len() % shdr.EntSize as usize != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `shdr.EntSize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/linker/inputsections.rs:161:9 [INFO] [stdout] | [INFO] [stdout] 161 | while data.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!data.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] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Some` variant of the iterator element is used [INFO] [stdout] --> src/linker/objectfile.rs:317:9 [INFO] [stdout] | [INFO] [stdout] 317 | / for m in &mut self.MergeableSections { [INFO] [stdout] 318 | | if let Some(ms) = m { [INFO] [stdout] 319 | | let len = ms.Strs.len(); [INFO] [stdout] 320 | | ms.Fragments = Vec::with_capacity(len); [INFO] [stdout] ... | [INFO] [stdout] 327 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/linker/objectfile.rs:318:13 [INFO] [stdout] | [INFO] [stdout] 318 | / if let Some(ms) = m { [INFO] [stdout] 319 | | let len = ms.Strs.len(); [INFO] [stdout] 320 | | ms.Fragments = Vec::with_capacity(len); [INFO] [stdout] 321 | | for i in 0..len { [INFO] [stdout] ... | [INFO] [stdout] 326 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 317 ~ for ms in self.MergeableSections.iter_mut().flatten() { [INFO] [stdout] 318 + let len = ms.Strs.len(); [INFO] [stdout] 319 + ms.Fragments = Vec::with_capacity(len); [INFO] [stdout] 320 + for i in 0..len { [INFO] [stdout] 321 + ms.Fragments.push( [INFO] [stdout] 322 + MergedSection::Insert(ms.Parent.clone(), ms.Strs[i].clone(), ms.P2Align).clone() [INFO] [stdout] 323 + ); [INFO] [stdout] 324 + } [INFO] [stdout] 325 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/linker/symbol.rs:41:3 [INFO] [stdout] | [INFO] [stdout] 41 | return newSym.clone(); [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] 41 - return newSym.clone(); [INFO] [stdout] 41 + newSym.clone() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `&str` [INFO] [stdout] --> src/linker/symbol.rs:36:40 [INFO] [stdout] | [INFO] [stdout] 36 | if let Some(sym) = ctx.SymbolMap.get(name.into()) { [INFO] [stdout] | ^^^^^^^^^^^ help: consider removing `.into()`: `name` [INFO] [stdout] | [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: useless conversion to the same type: `&str` [INFO] [stdout] --> src/linker/symbol.rs:39:28 [INFO] [stdout] | [INFO] [stdout] 39 | let newSym = Symbol::new(name.into()); [INFO] [stdout] | ^^^^^^^^^^^ help: consider removing `.into()`: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/chunker.rs:139:33 [INFO] [stdout] | [INFO] [stdout] 139 | fn GetName(&self) -> &String { &self.Chunk.GetName() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.Chunk.GetName()` [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 creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/chunker.rs:160:33 [INFO] [stdout] | [INFO] [stdout] 160 | fn GetName(&self) -> &String { &self.Chunk.GetName() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.Chunk.GetName()` [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: unneeded `return` statement [INFO] [stdout] --> src/linker/output.rs:243:4 [INFO] [stdout] | [INFO] [stdout] 243 | return x.Key.cmp(&y.Key); [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] 243 - return x.Key.cmp(&y.Key); [INFO] [stdout] 243 + x.Key.cmp(&y.Key) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/linker/output.rs:309:2 [INFO] [stdout] | [INFO] [stdout] 309 | / return match res { [INFO] [stdout] 310 | | Some(osec) => osec.clone(), [INFO] [stdout] 311 | | None => { [INFO] [stdout] 312 | | let idx = ctx.OutputSections.len(); [INFO] [stdout] ... | [INFO] [stdout] 317 | | } [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] 309 ~ match res { [INFO] [stdout] 310 ~ Some(osec) => osec.clone(), [INFO] [stdout] 311 ~ None => { [INFO] [stdout] 312 ~ let idx = ctx.OutputSections.len(); [INFO] [stdout] 313 ~ let osec = (*OutputSection::new(name, ty, flags, idx)).ToRcRefcell(); [INFO] [stdout] 314 ~ ctx.OutputSections.push(osec.clone()); [INFO] [stdout] 315 ~ osec [INFO] [stdout] 316 ~ } [INFO] [stdout] 317 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/linker/output.rs:332:10 [INFO] [stdout] | [INFO] [stdout] 332 | assert!(ctx.Objs.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!ctx.Objs.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] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/debug.rs:106:29 [INFO] [stdout] | [INFO] [stdout] 106 | std::str::from_utf8(&self.Name.to_vec()).unwrap(), &self.Name, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `self.Name.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/debug.rs:107:29 [INFO] [stdout] | [INFO] [stdout] 107 | std::str::from_utf8(&self.Date.to_vec()).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `self.Date.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/debug.rs:108:29 [INFO] [stdout] | [INFO] [stdout] 108 | std::str::from_utf8(&self.Uid.to_vec()).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `self.Uid.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/linker/output.rs:436:9 [INFO] [stdout] | [INFO] [stdout] 436 | if !(c.toPhdrFlags() == flags) || c.isBss() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(c.toPhdrFlags() != flags)` [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: unnecessary use of `to_vec` [INFO] [stdout] --> src/debug.rs:109:29 [INFO] [stdout] | [INFO] [stdout] 109 | std::str::from_utf8(&self.Gid.to_vec()).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `self.Gid.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/linker/output.rs:446:22 [INFO] [stdout] | [INFO] [stdout] 446 | if !c.isBss() || !(c.toPhdrFlags() == flags) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(c.toPhdrFlags() != flags)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/debug.rs:110:29 [INFO] [stdout] | [INFO] [stdout] 110 | std::str::from_utf8(&self.Mode.to_vec()).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `self.Mode.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/debug.rs:111:29 [INFO] [stdout] | [INFO] [stdout] 111 | std::str::from_utf8(&self.Size.to_vec()).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `self.Size.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:30:34 [INFO] [stdout] | [INFO] [stdout] 30 | let file = File::new(&filename, vec![], None); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `filename` [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: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/main.rs:68:10 [INFO] [stdout] | [INFO] [stdout] 68 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/linker/inputsections.rs:83:3 [INFO] [stdout] | [INFO] [stdout] 83 | return &obj.ElfSections2[self.Shndx - obj.ElfSections.len()]; [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] 83 - return &obj.ElfSections2[self.Shndx - obj.ElfSections.len()]; [INFO] [stdout] 83 + &obj.ElfSections2[self.Shndx - obj.ElfSections.len()] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/inputsections.rs:87:14 [INFO] [stdout] | [INFO] [stdout] 87 | ElfGetName(&self.File.borrow().Shstrtab.GetSlice(), self.Shdr().Name as usize) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.File.borrow().Shstrtab.GetSlice()` [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: unneeded `return` statement [INFO] [stdout] --> src/linker/inputsections.rs:116:3 [INFO] [stdout] | [INFO] [stdout] 116 | / return ( [INFO] [stdout] 117 | | Some(self.Fragments[idx].clone()), [INFO] [stdout] 118 | | offset - self.FragOffset[idx] [INFO] [stdout] 119 | | ); [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] 116 ~ ( [INFO] [stdout] 117 ~ Some(self.Fragments[idx].clone()), [INFO] [stdout] 118 ~ offset - self.FragOffset[idx] [INFO] [stdout] 119 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/linker/inputsections.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | while data.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!data.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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/inputsections.rs:146:23 [INFO] [stdout] | [INFO] [stdout] 146 | let end = FindNull(&data, shdr.EntSize); [INFO] [stdout] | ^^^^^ help: change this to: `data` [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: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/linker/inputsections.rs:158:6 [INFO] [stdout] | [INFO] [stdout] 158 | if data.len() % shdr.EntSize as usize != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `!data.len().is_multiple_of(shdr.EntSize as usize)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/linker/inputsections.rs:158:19 [INFO] [stdout] | [INFO] [stdout] 158 | if data.len() % shdr.EntSize as usize != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `shdr.EntSize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/linker/inputsections.rs:161:9 [INFO] [stdout] | [INFO] [stdout] 161 | while data.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!data.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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/linker/symbol.rs:41:3 [INFO] [stdout] | [INFO] [stdout] 41 | return newSym.clone(); [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] 41 - return newSym.clone(); [INFO] [stdout] 41 + newSym.clone() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `&str` [INFO] [stdout] --> src/linker/symbol.rs:36:40 [INFO] [stdout] | [INFO] [stdout] 36 | if let Some(sym) = ctx.SymbolMap.get(name.into()) { [INFO] [stdout] | ^^^^^^^^^^^ help: consider removing `.into()`: `name` [INFO] [stdout] | [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: useless conversion to the same type: `&str` [INFO] [stdout] --> src/linker/symbol.rs:39:28 [INFO] [stdout] | [INFO] [stdout] 39 | let newSym = Symbol::new(name.into()); [INFO] [stdout] | ^^^^^^^^^^^ help: consider removing `.into()`: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:197:5 [INFO] [stdout] | [INFO] [stdout] 197 | return remaining; [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 - return remaining; [INFO] [stdout] 197 + remaining [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/main.rs:92:23 [INFO] [stdout] | [INFO] [stdout] 92 | 1 => vec![String::from("-") + &name], [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^----- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` 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:92:43 [INFO] [stdout] | [INFO] [stdout] 92 | 1 => vec![String::from("-") + &name], [INFO] [stdout] | ^^^^^ help: change this to: `name` [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: taken reference of right operand [INFO] [stdout] --> src/main.rs:93:23 [INFO] [stdout] | [INFO] [stdout] 93 | _ => vec![String::from("-") + &name, String::from("--") +&name] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^----- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:93:43 [INFO] [stdout] | [INFO] [stdout] 93 | _ => vec![String::from("-") + &name, String::from("--") +&name] [INFO] [stdout] | ^^^^^ help: change this to: `name` [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: taken reference of right operand [INFO] [stdout] --> src/main.rs:93:50 [INFO] [stdout] | [INFO] [stdout] 93 | _ => vec![String::from("-") + &name, String::from("--") +&name] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^----- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:93:70 [INFO] [stdout] | [INFO] [stdout] 93 | _ => vec![String::from("-") + &name, String::from("--") +&name] [INFO] [stdout] | ^^^^^ help: change this to: `name` [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: unneeded `return` statement [INFO] [stdout] --> src/main.rs:121:9 [INFO] [stdout] | [INFO] [stdout] 121 | return false; [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] 121 - return false; [INFO] [stdout] 121 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/chunker.rs:139:33 [INFO] [stdout] | [INFO] [stdout] 139 | fn GetName(&self) -> &String { &self.Chunk.GetName() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.Chunk.GetName()` [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 creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/linker/chunker.rs:160:33 [INFO] [stdout] | [INFO] [stdout] 160 | fn GetName(&self) -> &String { &self.Chunk.GetName() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.Chunk.GetName()` [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: unneeded `return` statement [INFO] [stdout] --> src/main.rs:134:9 [INFO] [stdout] | [INFO] [stdout] 134 | return false; [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] 134 - return false; [INFO] [stdout] 134 + false [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:126:27 [INFO] [stdout] | [INFO] [stdout] 126 | for opt in dashes(&name) { [INFO] [stdout] | ^^^^^ help: change this to: `name` [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:138:11 [INFO] [stdout] | [INFO] [stdout] 138 | while args.borrow_mut().len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!args.borrow_mut().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] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/main.rs:149:16 [INFO] [stdout] | [INFO] [stdout] 149 | if *arch == String::from("elf64lriscv") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/debug.rs:106:29 [INFO] [stdout] | [INFO] [stdout] 106 | std::str::from_utf8(&self.Name.to_vec()).unwrap(), &self.Name, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `self.Name.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/main.rs:176:23 [INFO] [stdout] | [INFO] [stdout] 176 | .args(&["rev-list", "-1", "HEAD"]).output(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["rev-list", "-1", "HEAD"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/debug.rs:107:29 [INFO] [stdout] | [INFO] [stdout] 107 | std::str::from_utf8(&self.Date.to_vec()).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `self.Date.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/debug.rs:108:29 [INFO] [stdout] | [INFO] [stdout] 108 | std::str::from_utf8(&self.Uid.to_vec()).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `self.Uid.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/debug.rs:109:29 [INFO] [stdout] | [INFO] [stdout] 109 | std::str::from_utf8(&self.Gid.to_vec()).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `self.Gid.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/debug.rs:110:29 [INFO] [stdout] | [INFO] [stdout] 110 | std::str::from_utf8(&self.Mode.to_vec()).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `self.Mode.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/debug.rs:111:29 [INFO] [stdout] | [INFO] [stdout] 111 | std::str::from_utf8(&self.Size.to_vec()).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `self.Size.as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:30:34 [INFO] [stdout] | [INFO] [stdout] 30 | let file = File::new(&filename, vec![], None); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `filename` [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: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/main.rs:68:10 [INFO] [stdout] | [INFO] [stdout] 68 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:197:5 [INFO] [stdout] | [INFO] [stdout] 197 | return remaining; [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 - return remaining; [INFO] [stdout] 197 + remaining [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/main.rs:92:23 [INFO] [stdout] | [INFO] [stdout] 92 | 1 => vec![String::from("-") + &name], [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^----- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` 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:92:43 [INFO] [stdout] | [INFO] [stdout] 92 | 1 => vec![String::from("-") + &name], [INFO] [stdout] | ^^^^^ help: change this to: `name` [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: taken reference of right operand [INFO] [stdout] --> src/main.rs:93:23 [INFO] [stdout] | [INFO] [stdout] 93 | _ => vec![String::from("-") + &name, String::from("--") +&name] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^----- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:93:43 [INFO] [stdout] | [INFO] [stdout] 93 | _ => vec![String::from("-") + &name, String::from("--") +&name] [INFO] [stdout] | ^^^^^ help: change this to: `name` [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: taken reference of right operand [INFO] [stdout] --> src/main.rs:93:50 [INFO] [stdout] | [INFO] [stdout] 93 | _ => vec![String::from("-") + &name, String::from("--") +&name] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^----- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:93:70 [INFO] [stdout] | [INFO] [stdout] 93 | _ => vec![String::from("-") + &name, String::from("--") +&name] [INFO] [stdout] | ^^^^^ help: change this to: `name` [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: unneeded `return` statement [INFO] [stdout] --> src/main.rs:121:9 [INFO] [stdout] | [INFO] [stdout] 121 | return false; [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] 121 - return false; [INFO] [stdout] 121 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:134:9 [INFO] [stdout] | [INFO] [stdout] 134 | return false; [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] 134 - return false; [INFO] [stdout] 134 + false [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:126:27 [INFO] [stdout] | [INFO] [stdout] 126 | for opt in dashes(&name) { [INFO] [stdout] | ^^^^^ help: change this to: `name` [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:138:11 [INFO] [stdout] | [INFO] [stdout] 138 | while args.borrow_mut().len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!args.borrow_mut().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] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/main.rs:149:16 [INFO] [stdout] | [INFO] [stdout] 149 | if *arch == String::from("elf64lriscv") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/main.rs:176:23 [INFO] [stdout] | [INFO] [stdout] 176 | .args(&["rev-list", "-1", "HEAD"]).output(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["rev-list", "-1", "HEAD"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.33s [INFO] running `Command { std: "docker" "inspect" "6dd5245c8fd4c602967e77fb6ad05110dca91b8d6794c4b4c96f10a8a53d2149", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6dd5245c8fd4c602967e77fb6ad05110dca91b8d6794c4b4c96f10a8a53d2149", kill_on_drop: false }` [INFO] [stdout] 6dd5245c8fd4c602967e77fb6ad05110dca91b8d6794c4b4c96f10a8a53d2149