[INFO] fetching crate rusty-tags 3.11.0... [INFO] linting rusty-tags-3.11.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate rusty-tags 3.11.0 into /workspace/builds/worker-7-tc1/source [INFO] started tweaking crates.io crate rusty-tags 3.11.0 [INFO] finished tweaking crates.io crate rusty-tags 3.11.0 [INFO] tweaked toml for crates.io crate rusty-tags 3.11.0 written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate rusty-tags 3.11.0 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 crates.io crate rusty-tags 3.11.0 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] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] e368b18aa66ff16e327948f82d1d608bef906f6978467c6a4d6aa2985e58f714 [INFO] running `Command { std: "docker" "start" "-a" "e368b18aa66ff16e327948f82d1d608bef906f6978467c6a4d6aa2985e58f714", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "e368b18aa66ff16e327948f82d1d608bef906f6978467c6a4d6aa2985e58f714", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e368b18aa66ff16e327948f82d1d608bef906f6978467c6a4d6aa2985e58f714", kill_on_drop: false }` [INFO] [stdout] e368b18aa66ff16e327948f82d1d608bef906f6978467c6a4d6aa2985e58f714 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 7bb9e0f90a5240f375a7eee3059285ffd85db20715a5f1bf166bed0614367329 [INFO] running `Command { std: "docker" "start" "-a" "7bb9e0f90a5240f375a7eee3059285ffd85db20715a5f1bf166bed0614367329", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Compiling getrandom v0.1.15 [INFO] [stderr] Compiling proc-macro2 v1.0.24 [INFO] [stderr] Compiling serde v1.0.118 [INFO] [stderr] Compiling unicode-xid v0.2.1 [INFO] [stderr] Checking ppv-lite86 v0.2.10 [INFO] [stderr] Compiling syn v1.0.54 [INFO] [stderr] Compiling serde_json v1.0.60 [INFO] [stderr] Compiling serde_derive v1.0.118 [INFO] [stderr] Checking ansi_term v0.11.0 [INFO] [stderr] Checking itoa v0.4.6 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Checking semver-parser v0.7.0 [INFO] [stderr] Checking dirs-sys v0.3.5 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking num_cpus v1.13.0 [INFO] [stderr] Checking scoped_threadpool v0.1.9 [INFO] [stderr] Checking dirs v2.0.2 [INFO] [stderr] Checking semver v0.9.0 [INFO] [stderr] Checking clap v2.33.3 [INFO] [stderr] Checking rand_core v0.5.1 [INFO] [stderr] Checking rand_chacha v0.2.2 [INFO] [stderr] Compiling quote v1.0.7 [INFO] [stderr] Checking rand v0.7.3 [INFO] [stderr] Checking tempfile v3.1.0 [INFO] [stderr] Checking toml v0.5.7 [INFO] [stderr] Checking rusty-tags v3.11.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:309:13 [INFO] [stdout] | [INFO] [stdout] 309 | id: id, [INFO] [stdout] | ^^^^^^ help: replace it with: `id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:314:13 [INFO] [stdout] | [INFO] [stdout] 314 | hash: hash, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `hash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:315:13 [INFO] [stdout] | [INFO] [stdout] 315 | is_root: is_root, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `is_root` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:316:13 [INFO] [stdout] | [INFO] [stdout] 316 | tags_file: tags_file, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tags_file` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:317:13 [INFO] [stdout] | [INFO] [stdout] 317 | cached_tags_file: cached_tags_file [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `cached_tags_file` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:450:13 [INFO] [stdout] | [INFO] [stdout] 450 | kind: kind, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `kind` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:451:13 [INFO] [stdout] | [INFO] [stdout] 451 | exe: exe, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `exe` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:452:13 [INFO] [stdout] | [INFO] [stdout] 452 | vi_tags: vi_tags, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `vi_tags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:453:13 [INFO] [stdout] | [INFO] [stdout] 453 | emacs_tags: emacs_tags, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `emacs_tags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:454:13 [INFO] [stdout] | [INFO] [stdout] 454 | ctags_options: ctags_options [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ctags_options` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:130:12 [INFO] [stdout] | [INFO] [stdout] 130 | start_dir: start_dir, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `start_dir` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:131:12 [INFO] [stdout] | [INFO] [stdout] 131 | output_dir_std: output_dir_std, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `output_dir_std` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 132 | omit_deps: omit_deps, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `omit_deps` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:133:12 [INFO] [stdout] | [INFO] [stdout] 133 | force_recreate: force_recreate, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `force_recreate` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 134 | verbose: verbose, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `verbose` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:135:12 [INFO] [stdout] | [INFO] [stdout] 135 | quiet: quiet, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `quiet` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:136:12 [INFO] [stdout] | [INFO] [stdout] 136 | num_threads: num_threads, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_threads` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:309:13 [INFO] [stdout] | [INFO] [stdout] 309 | id: id, [INFO] [stdout] | ^^^^^^ help: replace it with: `id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:314:13 [INFO] [stdout] | [INFO] [stdout] 314 | hash: hash, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `hash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:315:13 [INFO] [stdout] | [INFO] [stdout] 315 | is_root: is_root, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `is_root` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:316:13 [INFO] [stdout] | [INFO] [stdout] 316 | tags_file: tags_file, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tags_file` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:317:13 [INFO] [stdout] | [INFO] [stdout] 317 | cached_tags_file: cached_tags_file [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `cached_tags_file` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:450:13 [INFO] [stdout] | [INFO] [stdout] 450 | kind: kind, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `kind` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:451:13 [INFO] [stdout] | [INFO] [stdout] 451 | exe: exe, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `exe` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:452:13 [INFO] [stdout] | [INFO] [stdout] 452 | vi_tags: vi_tags, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `vi_tags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:453:13 [INFO] [stdout] | [INFO] [stdout] 453 | emacs_tags: emacs_tags, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `emacs_tags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:454:13 [INFO] [stdout] | [INFO] [stdout] 454 | ctags_options: ctags_options [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ctags_options` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:130:12 [INFO] [stdout] | [INFO] [stdout] 130 | start_dir: start_dir, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `start_dir` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:131:12 [INFO] [stdout] | [INFO] [stdout] 131 | output_dir_std: output_dir_std, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `output_dir_std` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 132 | omit_deps: omit_deps, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `omit_deps` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:133:12 [INFO] [stdout] | [INFO] [stdout] 133 | force_recreate: force_recreate, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `force_recreate` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 134 | verbose: verbose, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `verbose` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:135:12 [INFO] [stdout] | [INFO] [stdout] 135 | quiet: quiet, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `quiet` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/config.rs:136:12 [INFO] [stdout] | [INFO] [stdout] 136 | num_threads: num_threads, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_threads` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/rt_result.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | &RtErr::Message(ref msg) => writeln!(f, "{}", msg), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 19 - &RtErr::Message(ref msg) => writeln!(f, "{}", msg), [INFO] [stdout] 19 + RtErr::Message(msg) => writeln!(f, "{}", msg), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/rt_result.rs:48:6 [INFO] [stdout] | [INFO] [stdout] 48 | impl<'a> From<&'a str> for RtErr { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 48 - impl<'a> From<&'a str> for RtErr { [INFO] [stdout] 48 + impl From<&str> for RtErr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/dependencies.rs:61:16 [INFO] [stdout] | [INFO] [stdout] 61 | if path == None { [INFO] [stdout] | ^^^^^^^^^^^^ help: use `Option::is_none()` instead: `path.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` 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/dependencies.rs:88:42 [INFO] [stdout] | [INFO] [stdout] 88 | let member_package = package(&member_id, packages)?; [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `member_id` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dependencies.rs:135:38 [INFO] [stdout] | [INFO] [stdout] 135 | src_ids.push(package(&pkg_id, packages)?.source_id); [INFO] [stdout] | ^^^^^^^ help: change this to: `pkg_id` [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: binary comparison to literal `Option::None` [INFO] [stdout] --> src/dependencies.rs:143:23 [INFO] [stdout] | [INFO] [stdout] 143 | let is_root = root_ids.iter().find(|id| **id == node_package.source_id) != None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `root_ids.iter().find(|id| **id == node_package.source_id).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/dependencies.rs:203:41 [INFO] [stdout] | [INFO] [stdout] 203 | serde_json::to_string_pretty(value).unwrap_or(String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `names` [INFO] [stdout] --> src/tags.rs:20:18 [INFO] [stdout] | [INFO] [stdout] 20 | for i in 0..num_names { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 20 - for i in 0..num_names { [INFO] [stdout] 20 + for (i, ) in names.iter().enumerate().take(num_names) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `print!()` with a format string that ends in a single newline [INFO] [stdout] --> src/tags.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | print!(" ...\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stdout] = note: `#[warn(clippy::print_with_newline)]` on by default [INFO] [stdout] help: use `println!` instead [INFO] [stdout] | [INFO] [stdout] 27 - print!(" ...\n"); [INFO] [stdout] 27 + println!(" ..."); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_unstable_by_key` [INFO] [stdout] --> src/tags.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | srcs.sort_unstable_by(|a, b| b.max_depth.cmp(&a.max_depth)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 47 - srcs.sort_unstable_by(|a, b| b.max_depth.cmp(&a.max_depth)); [INFO] [stdout] 47 + srcs.sort_unstable_by_key(|b| std::cmp::Reverse(b.max_depth)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tags.rs:51:56 [INFO] [stdout] | [INFO] [stdout] 51 | srcs_with_tags.push(SourceWithTmpTags::new(&config, src)?); [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [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: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/tags.rs:74:17 [INFO] [stdout] | [INFO] [stdout] 74 | for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 74 - for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] 74 + for SourceWithTmpTags { source, tags_file, .. } in &sources_to_update { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/tags.rs:74:38 [INFO] [stdout] | [INFO] [stdout] 74 | for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 74 - for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] 74 + for &SourceWithTmpTags { source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/tags.rs:81:13 [INFO] [stdout] | [INFO] [stdout] 81 | for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 81 - for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] 81 + for SourceWithTmpTags { source, tags_file, .. } in &sources_to_update { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> src/tags.rs:124:17 [INFO] [stdout] | [INFO] [stdout] 124 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/tags.rs:129:29 [INFO] [stdout] | [INFO] [stdout] 129 | .filter(|d| reexported_crates.iter().find(|c| **c == d.name) != None) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `reexported_crates.iter().find(|c| **c == d.name).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/tags.rs:81:34 [INFO] [stdout] | [INFO] [stdout] 81 | for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 81 - for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] 81 + for &SourceWithTmpTags { source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/tags.rs:236:5 [INFO] [stdout] | [INFO] [stdout] 236 | let _ = rename(from_tags, to_tags)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 236 - let _ = rename(from_tags, to_tags)?; [INFO] [stdout] 236 + rename(from_tags, to_tags)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/tags.rs:287:40 [INFO] [stdout] | [INFO] [stdout] 287 | if let Some(chr) = line.chars().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `line.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `.write(true)` because there is `.append(true)` [INFO] [stdout] --> src/tags.rs:326:17 [INFO] [stdout] | [INFO] [stdout] 326 | .write(true) [INFO] [stdout] | ^^^^^^^^^^^^ help: remove `.write(true)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ineffective_open_options [INFO] [stdout] = note: `#[warn(clippy::ineffective_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/tags.rs:379:16 [INFO] [stdout] | [INFO] [stdout] 379 | if mods.len() >= 1 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!mods.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: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/rt_result.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | &RtErr::Message(ref msg) => writeln!(f, "{}", msg), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 19 - &RtErr::Message(ref msg) => writeln!(f, "{}", msg), [INFO] [stdout] 19 + RtErr::Message(msg) => writeln!(f, "{}", msg), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take` [INFO] [stdout] --> src/types.rs:119:21 [INFO] [stdout] | [INFO] [stdout] 119 | let roots = mem::replace(&mut self.roots, vec![]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(&mut self.roots)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_with_default [INFO] [stdout] = note: `#[warn(clippy::mem_replace_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing an `Option` with `None` [INFO] [stdout] --> src/types.rs:139:32 [INFO] [stdout] | [INFO] [stdout] 139 | if let Some(dep_ids) = mem::replace(&mut self.dependencies[source_id.id], None) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `self.dependencies[source_id.id].take()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stdout] = note: `#[warn(clippy::mem_replace_option_with_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(Vec::as_slice)` on an `Option` value [INFO] [stdout] --> src/types.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 149 | self.dependencies[*source.id].as_ref().map(Vec::as_slice) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.dependencies[*source.id].as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] = note: `#[warn(clippy::option_as_ref_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/types.rs:152:27 [INFO] [stdout] | [INFO] [stdout] 152 | fn ancestors_internal<'a>(&'a self, source_id: SourceId, [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 152 - fn ancestors_internal<'a>(&'a self, source_id: SourceId, [INFO] [stdout] 152 + fn ancestors_internal(&self, source_id: SourceId, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/rt_result.rs:48:6 [INFO] [stdout] | [INFO] [stdout] 48 | impl<'a> From<&'a str> for RtErr { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 48 - impl<'a> From<&'a str> for RtErr { [INFO] [stdout] 48 + impl From<&str> for RtErr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/dependencies.rs:61:16 [INFO] [stdout] | [INFO] [stdout] 61 | if path == None { [INFO] [stdout] | ^^^^^^^^^^^^ help: use `Option::is_none()` instead: `path.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/types.rs:249:45 [INFO] [stdout] | [INFO] [stdout] 249 | let _ = fs::remove_file(&path); [INFO] [stdout] | ^^^^^ help: change this to: `path` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dependencies.rs:88:42 [INFO] [stdout] | [INFO] [stdout] 88 | let member_package = package(&member_id, packages)?; [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `member_id` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dependencies.rs:135:38 [INFO] [stdout] | [INFO] [stdout] 135 | src_ids.push(package(&pkg_id, packages)?.source_id); [INFO] [stdout] | ^^^^^^^ help: change this to: `pkg_id` [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: binary comparison to literal `Option::None` [INFO] [stdout] --> src/dependencies.rs:143:23 [INFO] [stdout] | [INFO] [stdout] 143 | let is_root = root_ids.iter().find(|id| **id == node_package.source_id) != None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `root_ids.iter().find(|id| **id == node_package.source_id).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/types.rs:475:44 [INFO] [stdout] | [INFO] [stdout] 475 | let mut cmd = Command::new(&exe_name); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `exe_name` [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] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/types.rs:493:44 [INFO] [stdout] | [INFO] [stdout] 493 | let mut cmd = Command::new(&exe_name); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `exe_name` [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] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/dependencies.rs:203:41 [INFO] [stdout] | [INFO] [stdout] 203 | serde_json::to_string_pretty(value).unwrap_or(String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_unstable_by_key` [INFO] [stdout] --> src/types.rs:516:5 [INFO] [stdout] | [INFO] [stdout] 516 | sources.sort_unstable_by(|a, b| a.id.cmp(&b.id)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 516 - sources.sort_unstable_by(|a, b| a.id.cmp(&b.id)); [INFO] [stdout] 516 + sources.sort_unstable_by_key(|a| a.id); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `names` [INFO] [stdout] --> src/tags.rs:20:18 [INFO] [stdout] | [INFO] [stdout] 20 | for i in 0..num_names { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 20 - for i in 0..num_names { [INFO] [stdout] 20 + for (i, ) in names.iter().enumerate().take(num_names) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `print!()` with a format string that ends in a single newline [INFO] [stdout] --> src/tags.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | print!(" ...\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stdout] = note: `#[warn(clippy::print_with_newline)]` on by default [INFO] [stdout] help: use `println!` instead [INFO] [stdout] | [INFO] [stdout] 27 - print!(" ...\n"); [INFO] [stdout] 27 + println!(" ..."); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_unstable_by_key` [INFO] [stdout] --> src/tags.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | srcs.sort_unstable_by(|a, b| b.max_depth.cmp(&a.max_depth)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 47 - srcs.sort_unstable_by(|a, b| b.max_depth.cmp(&a.max_depth)); [INFO] [stdout] 47 + srcs.sort_unstable_by_key(|b| std::cmp::Reverse(b.max_depth)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tags.rs:51:56 [INFO] [stdout] | [INFO] [stdout] 51 | srcs_with_tags.push(SourceWithTmpTags::new(&config, src)?); [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [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: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/tags.rs:74:17 [INFO] [stdout] | [INFO] [stdout] 74 | for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 74 - for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] 74 + for SourceWithTmpTags { source, tags_file, .. } in &sources_to_update { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/tags.rs:74:38 [INFO] [stdout] | [INFO] [stdout] 74 | for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 74 - for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] 74 + for &SourceWithTmpTags { source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/tags.rs:81:13 [INFO] [stdout] | [INFO] [stdout] 81 | for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 81 - for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] 81 + for SourceWithTmpTags { source, tags_file, .. } in &sources_to_update { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> src/tags.rs:124:17 [INFO] [stdout] | [INFO] [stdout] 124 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/tags.rs:129:29 [INFO] [stdout] | [INFO] [stdout] 129 | .filter(|d| reexported_crates.iter().find(|c| **c == d.name) != None) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `reexported_crates.iter().find(|c| **c == d.name).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/config.rs:196:26 [INFO] [stdout] | [INFO] [stdout] 196 | Some(ref exe) if exe != "" => vec![exe.as_str()], [INFO] [stdout] | ^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!exe.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/tags.rs:81:34 [INFO] [stdout] | [INFO] [stdout] 81 | for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 81 - for &SourceWithTmpTags { ref source, ref tags_file, .. } in &sources_to_update { [INFO] [stdout] 81 + for &SourceWithTmpTags { source, ref tags_file, .. } in &sources_to_update { [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:60:46 [INFO] [stdout] | [INFO] [stdout] 60 | let metadata = fetch_source_and_metadata(&config)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [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 let-binding has unit value [INFO] [stdout] --> src/tags.rs:236:5 [INFO] [stdout] | [INFO] [stdout] 236 | let _ = rename(from_tags, to_tags)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 236 - let _ = rename(from_tags, to_tags)?; [INFO] [stdout] 236 + rename(from_tags, to_tags)?; [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:61:25 [INFO] [stdout] | [INFO] [stdout] 61 | update_std_lib_tags(&config)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [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/main.rs:65:44 [INFO] [stdout] | [INFO] [stdout] 65 | let mut dep_tree = dependency_tree(&config, &metadata)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [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: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/tags.rs:287:40 [INFO] [stdout] | [INFO] [stdout] 287 | if let Some(chr) = line.chars().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `line.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_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:94:17 [INFO] [stdout] | [INFO] [stdout] 94 | update_tags(&config, &dep_tree)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [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: unnecessary use of `.write(true)` because there is `.append(true)` [INFO] [stdout] --> src/tags.rs:326:17 [INFO] [stdout] | [INFO] [stdout] 326 | .write(true) [INFO] [stdout] | ^^^^^^^^^^^^ help: remove `.write(true)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ineffective_open_options [INFO] [stdout] = note: `#[warn(clippy::ineffective_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:124:8 [INFO] [stdout] | [INFO] [stdout] 124 | if ! src_path_str.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `src_path_str.is_err()` [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: length comparison to one [INFO] [stdout] --> src/tags.rs:379:16 [INFO] [stdout] | [INFO] [stdout] 379 | if mods.len() >= 1 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!mods.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: the borrowed expression implements the required traits [INFO] [stdout] --> src/main.rs:179:37 [INFO] [stdout] | [INFO] [stdout] 179 | let src_dir = src_path.join(&dir); [INFO] [stdout] | ^^^^ help: change this to: `dir` [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] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/main.rs:201:50 [INFO] [stdout] | [INFO] [stdout] 201 | let tmp_std_lib_tags = NamedTempFile::new_in(&output_path)?; [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `output_path` [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] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/types.rs:53:18 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn roots(&self) -> Sources { [INFO] [stdout] | ^^^^^ ^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 53 | pub fn roots(&self) -> Sources<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/types.rs:57:25 [INFO] [stdout] | [INFO] [stdout] 57 | pub fn dependencies(&self, source: &Source) -> Sources { [INFO] [stdout] | ^^^^^ ^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 57 | pub fn dependencies(&self, source: &Source) -> Sources<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: eliding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/types.rs:61:63 [INFO] [stdout] | [INFO] [stdout] 61 | pub fn all_sources<'a>(&'a self) -> Box + 'a> { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^ the same lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 61 | pub fn all_sources<'a>(&'a self) -> Box + 'a> { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take` [INFO] [stdout] --> src/types.rs:119:21 [INFO] [stdout] | [INFO] [stdout] 119 | let roots = mem::replace(&mut self.roots, vec![]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(&mut self.roots)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_with_default [INFO] [stdout] = note: `#[warn(clippy::mem_replace_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing an `Option` with `None` [INFO] [stdout] --> src/types.rs:139:32 [INFO] [stdout] | [INFO] [stdout] 139 | if let Some(dep_ids) = mem::replace(&mut self.dependencies[source_id.id], None) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `self.dependencies[source_id.id].take()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stdout] = note: `#[warn(clippy::mem_replace_option_with_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(Vec::as_slice)` on an `Option` value [INFO] [stdout] --> src/types.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 149 | self.dependencies[*source.id].as_ref().map(Vec::as_slice) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `self.dependencies[*source.id].as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] = note: `#[warn(clippy::option_as_ref_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/types.rs:152:27 [INFO] [stdout] | [INFO] [stdout] 152 | fn ancestors_internal<'a>(&'a self, source_id: SourceId, [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 152 - fn ancestors_internal<'a>(&'a self, source_id: SourceId, [INFO] [stdout] 152 + fn ancestors_internal(&self, source_id: SourceId, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/types.rs:249:45 [INFO] [stdout] | [INFO] [stdout] 249 | let _ = fs::remove_file(&path); [INFO] [stdout] | ^^^^^ help: change this to: `path` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/types.rs:475:44 [INFO] [stdout] | [INFO] [stdout] 475 | let mut cmd = Command::new(&exe_name); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `exe_name` [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] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/types.rs:493:44 [INFO] [stdout] | [INFO] [stdout] 493 | let mut cmd = Command::new(&exe_name); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `exe_name` [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] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_unstable_by_key` [INFO] [stdout] --> src/types.rs:516:5 [INFO] [stdout] | [INFO] [stdout] 516 | sources.sort_unstable_by(|a, b| a.id.cmp(&b.id)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 516 - sources.sort_unstable_by(|a, b| a.id.cmp(&b.id)); [INFO] [stdout] 516 + sources.sort_unstable_by_key(|a| a.id); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/config.rs:196:26 [INFO] [stdout] | [INFO] [stdout] 196 | Some(ref exe) if exe != "" => vec![exe.as_str()], [INFO] [stdout] | ^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!exe.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` 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:60:46 [INFO] [stdout] | [INFO] [stdout] 60 | let metadata = fetch_source_and_metadata(&config)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [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/main.rs:61:25 [INFO] [stdout] | [INFO] [stdout] 61 | update_std_lib_tags(&config)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [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/main.rs:65:44 [INFO] [stdout] | [INFO] [stdout] 65 | let mut dep_tree = dependency_tree(&config, &metadata)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [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/main.rs:94:17 [INFO] [stdout] | [INFO] [stdout] 94 | update_tags(&config, &dep_tree)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [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/main.rs:124:8 [INFO] [stdout] | [INFO] [stdout] 124 | if ! src_path_str.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `src_path_str.is_err()` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/main.rs:179:37 [INFO] [stdout] | [INFO] [stdout] 179 | let src_dir = src_path.join(&dir); [INFO] [stdout] | ^^^^ help: change this to: `dir` [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] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/main.rs:201:50 [INFO] [stdout] | [INFO] [stdout] 201 | let tmp_std_lib_tags = NamedTempFile::new_in(&output_path)?; [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `output_path` [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] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/types.rs:53:18 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn roots(&self) -> Sources { [INFO] [stdout] | ^^^^^ ^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 53 | pub fn roots(&self) -> Sources<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/types.rs:57:25 [INFO] [stdout] | [INFO] [stdout] 57 | pub fn dependencies(&self, source: &Source) -> Sources { [INFO] [stdout] | ^^^^^ ^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 57 | pub fn dependencies(&self, source: &Source) -> Sources<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: eliding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/types.rs:61:63 [INFO] [stdout] | [INFO] [stdout] 61 | pub fn all_sources<'a>(&'a self) -> Box + 'a> { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^ the same lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 61 | pub fn all_sources<'a>(&'a self) -> Box + 'a> { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.77s [INFO] running `Command { std: "docker" "inspect" "7bb9e0f90a5240f375a7eee3059285ffd85db20715a5f1bf166bed0614367329", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7bb9e0f90a5240f375a7eee3059285ffd85db20715a5f1bf166bed0614367329", kill_on_drop: false }` [INFO] [stdout] 7bb9e0f90a5240f375a7eee3059285ffd85db20715a5f1bf166bed0614367329