[INFO] fetching crate libgitdit 0.5.0... [INFO] linting libgitdit-0.5.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate libgitdit 0.5.0 into /workspace/builds/worker-5-tc1/source [INFO] started tweaking crates.io crate libgitdit 0.5.0 [INFO] finished tweaking crates.io crate libgitdit 0.5.0 [INFO] tweaked toml for crates.io crate libgitdit 0.5.0 written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate libgitdit 0.5.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] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 71 packages to latest compatible versions [INFO] [stderr] Adding git2 v0.17.2 (available: v0.20.4) [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] [stderr] Downloading crates ... [INFO] [stderr] Downloaded git2 v0.17.2 [INFO] [stderr] Downloaded libgit2-sys v0.15.2+1.6.4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] c556fdb601b214f4cb799ae3469f1badecbd0d66f05f944896df178d27b1f2e8 [INFO] running `Command { std: "docker" "start" "-a" "c556fdb601b214f4cb799ae3469f1badecbd0d66f05f944896df178d27b1f2e8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c556fdb601b214f4cb799ae3469f1badecbd0d66f05f944896df178d27b1f2e8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c556fdb601b214f4cb799ae3469f1badecbd0d66f05f944896df178d27b1f2e8", kill_on_drop: false }` [INFO] [stdout] c556fdb601b214f4cb799ae3469f1badecbd0d66f05f944896df178d27b1f2e8 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] 96075a2475198484c3e756a9011ab1bf9cd80ce5c8293f05aca684f029b594e6 [INFO] running `Command { std: "docker" "start" "-a" "96075a2475198484c3e756a9011ab1bf9cd80ce5c8293f05aca684f029b594e6", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Compiling error-chain v0.12.4 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Checking backtrace v0.3.76 [INFO] [stderr] Compiling cc v1.2.57 [INFO] [stderr] Compiling openssl-sys v0.9.112 [INFO] [stderr] Compiling libz-sys v1.1.25 [INFO] [stderr] Compiling libssh2-sys v0.3.1 [INFO] [stderr] Compiling libgit2-sys v0.15.2+1.6.4 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Checking icu_properties v2.1.2 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Checking git2 v0.17.2 [INFO] [stderr] Checking libgitdit v0.5.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unexpected `cfg` condition name: `has_error_description_deprecated` [INFO] [stdout] --> src/error.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | / error_chain! { [INFO] [stdout] 13 | | foreign_links { [INFO] [stdout] 14 | | GitError(::git2::Error); [INFO] [stdout] ... | [INFO] [stdout] 108 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `docsrs`, `feature`, and `test` and 31 more [INFO] [stdout] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `impl_error_chain_processed` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the macro `impl_error_chain_processed` may come from an old version of the `error_chain` crate, try updating your dependency with `cargo update -p error_chain` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/gc.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | repo: repo, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `repo` [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/issue.rs:123:32 [INFO] [stdout] | [INFO] [stdout] 123 | .map(|obj| Issue { repo: repo, obj: obj }) [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `repo` [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/issue.rs:123:44 [INFO] [stdout] | [INFO] [stdout] 123 | .map(|obj| Issue { repo: repo, obj: obj }) [INFO] [stdout] | ^^^^^^^^ help: replace it with: `obj` [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/iter.rs:41:32 [INFO] [stdout] | [INFO] [stdout] 41 | HeadRefsToIssuesIter { inner: inner, repo: repo } [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `inner` [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/iter.rs:41:46 [INFO] [stdout] | [INFO] [stdout] 41 | HeadRefsToIssuesIter { inner: inner, repo: repo } [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `repo` [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/iter.rs:75:20 [INFO] [stdout] | [INFO] [stdout] 75 | Messages { revwalk: revwalk, repo: repo } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `revwalk` [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/iter.rs:75:38 [INFO] [stdout] | [INFO] [stdout] 75 | Messages { revwalk: revwalk, repo: repo } [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `repo` [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/message/block.rs:154:13 [INFO] [stdout] | [INFO] [stdout] 154 | blocks: blocks, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `blocks` [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/trailer/accumulation.rs:173:29 [INFO] [stdout] | [INFO] [stdout] 173 | SingleAccumulator { key: key, acc: ValueAccumulator::from(policy) } [INFO] [stdout] | ^^^^^^^^ help: replace it with: `key` [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/trailer/accumulation.rs:216:44 [INFO] [stdout] | [INFO] [stdout] 216 | SingleKeyTrailerAssemblyIterator { key: key, inner: inner } [INFO] [stdout] | ^^^^^^^^ help: replace it with: `key` [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/trailer/accumulation.rs:216:54 [INFO] [stdout] | [INFO] [stdout] 216 | SingleKeyTrailerAssemblyIterator { key: key, inner: inner } [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `inner` [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/trailer/filter.rs:70:16 [INFO] [stdout] | [INFO] [stdout] 70 | Self { trailer: trailer, matcher: matcher } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `trailer` [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/trailer/filter.rs:70:34 [INFO] [stdout] | [INFO] [stdout] 70 | Self { trailer: trailer, matcher: matcher } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `matcher` [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/test_utils.rs:47:23 [INFO] [stdout] | [INFO] [stdout] 47 | TestingRepo { repo: repo } [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `repo` [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: unexpected `cfg` condition name: `has_error_description_deprecated` [INFO] [stdout] --> src/error.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | / error_chain! { [INFO] [stdout] 13 | | foreign_links { [INFO] [stdout] 14 | | GitError(::git2::Error); [INFO] [stdout] ... | [INFO] [stdout] 108 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `docsrs`, `feature`, and `test` and 31 more [INFO] [stdout] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `impl_error_chain_processed` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the macro `impl_error_chain_processed` may come from an old version of the `error_chain` crate, try updating your dependency with `cargo update -p error_chain` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/gc.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | repo: repo, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `repo` [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/issue.rs:123:32 [INFO] [stdout] | [INFO] [stdout] 123 | .map(|obj| Issue { repo: repo, obj: obj }) [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `repo` [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/issue.rs:123:44 [INFO] [stdout] | [INFO] [stdout] 123 | .map(|obj| Issue { repo: repo, obj: obj }) [INFO] [stdout] | ^^^^^^^^ help: replace it with: `obj` [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/iter.rs:41:32 [INFO] [stdout] | [INFO] [stdout] 41 | HeadRefsToIssuesIter { inner: inner, repo: repo } [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `inner` [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/iter.rs:41:46 [INFO] [stdout] | [INFO] [stdout] 41 | HeadRefsToIssuesIter { inner: inner, repo: repo } [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `repo` [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/iter.rs:75:20 [INFO] [stdout] | [INFO] [stdout] 75 | Messages { revwalk: revwalk, repo: repo } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `revwalk` [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/iter.rs:75:38 [INFO] [stdout] | [INFO] [stdout] 75 | Messages { revwalk: revwalk, repo: repo } [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `repo` [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/message/block.rs:154:13 [INFO] [stdout] | [INFO] [stdout] 154 | blocks: blocks, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `blocks` [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/trailer/accumulation.rs:173:29 [INFO] [stdout] | [INFO] [stdout] 173 | SingleAccumulator { key: key, acc: ValueAccumulator::from(policy) } [INFO] [stdout] | ^^^^^^^^ help: replace it with: `key` [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/trailer/accumulation.rs:216:44 [INFO] [stdout] | [INFO] [stdout] 216 | SingleKeyTrailerAssemblyIterator { key: key, inner: inner } [INFO] [stdout] | ^^^^^^^^ help: replace it with: `key` [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/trailer/accumulation.rs:216:54 [INFO] [stdout] | [INFO] [stdout] 216 | SingleKeyTrailerAssemblyIterator { key: key, inner: inner } [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `inner` [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/trailer/filter.rs:70:16 [INFO] [stdout] | [INFO] [stdout] 70 | Self { trailer: trailer, matcher: matcher } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `trailer` [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/trailer/filter.rs:70:34 [INFO] [stdout] | [INFO] [stdout] 70 | Self { trailer: trailer, matcher: matcher } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `matcher` [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: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> src/gc.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | if let Some(local_head) = issue.local_head().ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] = note: `#[warn(clippy::match_result_ok)]` on by default [INFO] [stdout] help: consider matching on `Ok(local_head)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 108 - if let Some(local_head) = issue.local_head().ok() { [INFO] [stdout] 108 + if let Ok(local_head) = issue.local_head() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/issue.rs:56:27 [INFO] [stdout] | [INFO] [stdout] 56 | Some(part) => if Self::id_from_str(part).is_some() { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 57 | | // The last element might be an id, in which case the second [INFO] [stdout] 58 | | // last part should tell us the meaning of the id. [INFO] [stdout] 59 | | match parts.next() { [INFO] [stdout] ... | [INFO] [stdout] 64 | | return None [INFO] [stdout] 65 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 56 ~ Some(part)f Self::id_from_str(part).is_some() => { [INFO] [stdout] 57 | // The last element might be an id, in which case the second [INFO] [stdout] ... [INFO] [stdout] 62 | } [INFO] [stdout] 63 ~ }, [INFO] [stdout] 64 ~ return None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/issue.rs:98:21 [INFO] [stdout] | [INFO] [stdout] 98 | f.write_str(match self { [INFO] [stdout] | _____________________^ [INFO] [stdout] 99 | | &IssueRefType::Any => "Any ref", [INFO] [stdout] 100 | | &IssueRefType::Head => "Head ref", [INFO] [stdout] 101 | | &IssueRefType::Leaf => "Leaf ref", [INFO] [stdout] 102 | | }) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 98 ~ f.write_str(match *self { [INFO] [stdout] 99 ~ IssueRefType::Any => "Any ref", [INFO] [stdout] 100 ~ IssueRefType::Head => "Head ref", [INFO] [stdout] 101 ~ IssueRefType::Leaf => "Leaf ref", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/iter.rs:241:29 [INFO] [stdout] | [INFO] [stdout] 241 | self.refs.entry(id).or_insert_with(Vec::new).push(reference); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `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: this lifetime isn't used in the impl [INFO] [stdout] --> src/message/line_processor.rs:69:6 [INFO] [stdout] | [INFO] [stdout] 69 | impl<'a, I, S> Iterator for StripWhiteSpaceLeftIter [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/message/line_processor.rs:98:6 [INFO] [stdout] | [INFO] [stdout] 98 | impl<'a, I, S> Iterator for StripWhiteSpaceRightIter [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/message/line_processor.rs:136:9 [INFO] [stdout] | [INFO] [stdout] 136 | while let Some(next) = self.0.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for next in self.0.by_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/message/line_processor.rs:181:13 [INFO] [stdout] | [INFO] [stdout] 181 | self.blanks = self.blanks - 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.blanks -= 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: manual implementation of an assign operation [INFO] [stdout] --> src/message/line_processor.rs:198:13 [INFO] [stdout] | [INFO] [stdout] 198 | self.blanks = self.blanks + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.blanks += 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] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/message/line_processor.rs:204:13 [INFO] [stdout] | [INFO] [stdout] 204 | self.blanks = self.blanks - 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.blanks -= 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] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `rsplitn` [INFO] [stdout] --> src/repository.rs:130:30 [INFO] [stdout] | [INFO] [stdout] 130 | .and_then(|name| name.rsplitn(3, "/").nth(1)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `name.rsplit("/")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_splitn [INFO] [stdout] = note: `#[warn(clippy::needless_splitn)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/trailer/accumulation.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / match self { [INFO] [stdout] 50 | | &mut ValueAccumulator::Latest(ref mut value) => if value.is_none() { [INFO] [stdout] 51 | | *value = Some(new_value); [INFO] [stdout] 52 | | }, [INFO] [stdout] 53 | | &mut ValueAccumulator::List(ref mut values) => values.push(new_value), [INFO] [stdout] 54 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 49 ~ match *self { [INFO] [stdout] 50 ~ ValueAccumulator::Latest(ref mut value) => if value.is_none() { [INFO] [stdout] 51 | *value = Some(new_value); [INFO] [stdout] 52 | }, [INFO] [stdout] 53 ~ ValueAccumulator::List(ref mut values) => values.push(new_value), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/trailer/accumulation.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | / self.get_mut(key.as_ref()) [INFO] [stdout] 132 | | .map(|ref mut acc| acc.process(value)); [INFO] [stdout] | |__________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 131 - self.get_mut(key.as_ref()) [INFO] [stdout] 132 - .map(|ref mut acc| acc.process(value)); [INFO] [stdout] 131 + if let Some(ref mut acc) = self.get_mut(key.as_ref()) { acc.process(value) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/trailer/accumulation.rs:192:1 [INFO] [stdout] | [INFO] [stdout] 192 | impl Into<(String, ValueAccumulator)> for SingleAccumulator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 192 ~ impl From for (String, ValueAccumulator) { [INFO] [stdout] 193 ~ fn from(val: SingleAccumulator) -> Self { [INFO] [stdout] 194 ~ (val.key, val.acc) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/trailer/accumulation.rs:198:1 [INFO] [stdout] | [INFO] [stdout] 198 | impl Into for SingleAccumulator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 198 ~ impl From for ValueAccumulator { [INFO] [stdout] 199 ~ fn from(val: SingleAccumulator) -> Self { [INFO] [stdout] 200 ~ val.acc [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/trailer/filter.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | / match self { [INFO] [stdout] 42 | | &ValueMatcher::Any => true, [INFO] [stdout] 43 | | &ValueMatcher::Equals(ref v) => value == v, [INFO] [stdout] 44 | | &ValueMatcher::Contains(ref s) => value.to_string().contains(s), [INFO] [stdout] 45 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 41 ~ match *self { [INFO] [stdout] 42 ~ ValueMatcher::Any => true, [INFO] [stdout] 43 ~ ValueMatcher::Equals(ref v) => value == v, [INFO] [stdout] 44 ~ ValueMatcher::Contains(ref s) => value.to_string().contains(s), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/trailer/filter.rs:43:13 [INFO] [stdout] | [INFO] [stdout] 43 | &ValueMatcher::Equals(ref v) => value == v, [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] 43 - &ValueMatcher::Equals(ref v) => value == v, [INFO] [stdout] 43 + ValueMatcher::Equals(v) => value == v, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/trailer/filter.rs:44:13 [INFO] [stdout] | [INFO] [stdout] 44 | &ValueMatcher::Contains(ref s) => value.to_string().contains(s), [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] 44 - &ValueMatcher::Contains(ref s) => value.to_string().contains(s), [INFO] [stdout] 44 + ValueMatcher::Contains(s) => value.to_string().contains(s), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/trailer/filter.rs:80:20 [INFO] [stdout] | [INFO] [stdout] 80 | pub fn matches<'b>(&self, accumulator: &::std::collections::HashMap) -> bool { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/trailer/mod.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | / match self { [INFO] [stdout] 96 | | &mut TrailerValue::Int(i) => *self = TrailerValue::String(i.to_string() + slice), [INFO] [stdout] 97 | | &mut TrailerValue::String(ref mut s) => s.push_str(slice), [INFO] [stdout] 98 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 95 ~ match *self { [INFO] [stdout] 96 ~ TrailerValue::Int(i) => *self = TrailerValue::String(i.to_string() + slice), [INFO] [stdout] 97 ~ TrailerValue::String(ref mut s) => s.push_str(slice), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/trailer/mod.rs:140:1 [INFO] [stdout] | [INFO] [stdout] 140 | impl Into<(TrailerKey, TrailerValue)> for Trailer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 140 ~ impl From for (TrailerKey, TrailerValue) { [INFO] [stdout] 141 ~ fn from(val: Trailer) -> Self { [INFO] [stdout] 142 ~ (val.key, val.value) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/issue.rs:252:17 [INFO] [stdout] | [INFO] [stdout] 252 | messages.revwalk.simplify_first_parent(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 252 | let _ = messages.revwalk.simplify_first_parent(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/issue.rs:253:17 [INFO] [stdout] | [INFO] [stdout] 253 | messages.revwalk.set_sorting(git2::Sort::TOPOLOGICAL); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 253 | let _ = messages.revwalk.set_sorting(git2::Sort::TOPOLOGICAL); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/iter.rs:172:13 [INFO] [stdout] | [INFO] [stdout] 172 | self.0.revwalk.reset(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 172 | let _ = self.0.revwalk.reset(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:44:19 [INFO] [stdout] | [INFO] [stdout] 44 | fn find_issue(&self, id: Oid) -> Result; [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] 44 | fn find_issue(&self, id: Oid) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:50:26 [INFO] [stdout] | [INFO] [stdout] 50 | fn issue_by_head_ref(&self, head_ref: &git2::Reference) -> Result; [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^^ the same lifetime is hidden 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] 50 | fn issue_by_head_ref(&self, head_ref: &git2::Reference) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/repository.rs:56:73 [INFO] [stdout] | [INFO] [stdout] 56 | fn issue_with_message<'a>(&'a self, message: &Commit<'a>) -> Result; [INFO] [stdout] | -- -- ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named 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] 56 | fn issue_with_message<'a>(&'a self, message: &Commit<'a>) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:64:27 [INFO] [stdout] | [INFO] [stdout] 64 | fn issues_with_prefix(&self, prefix: &str) -> Result; [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] 64 | fn issues_with_prefix(&self, prefix: &str) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:70:15 [INFO] [stdout] | [INFO] [stdout] 70 | fn issues(&self) -> Result; [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] 70 | fn issues(&self) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:74:34 [INFO] [stdout] | [INFO] [stdout] 74 | fn create_issue<'a, A, I, J>(&self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 80 | ) -> Result [INFO] [stdout] | ^^^^^ the same lifetime is hidden 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] 80 | ) -> Result> [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:90:30 [INFO] [stdout] | [INFO] [stdout] 90 | fn first_parent_messages(&self, id: Oid) -> Result; [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] 90 | fn first_parent_messages(&self, id: Oid) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:107:19 [INFO] [stdout] | [INFO] [stdout] 107 | fn empty_tree(&self) -> Result; [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] 107 | fn empty_tree(&self) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:111:19 [INFO] [stdout] | [INFO] [stdout] 111 | fn find_issue(&self, id: Oid) -> Result { [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] 111 | fn find_issue(&self, id: Oid) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:123:26 [INFO] [stdout] | [INFO] [stdout] 123 | fn issue_by_head_ref(&self, head_ref: &git2::Reference) -> Result { [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^^ the same lifetime is hidden 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] 123 | fn issue_by_head_ref(&self, head_ref: &git2::Reference) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/repository.rs:142:73 [INFO] [stdout] | [INFO] [stdout] 142 | fn issue_with_message<'a>(&'a self, message: &Commit<'a>) -> Result { [INFO] [stdout] | -- -- ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named 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] 142 | fn issue_with_message<'a>(&'a self, message: &Commit<'a>) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:155:27 [INFO] [stdout] | [INFO] [stdout] 155 | fn issues_with_prefix(&self, prefix: &str) -> Result { [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] 155 | fn issues_with_prefix(&self, prefix: &str) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:163:15 [INFO] [stdout] | [INFO] [stdout] 163 | fn issues(&self) -> Result { [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] 163 | fn issues(&self) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:171:34 [INFO] [stdout] | [INFO] [stdout] 171 | fn create_issue<'a, A, I, J>(&self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 177 | ) -> Result [INFO] [stdout] | ^^^^^ the same lifetime is hidden 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] 177 | ) -> Result> [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:193:30 [INFO] [stdout] | [INFO] [stdout] 193 | fn first_parent_messages(&self, id: Oid) -> Result { [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] 193 | fn first_parent_messages(&self, id: Oid) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/repository.rs:197:17 [INFO] [stdout] | [INFO] [stdout] 197 | messages.revwalk.simplify_first_parent(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 197 | let _ = messages.revwalk.simplify_first_parent(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/repository.rs:198:17 [INFO] [stdout] | [INFO] [stdout] 198 | messages.revwalk.set_sorting(git2::Sort::TOPOLOGICAL); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 198 | let _ = messages.revwalk.set_sorting(git2::Sort::TOPOLOGICAL); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:212:19 [INFO] [stdout] | [INFO] [stdout] 212 | fn empty_tree(&self) -> Result { [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] 212 | fn empty_tree(&self) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> src/gc.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | if let Some(local_head) = issue.local_head().ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] = note: `#[warn(clippy::match_result_ok)]` on by default [INFO] [stdout] help: consider matching on `Ok(local_head)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 108 - if let Some(local_head) = issue.local_head().ok() { [INFO] [stdout] 108 + if let Ok(local_head) = issue.local_head() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/issue.rs:56:27 [INFO] [stdout] | [INFO] [stdout] 56 | Some(part) => if Self::id_from_str(part).is_some() { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 57 | | // The last element might be an id, in which case the second [INFO] [stdout] 58 | | // last part should tell us the meaning of the id. [INFO] [stdout] 59 | | match parts.next() { [INFO] [stdout] ... | [INFO] [stdout] 64 | | return None [INFO] [stdout] 65 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 56 ~ Some(part)f Self::id_from_str(part).is_some() => { [INFO] [stdout] 57 | // The last element might be an id, in which case the second [INFO] [stdout] ... [INFO] [stdout] 62 | } [INFO] [stdout] 63 ~ }, [INFO] [stdout] 64 ~ return None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/issue.rs:98:21 [INFO] [stdout] | [INFO] [stdout] 98 | f.write_str(match self { [INFO] [stdout] | _____________________^ [INFO] [stdout] 99 | | &IssueRefType::Any => "Any ref", [INFO] [stdout] 100 | | &IssueRefType::Head => "Head ref", [INFO] [stdout] 101 | | &IssueRefType::Leaf => "Leaf ref", [INFO] [stdout] 102 | | }) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 98 ~ f.write_str(match *self { [INFO] [stdout] 99 ~ IssueRefType::Any => "Any ref", [INFO] [stdout] 100 ~ IssueRefType::Head => "Head ref", [INFO] [stdout] 101 ~ IssueRefType::Leaf => "Leaf ref", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/iter.rs:241:29 [INFO] [stdout] | [INFO] [stdout] 241 | self.refs.entry(id).or_insert_with(Vec::new).push(reference); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `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: this boolean expression can be simplified [INFO] [stdout] --> src/message/block.rs:284:17 [INFO] [stdout] | [INFO] [stdout] 284 | assert!(!blocks.next().is_some()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `blocks.next().is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/message/block.rs:329:17 [INFO] [stdout] | [INFO] [stdout] 329 | assert!(!trailers.next().is_some()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `trailers.next().is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/message/line_processor.rs:69:6 [INFO] [stdout] | [INFO] [stdout] 69 | impl<'a, I, S> Iterator for StripWhiteSpaceLeftIter [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/message/line_processor.rs:98:6 [INFO] [stdout] | [INFO] [stdout] 98 | impl<'a, I, S> Iterator for StripWhiteSpaceRightIter [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/message/line_processor.rs:136:9 [INFO] [stdout] | [INFO] [stdout] 136 | while let Some(next) = self.0.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for next in self.0.by_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/message/line_processor.rs:181:13 [INFO] [stdout] | [INFO] [stdout] 181 | self.blanks = self.blanks - 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.blanks -= 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: manual implementation of an assign operation [INFO] [stdout] --> src/message/line_processor.rs:198:13 [INFO] [stdout] | [INFO] [stdout] 198 | self.blanks = self.blanks + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.blanks += 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] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/message/line_processor.rs:204:13 [INFO] [stdout] | [INFO] [stdout] 204 | self.blanks = self.blanks - 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.blanks -= 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] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/message/line_processor.rs:238:17 [INFO] [stdout] | [INFO] [stdout] 238 | assert!(!lines.next().is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `lines.next().is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/message/line_processor.rs:248:17 [INFO] [stdout] | [INFO] [stdout] 248 | assert!(!lines.next().is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `lines.next().is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/message/line_processor.rs:258:17 [INFO] [stdout] | [INFO] [stdout] 258 | assert!(!lines.next().is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `lines.next().is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/message/line_processor.rs:266:17 [INFO] [stdout] | [INFO] [stdout] 266 | assert!(!lines.next().is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `lines.next().is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/message/line_processor.rs:277:17 [INFO] [stdout] | [INFO] [stdout] 277 | assert!(!lines.next().is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `lines.next().is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `rsplitn` [INFO] [stdout] --> src/repository.rs:130:30 [INFO] [stdout] | [INFO] [stdout] 130 | .and_then(|name| name.rsplitn(3, "/").nth(1)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `name.rsplit("/")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_splitn [INFO] [stdout] = note: `#[warn(clippy::needless_splitn)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/trailer/accumulation.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / match self { [INFO] [stdout] 50 | | &mut ValueAccumulator::Latest(ref mut value) => if value.is_none() { [INFO] [stdout] 51 | | *value = Some(new_value); [INFO] [stdout] 52 | | }, [INFO] [stdout] 53 | | &mut ValueAccumulator::List(ref mut values) => values.push(new_value), [INFO] [stdout] 54 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 49 ~ match *self { [INFO] [stdout] 50 ~ ValueAccumulator::Latest(ref mut value) => if value.is_none() { [INFO] [stdout] 51 | *value = Some(new_value); [INFO] [stdout] 52 | }, [INFO] [stdout] 53 ~ ValueAccumulator::List(ref mut values) => values.push(new_value), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/trailer/accumulation.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | / self.get_mut(key.as_ref()) [INFO] [stdout] 132 | | .map(|ref mut acc| acc.process(value)); [INFO] [stdout] | |__________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 131 - self.get_mut(key.as_ref()) [INFO] [stdout] 132 - .map(|ref mut acc| acc.process(value)); [INFO] [stdout] 131 + if let Some(ref mut acc) = self.get_mut(key.as_ref()) { acc.process(value) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/trailer/accumulation.rs:192:1 [INFO] [stdout] | [INFO] [stdout] 192 | impl Into<(String, ValueAccumulator)> for SingleAccumulator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 192 ~ impl From for (String, ValueAccumulator) { [INFO] [stdout] 193 ~ fn from(val: SingleAccumulator) -> Self { [INFO] [stdout] 194 ~ (val.key, val.acc) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/trailer/accumulation.rs:198:1 [INFO] [stdout] | [INFO] [stdout] 198 | impl Into for SingleAccumulator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 198 ~ impl From for ValueAccumulator { [INFO] [stdout] 199 ~ fn from(val: SingleAccumulator) -> Self { [INFO] [stdout] 200 ~ val.acc [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/trailer/filter.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | / match self { [INFO] [stdout] 42 | | &ValueMatcher::Any => true, [INFO] [stdout] 43 | | &ValueMatcher::Equals(ref v) => value == v, [INFO] [stdout] 44 | | &ValueMatcher::Contains(ref s) => value.to_string().contains(s), [INFO] [stdout] 45 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 41 ~ match *self { [INFO] [stdout] 42 ~ ValueMatcher::Any => true, [INFO] [stdout] 43 ~ ValueMatcher::Equals(ref v) => value == v, [INFO] [stdout] 44 ~ ValueMatcher::Contains(ref s) => value.to_string().contains(s), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/trailer/filter.rs:43:13 [INFO] [stdout] | [INFO] [stdout] 43 | &ValueMatcher::Equals(ref v) => value == v, [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] 43 - &ValueMatcher::Equals(ref v) => value == v, [INFO] [stdout] 43 + ValueMatcher::Equals(v) => value == v, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/trailer/filter.rs:44:13 [INFO] [stdout] | [INFO] [stdout] 44 | &ValueMatcher::Contains(ref s) => value.to_string().contains(s), [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] 44 - &ValueMatcher::Contains(ref s) => value.to_string().contains(s), [INFO] [stdout] 44 + ValueMatcher::Contains(s) => value.to_string().contains(s), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/trailer/filter.rs:80:20 [INFO] [stdout] | [INFO] [stdout] 80 | pub fn matches<'b>(&self, accumulator: &::std::collections::HashMap) -> bool { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/trailer/mod.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | / match self { [INFO] [stdout] 96 | | &mut TrailerValue::Int(i) => *self = TrailerValue::String(i.to_string() + slice), [INFO] [stdout] 97 | | &mut TrailerValue::String(ref mut s) => s.push_str(slice), [INFO] [stdout] 98 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 95 ~ match *self { [INFO] [stdout] 96 ~ TrailerValue::Int(i) => *self = TrailerValue::String(i.to_string() + slice), [INFO] [stdout] 97 ~ TrailerValue::String(ref mut s) => s.push_str(slice), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/trailer/mod.rs:140:1 [INFO] [stdout] | [INFO] [stdout] 140 | impl Into<(TrailerKey, TrailerValue)> for Trailer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 140 ~ impl From for (TrailerKey, TrailerValue) { [INFO] [stdout] 141 ~ fn from(val: Trailer) -> Self { [INFO] [stdout] 142 ~ (val.key, val.value) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/issue.rs:252:17 [INFO] [stdout] | [INFO] [stdout] 252 | messages.revwalk.simplify_first_parent(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 252 | let _ = messages.revwalk.simplify_first_parent(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/issue.rs:253:17 [INFO] [stdout] | [INFO] [stdout] 253 | messages.revwalk.set_sorting(git2::Sort::TOPOLOGICAL); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 253 | let _ = messages.revwalk.set_sorting(git2::Sort::TOPOLOGICAL); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/iter.rs:172:13 [INFO] [stdout] | [INFO] [stdout] 172 | self.0.revwalk.reset(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 172 | let _ = self.0.revwalk.reset(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:44:19 [INFO] [stdout] | [INFO] [stdout] 44 | fn find_issue(&self, id: Oid) -> Result; [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] 44 | fn find_issue(&self, id: Oid) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:50:26 [INFO] [stdout] | [INFO] [stdout] 50 | fn issue_by_head_ref(&self, head_ref: &git2::Reference) -> Result; [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^^ the same lifetime is hidden 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] 50 | fn issue_by_head_ref(&self, head_ref: &git2::Reference) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/repository.rs:56:73 [INFO] [stdout] | [INFO] [stdout] 56 | fn issue_with_message<'a>(&'a self, message: &Commit<'a>) -> Result; [INFO] [stdout] | -- -- ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named 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] 56 | fn issue_with_message<'a>(&'a self, message: &Commit<'a>) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:64:27 [INFO] [stdout] | [INFO] [stdout] 64 | fn issues_with_prefix(&self, prefix: &str) -> Result; [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] 64 | fn issues_with_prefix(&self, prefix: &str) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:70:15 [INFO] [stdout] | [INFO] [stdout] 70 | fn issues(&self) -> Result; [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] 70 | fn issues(&self) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:74:34 [INFO] [stdout] | [INFO] [stdout] 74 | fn create_issue<'a, A, I, J>(&self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 80 | ) -> Result [INFO] [stdout] | ^^^^^ the same lifetime is hidden 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] 80 | ) -> Result> [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:90:30 [INFO] [stdout] | [INFO] [stdout] 90 | fn first_parent_messages(&self, id: Oid) -> Result; [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] 90 | fn first_parent_messages(&self, id: Oid) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:107:19 [INFO] [stdout] | [INFO] [stdout] 107 | fn empty_tree(&self) -> Result; [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] 107 | fn empty_tree(&self) -> Result>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:111:19 [INFO] [stdout] | [INFO] [stdout] 111 | fn find_issue(&self, id: Oid) -> Result { [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] 111 | fn find_issue(&self, id: Oid) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:123:26 [INFO] [stdout] | [INFO] [stdout] 123 | fn issue_by_head_ref(&self, head_ref: &git2::Reference) -> Result { [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^^ the same lifetime is hidden 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] 123 | fn issue_by_head_ref(&self, head_ref: &git2::Reference) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/repository.rs:142:73 [INFO] [stdout] | [INFO] [stdout] 142 | fn issue_with_message<'a>(&'a self, message: &Commit<'a>) -> Result { [INFO] [stdout] | -- -- ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the lifetime is named here [INFO] [stdout] | the lifetime is named 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] 142 | fn issue_with_message<'a>(&'a self, message: &Commit<'a>) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:155:27 [INFO] [stdout] | [INFO] [stdout] 155 | fn issues_with_prefix(&self, prefix: &str) -> Result { [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] 155 | fn issues_with_prefix(&self, prefix: &str) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:163:15 [INFO] [stdout] | [INFO] [stdout] 163 | fn issues(&self) -> Result { [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] 163 | fn issues(&self) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:171:34 [INFO] [stdout] | [INFO] [stdout] 171 | fn create_issue<'a, A, I, J>(&self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 177 | ) -> Result [INFO] [stdout] | ^^^^^ the same lifetime is hidden 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] 177 | ) -> Result> [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:193:30 [INFO] [stdout] | [INFO] [stdout] 193 | fn first_parent_messages(&self, id: Oid) -> Result { [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] 193 | fn first_parent_messages(&self, id: Oid) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/repository.rs:197:17 [INFO] [stdout] | [INFO] [stdout] 197 | messages.revwalk.simplify_first_parent(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 197 | let _ = messages.revwalk.simplify_first_parent(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/repository.rs:198:17 [INFO] [stdout] | [INFO] [stdout] 198 | messages.revwalk.set_sorting(git2::Sort::TOPOLOGICAL); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 198 | let _ = messages.revwalk.set_sorting(git2::Sort::TOPOLOGICAL); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/repository.rs:212:19 [INFO] [stdout] | [INFO] [stdout] 212 | fn empty_tree(&self) -> Result { [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] 212 | fn empty_tree(&self) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 22.42s [INFO] running `Command { std: "docker" "inspect" "96075a2475198484c3e756a9011ab1bf9cd80ce5c8293f05aca684f029b594e6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "96075a2475198484c3e756a9011ab1bf9cd80ce5c8293f05aca684f029b594e6", kill_on_drop: false }` [INFO] [stdout] 96075a2475198484c3e756a9011ab1bf9cd80ce5c8293f05aca684f029b594e6