[INFO] fetching crate gossiphs 0.11.6... [INFO] linting gossiphs-0.11.6 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate gossiphs 0.11.6 into /workspace/builds/worker-2-tc1/source [INFO] started tweaking crates.io crate gossiphs 0.11.6 [INFO] removed 0 missing examples [INFO] finished tweaking crates.io crate gossiphs 0.11.6 [INFO] tweaked toml for crates.io crate gossiphs 0.11.6 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate gossiphs 0.11.6 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 gossiphs 0.11.6 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded unindent v0.2.3 [INFO] [stderr] Downloaded pyo3-macros v0.21.2 [INFO] [stderr] Downloaded inventory v0.3.15 [INFO] [stderr] Downloaded async-trait v0.1.79 [INFO] [stderr] Downloaded pyo3-build-config v0.21.2 [INFO] [stderr] Downloaded cupido v0.3.5 [INFO] [stderr] Downloaded pyo3-ffi v0.21.2 [INFO] [stderr] Downloaded numpy v0.21.0 [INFO] [stderr] Downloaded inquire v0.7.4 [INFO] [stderr] Downloaded hyper v1.2.0 [INFO] [stderr] Downloaded serde_json v1.0.115 [INFO] [stderr] Downloaded tree-sitter-java v0.21.0 [INFO] [stderr] Downloaded tree-sitter-python v0.21.0 [INFO] [stderr] Downloaded tree-sitter-javascript v0.21.4 [INFO] [stderr] Downloaded tree-sitter v0.22.6 [INFO] [stderr] Downloaded tree-sitter-go v0.21.0 [INFO] [stderr] Downloaded pyo3-macros-backend v0.21.2 [INFO] [stderr] Downloaded anyhow v1.0.93 [INFO] [stderr] Downloaded socket2 v0.5.6 [INFO] [stderr] Downloaded pyo3-stub-gen-derive v0.6.0 [INFO] [stderr] Downloaded tree-sitter-rust v0.21.2 [INFO] [stderr] Downloaded pyo3-stub-gen v0.6.0 [INFO] [stderr] Downloaded pyo3 v0.21.2 [INFO] [stderr] Downloaded tree-sitter-typescript v0.21.2 [INFO] [stderr] Downloaded tree-sitter-swift v0.5.0 [INFO] [stderr] Downloaded tree-sitter-c-sharp v0.21.3 [INFO] [stderr] Downloaded tree-sitter-kotlin v0.3.7 [INFO] [stderr] Downloaded openssl-src v300.2.3+3.2.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 1a4bbd6331f54cf2d68a8e12de67e103b53c6ab4483fa1e22c8f06da783de4f5 [INFO] running `Command { std: "docker" "start" "-a" "1a4bbd6331f54cf2d68a8e12de67e103b53c6ab4483fa1e22c8f06da783de4f5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "1a4bbd6331f54cf2d68a8e12de67e103b53c6ab4483fa1e22c8f06da783de4f5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1a4bbd6331f54cf2d68a8e12de67e103b53c6ab4483fa1e22c8f06da783de4f5", kill_on_drop: false }` [INFO] [stdout] 1a4bbd6331f54cf2d68a8e12de67e103b53c6ab4483fa1e22c8f06da783de4f5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] b3a01f3b8eab27fbbc750881a2f15ae58b9e0b503f71557dc9a0072986652202 [INFO] running `Command { std: "docker" "start" "-a" "b3a01f3b8eab27fbbc750881a2f15ae58b9e0b503f71557dc9a0072986652202", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.172 [INFO] [stderr] Compiling once_cell v1.19.0 [INFO] [stderr] Compiling proc-macro2 v1.0.89 [INFO] [stderr] Compiling autocfg v1.2.0 [INFO] [stderr] Checking memchr v2.7.2 [INFO] [stderr] Compiling target-lexicon v0.12.16 [INFO] [stderr] Compiling pkg-config v0.3.30 [INFO] [stderr] Checking regex-syntax v0.8.3 [INFO] [stderr] Compiling serde v1.0.215 [INFO] [stderr] Checking bytes v1.6.0 [INFO] [stderr] Compiling rustversion v1.0.15 [INFO] [stderr] Checking tracing-core v0.1.32 [INFO] [stderr] Compiling portable-atomic v1.6.0 [INFO] [stderr] Checking futures-task v0.3.30 [INFO] [stderr] Compiling crossbeam-utils v0.8.19 [INFO] [stderr] Checking hashbrown v0.15.1 [INFO] [stderr] Checking futures-util v0.3.30 [INFO] [stderr] Checking ryu v1.0.17 [INFO] [stderr] Checking utf8parse v0.2.1 [INFO] [stderr] Compiling signal-hook v0.3.17 [INFO] [stderr] Compiling async-trait v0.1.79 [INFO] [stderr] Compiling lock_api v0.4.11 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling matrixmultiply v0.3.9 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking http v1.1.0 [INFO] [stderr] Compiling memoffset v0.9.1 [INFO] [stderr] Checking indexmap v2.6.0 [INFO] [stderr] Checking anstyle-parse v0.2.3 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Checking unicode-normalization v0.1.23 [INFO] [stderr] Checking thread_local v1.1.8 [INFO] [stderr] Compiling pyo3-build-config v0.21.2 [INFO] [stderr] Compiling axum-core v0.4.3 [INFO] [stderr] Checking anstyle-query v1.0.2 [INFO] [stderr] Checking parking_lot_core v0.9.9 [INFO] [stderr] Compiling syn v2.0.87 [INFO] [stderr] Checking signal-hook-registry v1.4.1 [INFO] [stderr] Compiling jobserver v0.1.32 [INFO] [stderr] Checking mio v0.8.11 [INFO] [stderr] Checking http-body v1.0.0 [INFO] [stderr] Checking socket2 v0.5.6 [INFO] [stderr] Checking num_cpus v1.16.0 [INFO] [stderr] Checking parking_lot v0.12.1 [INFO] [stderr] Checking colorchoice v1.0.0 [INFO] [stderr] Checking tower-layer v0.3.2 [INFO] [stderr] Checking anstyle v1.0.6 [INFO] [stderr] Compiling serde_json v1.0.115 [INFO] [stderr] Checking unicode-width v0.1.11 [INFO] [stderr] Checking http-body-util v0.1.1 [INFO] [stderr] Compiling cc v1.0.106 [INFO] [stderr] Checking regex-automata v0.4.6 [INFO] [stderr] Checking idna v0.5.0 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling axum v0.7.5 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking anstream v0.6.13 [INFO] [stderr] Compiling indoc v2.0.5 [INFO] [stderr] Checking unindent v0.2.3 [INFO] [stderr] Checking bitflags v2.5.0 [INFO] [stderr] Checking clap_lex v0.7.0 [INFO] [stderr] Checking either v1.11.0 [INFO] [stderr] Checking winnow v0.6.20 [INFO] [stderr] Compiling anyhow v1.0.93 [INFO] [stderr] Checking crossbeam-deque v0.8.5 [INFO] [stderr] Checking signal-hook-mio v0.2.3 [INFO] [stderr] Checking url v2.5.0 [INFO] [stderr] Checking console v0.15.8 [INFO] [stderr] Checking clap_builder v4.5.2 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking sharded-slab v0.1.7 [INFO] [stderr] Checking fixedbitset v0.4.2 [INFO] [stderr] Checking unicode-segmentation v1.11.0 [INFO] [stderr] Checking ndarray v0.15.6 [INFO] [stderr] Checking sync_wrapper v1.0.1 [INFO] [stderr] Checking number_prefix v0.4.0 [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Checking petgraph v0.6.4 [INFO] [stderr] Checking rayon-core v1.12.1 [INFO] [stderr] Checking crossterm v0.25.0 [INFO] [stderr] Checking fuzzy-matcher v0.3.7 [INFO] [stderr] Checking indicatif v0.17.8 [INFO] [stderr] Compiling openssl-src v300.2.3+3.2.1 [INFO] [stderr] Checking newline-converter v0.3.0 [INFO] [stderr] Checking csv-core v0.1.11 [INFO] [stderr] Checking inventory v0.3.15 [INFO] [stderr] Checking maplit v1.0.2 [INFO] [stderr] Checking dyn-clone v1.0.17 [INFO] [stderr] Checking rayon v1.10.0 [INFO] [stderr] Checking termtree v0.4.1 [INFO] [stderr] Checking inquire v0.7.4 [INFO] [stderr] Checking tracing-subscriber v0.3.18 [INFO] [stderr] Compiling pyo3-ffi v0.21.2 [INFO] [stderr] Compiling pyo3 v0.21.2 [INFO] [stderr] Compiling tree-sitter v0.22.6 [INFO] [stderr] Compiling openssl-sys v0.9.102 [INFO] [stderr] Compiling libz-sys v1.1.16 [INFO] [stderr] Compiling libssh2-sys v0.3.0 [INFO] [stderr] Compiling libgit2-sys v0.16.2+1.7.2 [INFO] [stderr] Compiling tree-sitter-swift v0.5.0 [INFO] [stderr] Compiling tree-sitter-javascript v0.21.4 [INFO] [stderr] Compiling tree-sitter-go v0.21.0 [INFO] [stderr] Compiling tree-sitter-kotlin v0.3.7 [INFO] [stderr] Compiling tree-sitter-c-sharp v0.21.3 [INFO] [stderr] Compiling tree-sitter-typescript v0.21.2 [INFO] [stderr] Compiling tree-sitter-python v0.21.0 [INFO] [stderr] Checking regex v1.10.4 [INFO] [stderr] Compiling tree-sitter-java v0.21.0 [INFO] [stderr] Compiling tree-sitter-rust v0.21.2 [INFO] [stderr] Compiling pyo3-macros-backend v0.21.2 [INFO] [stderr] Compiling serde_derive v1.0.215 [INFO] [stderr] Compiling tokio-macros v2.2.0 [INFO] [stderr] Compiling tracing-attributes v0.1.27 [INFO] [stderr] Compiling pin-project-internal v1.1.5 [INFO] [stderr] Checking tokio v1.37.0 [INFO] [stderr] Compiling clap_derive v4.5.4 [INFO] [stderr] Compiling pyo3-stub-gen-derive v0.6.0 [INFO] [stderr] Checking pin-project v1.1.5 [INFO] [stderr] Checking tracing v0.1.40 [INFO] [stderr] Compiling pyo3-macros v0.21.2 [INFO] [stderr] Checking clap v4.5.4 [INFO] [stderr] Checking toml_datetime v0.6.8 [INFO] [stderr] Checking serde_spanned v0.6.8 [INFO] [stderr] Checking serde_path_to_error v0.1.16 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking csv v1.3.0 [INFO] [stderr] Checking toml_edit v0.22.22 [INFO] [stderr] Checking hyper v1.2.0 [INFO] [stderr] Checking tower v0.4.13 [INFO] [stderr] Checking hyper-util v0.1.3 [INFO] [stderr] Checking toml v0.8.19 [INFO] [stderr] Checking numpy v0.21.0 [INFO] [stderr] Checking pyo3-stub-gen v0.6.0 [INFO] [stderr] Checking git2 v0.18.3 [INFO] [stderr] Checking cupido v0.3.5 [INFO] [stderr] Checking gossiphs v0.11.6 (/opt/rustwide/workdir) [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/api.rs:196:17 [INFO] [stdout] | [INFO] [stdout] 196 | / return RelatedFileContext { [INFO] [stdout] 197 | | name: k.clone(), [INFO] [stdout] 198 | | score: *v, [INFO] [stdout] 199 | | defs: self.symbol_graph.list_definitions(k).len(), [INFO] [stdout] 200 | | refs: self.symbol_graph.list_references(k).len(), [INFO] [stdout] 201 | | related_symbols, [INFO] [stdout] 202 | | }; [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 196 ~ RelatedFileContext { [INFO] [stdout] 197 + name: k.clone(), [INFO] [stdout] 198 + score: *v, [INFO] [stdout] 199 + defs: self.symbol_graph.list_definitions(k).len(), [INFO] [stdout] 200 + refs: self.symbol_graph.list_references(k).len(), [INFO] [stdout] 201 + related_symbols, [INFO] [stdout] 202 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `iter().cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stdout] --> src/api.rs:228:38 [INFO] [stdout] | [INFO] [stdout] 228 | .list_symbols(&file_name) [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 229 | | .iter() [INFO] [stdout] 230 | | .cloned() [INFO] [stdout] 231 | | .collect(); [INFO] [stdout] | |______________________^ help: try: `.to_vec()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stdout] = note: `#[warn(clippy::iter_cloned_collect)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/api.rs:287:17 [INFO] [stdout] | [INFO] [stdout] 287 | return (file, related_files); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 287 - return (file, related_files); [INFO] [stdout] 287 + (file, related_files) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/api.rs:296:21 [INFO] [stdout] | [INFO] [stdout] 296 | id: id.clone(), [INFO] [stdout] | ^^^^^^^^^^ help: try dereferencing it: `*id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/api.rs:326:33 [INFO] [stdout] | [INFO] [stdout] 326 | ... return cur_id - 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 326 - return cur_id - 1; [INFO] [stdout] 326 + cur_id - 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/api.rs:328:33 [INFO] [stdout] | [INFO] [stdout] 328 | ... return symbol_map.get(&symbol_id).unwrap().id; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 328 - return symbol_map.get(&symbol_id).unwrap().id; [INFO] [stdout] 328 + symbol_map.get(&symbol_id).unwrap().id [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/api.rs:315:29 [INFO] [stdout] | [INFO] [stdout] 315 | / ... if !symbol_map.contains_key(&symbol_id) { [INFO] [stdout] 316 | | ... symbol_map.insert( [INFO] [stdout] 317 | | ... symbol_id, [INFO] [stdout] 318 | | ... SymbolNode { [INFO] [stdout] ... | [INFO] [stdout] 328 | | ... return symbol_map.get(&symbol_id).unwrap().id; [INFO] [stdout] 329 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `RangeWrapper` which implements the `Copy` trait [INFO] [stdout] --> src/api.rs:322:48 [INFO] [stdout] | [INFO] [stdout] 322 | ... range: s.symbol.range.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `s.symbol.range` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/extractor.rs:39:25 [INFO] [stdout] | [INFO] [stdout] 39 | return each.name != "_"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 39 - return each.name != "_"; [INFO] [stdout] 39 + each.name != "_" [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/extractor.rs:70:27 [INFO] [stdout] | [INFO] [stdout] 70 | fn _extract(&self, f: &String, s: &String, language: &Language) -> Vec { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 70 ~ fn _extract(&self, f: &str, s: &String, language: &Language) -> Vec { [INFO] [stdout] 71 | let mut parser = Parser::new(); [INFO] [stdout] ... [INFO] [stdout] 91 | let string = str_slice.to_string(); [INFO] [stdout] 92 ~ let def_node = Symbol::new_def(f.to_owned(), string, range); [INFO] [stdout] 93 | taken.insert(def_node.id(), ()); [INFO] [stdout] ... [INFO] [stdout] 109 | let string = str_slice.to_string(); [INFO] [stdout] 110 ~ let ref_node = Symbol::new_ref(f.to_owned(), string, range); [INFO] [stdout] 111 | if taken.contains_key(&ref_node.id()) { [INFO] [stdout] ... [INFO] [stdout] 129 | let ref_node = Symbol::new_namespace( [INFO] [stdout] 130 ~ f.to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/extractor.rs:77:29 [INFO] [stdout] | [INFO] [stdout] 77 | let rule = get_rule(&self); [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/graph.rs:56:36 [INFO] [stdout] | [INFO] [stdout] 56 | let file_extension = match file_name.split('.').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 56 - let file_extension = match file_name.split('.').last() { [INFO] [stdout] 56 + let file_extension = match file_name.split('.').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/graph.rs:107:36 [INFO] [stdout] | [INFO] [stdout] 107 | file_context.symbols = file_context [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 108 | | .symbols [INFO] [stdout] 109 | | .iter() [INFO] [stdout] 110 | | .filter_map(|symbol| { [INFO] [stdout] ... | [INFO] [stdout] 129 | | }) [INFO] [stdout] 130 | | .map(|f| f.clone()) [INFO] [stdout] | |___________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 107 ~ file_context.symbols = file_context [INFO] [stdout] 108 + .symbols [INFO] [stdout] 109 + .iter() [INFO] [stdout] 110 + .filter_map(|symbol| { [INFO] [stdout] 111 + if symbol.kind == SymbolKind::NAMESPACE { [INFO] [stdout] 112 + return None; [INFO] [stdout] 113 + } [INFO] [stdout] 114 + [INFO] [stdout] 115 + let line = symbol.range.start_point.row; [INFO] [stdout] 116 + let depth = namespace_manager.get_line_depth(line); [INFO] [stdout] 117 + [INFO] [stdout] 118 + match symbol.kind { [INFO] [stdout] 119 + SymbolKind::DEF => { [INFO] [stdout] 120 + // nested def [INFO] [stdout] 121 + if depth >= rule.namespace_filter_level { [INFO] [stdout] 122 + return None; [INFO] [stdout] 123 + } [INFO] [stdout] 124 + [INFO] [stdout] 125 + return Some(symbol); [INFO] [stdout] 126 + } [INFO] [stdout] 127 + _ => Some(symbol), [INFO] [stdout] 128 + } [INFO] [stdout] 129 + }).cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.filter_map(..)` can be written more simply using `.filter(..)` [INFO] [stdout] --> src/graph.rs:110:18 [INFO] [stdout] | [INFO] [stdout] 110 | .filter_map(|symbol| { [INFO] [stdout] | __________________^ [INFO] [stdout] 111 | | if symbol.kind == SymbolKind::NAMESPACE { [INFO] [stdout] 112 | | return None; [INFO] [stdout] ... | [INFO] [stdout] 129 | | }) [INFO] [stdout] | |__________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map [INFO] [stdout] = note: `#[warn(clippy::unnecessary_filter_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:125:29 [INFO] [stdout] | [INFO] [stdout] 125 | ... return Some(symbol); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 125 - return Some(symbol); [INFO] [stdout] 125 + Some(symbol) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:193:17 [INFO] [stdout] | [INFO] [stdout] 193 | return Graph::extract_file_context(file_path, file_content, symbol_limit); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 193 - return Graph::extract_file_context(file_path, file_content, symbol_limit); [INFO] [stdout] 193 + Graph::extract_file_context(file_path, file_content, symbol_limit) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/graph.rs:205:10 [INFO] [stdout] | [INFO] [stdout] 205 | ) -> ( [INFO] [stdout] | __________^ [INFO] [stdout] 206 | | HashMap>, [INFO] [stdout] 207 | | HashMap>, [INFO] [stdout] 208 | | HashMap>, [INFO] [stdout] 209 | | ) { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/graph.rs:221:30 [INFO] [stdout] | [INFO] [stdout] 221 | ... .or_insert_with(Vec::new) [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: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/graph.rs:227:30 [INFO] [stdout] | [INFO] [stdout] 227 | ... .or_insert_with(Vec::new) [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] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/graph.rs:261:36 [INFO] [stdout] | [INFO] [stdout] 261 | let filtered_symbols = file_context [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 262 | | .symbols [INFO] [stdout] 263 | | .iter() [INFO] [stdout] 264 | | .filter(|symbol| { [INFO] [stdout] ... | [INFO] [stdout] 280 | | }) [INFO] [stdout] 281 | | .map(|symbol| symbol.clone()) [INFO] [stdout] | |_____________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 261 ~ let filtered_symbols = file_context [INFO] [stdout] 262 + .symbols [INFO] [stdout] 263 + .iter() [INFO] [stdout] 264 + .filter(|symbol| { [INFO] [stdout] 265 + // ref but no def [INFO] [stdout] 266 + if !global_def_symbol_table.contains_key(&symbol.name) { [INFO] [stdout] 267 + return false; [INFO] [stdout] 268 + } [INFO] [stdout] 269 + return true; [INFO] [stdout] 270 + }) [INFO] [stdout] 271 + .filter(|symbol| { [INFO] [stdout] 272 + // def but no ref [INFO] [stdout] 273 + if !global_ref_symbol_table.contains_key(&symbol.name) { [INFO] [stdout] 274 + return false; [INFO] [stdout] 275 + } [INFO] [stdout] 276 + return true; [INFO] [stdout] 277 + }) [INFO] [stdout] 278 + .filter(|symbol| { [INFO] [stdout] 279 + return symbol.name.len() > symbol_len_limit; [INFO] [stdout] 280 + }).cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:269:21 [INFO] [stdout] | [INFO] [stdout] 269 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 269 - return true; [INFO] [stdout] 269 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:276:21 [INFO] [stdout] | [INFO] [stdout] 276 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 276 - return true; [INFO] [stdout] 276 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:279:21 [INFO] [stdout] | [INFO] [stdout] 279 | return symbol.name.len() > symbol_len_limit; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 279 - return symbol.name.len() > symbol_len_limit; [INFO] [stdout] 279 + symbol.name.len() > symbol_len_limit [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:358:13 [INFO] [stdout] | [INFO] [stdout] 358 | / return if let Some(ref_commits) = file_commit_cache.get(&f) { [INFO] [stdout] 359 | | ref_commits.clone() [INFO] [stdout] 360 | | } else { [INFO] [stdout] 361 | | let file_commits: HashSet = relation_graph [INFO] [stdout] ... | [INFO] [stdout] 386 | | file_commits [INFO] [stdout] 387 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 358 ~ if let Some(ref_commits) = file_commit_cache.get(&f) { [INFO] [stdout] 359 + ref_commits.clone() [INFO] [stdout] 360 + } else { [INFO] [stdout] 361 + let file_commits: HashSet = relation_graph [INFO] [stdout] 362 + .file_related_commits(&f) [INFO] [stdout] 363 + .unwrap() [INFO] [stdout] 364 + .into_iter() [INFO] [stdout] 365 + .filter(|each| { [INFO] [stdout] 366 + // reduce the impact of large commits [INFO] [stdout] 367 + return if let Some(ref_files) = commit_file_cache.get(each) { [INFO] [stdout] 368 + ref_files.len() [INFO] [stdout] 369 + < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 370 + } else { [INFO] [stdout] 371 + let ref_files: HashSet = relation_graph [INFO] [stdout] 372 + .commit_related_files(each) [INFO] [stdout] 373 + .unwrap() [INFO] [stdout] 374 + .into_iter() [INFO] [stdout] 375 + .collect(); [INFO] [stdout] 376 + [INFO] [stdout] 377 + commit_file_cache.insert(each.clone(), ref_files.clone()); [INFO] [stdout] 378 + ref_files.len() [INFO] [stdout] 379 + < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 380 + }; [INFO] [stdout] 381 + }) [INFO] [stdout] 382 + .into_iter() [INFO] [stdout] 383 + .collect(); [INFO] [stdout] 384 + [INFO] [stdout] 385 + file_commit_cache.insert(f.clone(), file_commits.clone()); [INFO] [stdout] 386 + file_commits [INFO] [stdout] 387 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::iter::Filter, {closure@src/graph.rs:365:29: 365:35}>` [INFO] [stdout] --> src/graph.rs:361:53 [INFO] [stdout] | [INFO] [stdout] 361 | let file_commits: HashSet = relation_graph [INFO] [stdout] | _____________________________________________________^ [INFO] [stdout] 362 | | .file_related_commits(&f) [INFO] [stdout] 363 | | .unwrap() [INFO] [stdout] 364 | | .into_iter() [INFO] [stdout] ... | [INFO] [stdout] 381 | | }) [INFO] [stdout] 382 | | .into_iter() [INFO] [stdout] | |________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 361 ~ let file_commits: HashSet = relation_graph [INFO] [stdout] 362 + .file_related_commits(&f) [INFO] [stdout] 363 + .unwrap() [INFO] [stdout] 364 + .into_iter() [INFO] [stdout] 365 + .filter(|each| { [INFO] [stdout] 366 + // reduce the impact of large commits [INFO] [stdout] 367 + return if let Some(ref_files) = commit_file_cache.get(each) { [INFO] [stdout] 368 + ref_files.len() [INFO] [stdout] 369 + < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 370 + } else { [INFO] [stdout] 371 + let ref_files: HashSet = relation_graph [INFO] [stdout] 372 + .commit_related_files(each) [INFO] [stdout] 373 + .unwrap() [INFO] [stdout] 374 + .into_iter() [INFO] [stdout] 375 + .collect(); [INFO] [stdout] 376 + [INFO] [stdout] 377 + commit_file_cache.insert(each.clone(), ref_files.clone()); [INFO] [stdout] 378 + ref_files.len() [INFO] [stdout] 379 + < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 380 + }; [INFO] [stdout] 381 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:367:25 [INFO] [stdout] | [INFO] [stdout] 367 | / return if let Some(ref_files) = commit_file_cache.get(each) { [INFO] [stdout] 368 | | ref_files.len() [INFO] [stdout] 369 | | < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 370 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 379 | | < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 380 | | }; [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 367 ~ if let Some(ref_files) = commit_file_cache.get(each) { [INFO] [stdout] 368 + ref_files.len() [INFO] [stdout] 369 + < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 370 + } else { [INFO] [stdout] 371 + let ref_files: HashSet = relation_graph [INFO] [stdout] 372 + .commit_related_files(each) [INFO] [stdout] 373 + .unwrap() [INFO] [stdout] 374 + .into_iter() [INFO] [stdout] 375 + .collect(); [INFO] [stdout] 376 + [INFO] [stdout] 377 + commit_file_cache.insert(each.clone(), ref_files.clone()); [INFO] [stdout] 378 + ref_files.len() [INFO] [stdout] 379 + < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 380 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:392:13 [INFO] [stdout] | [INFO] [stdout] 392 | / return if let Some(count) = symbol_mapping.get(f) { [INFO] [stdout] 393 | | *count [INFO] [stdout] 394 | | } else { [INFO] [stdout] 395 | | let count = g.list_references(&f).len(); [INFO] [stdout] 396 | | symbol_mapping.insert(f.clone(), count); [INFO] [stdout] 397 | | count [INFO] [stdout] 398 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 392 ~ if let Some(count) = symbol_mapping.get(f) { [INFO] [stdout] 393 + *count [INFO] [stdout] 394 + } else { [INFO] [stdout] 395 + let count = g.list_references(&f).len(); [INFO] [stdout] 396 + symbol_mapping.insert(f.clone(), count); [INFO] [stdout] 397 + count [INFO] [stdout] 398 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/graph.rs:395:47 [INFO] [stdout] | [INFO] [stdout] 395 | let count = g.list_references(&f).len(); [INFO] [stdout] | ^^ help: change this to: `f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/graph.rs:447:29 [INFO] [stdout] | [INFO] [stdout] 447 | ... ratio = ratio / ref_count_in_file as f64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ratio /= ref_count_in_file as f64` [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: use of `or_insert` to construct default value [INFO] [stdout] --> src/graph.rs:455:30 [INFO] [stdout] | [INFO] [stdout] 455 | ... .or_insert(Vec::new()) [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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/graph.rs:463:60 [INFO] [stdout] | [INFO] [stdout] 463 | symbol_graph.link_symbol_to_symbol(&symbol, &def); [INFO] [stdout] | ^^^^^^^ help: change this to: `symbol` [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/graph.rs:463:69 [INFO] [stdout] | [INFO] [stdout] 463 | symbol_graph.link_symbol_to_symbol(&symbol, &def); [INFO] [stdout] | ^^^^ help: change this to: `def` [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 `unwrap` on `issue_regex` after checking its variant with `is_some` [INFO] [stdout] --> src/graph.rs:549:28 [INFO] [stdout] | [INFO] [stdout] 548 | if issue_regex.is_some() { [INFO] [stdout] | ------------------------ help: try: `if let Some() = issue_regex` [INFO] [stdout] 549 | conf.issue_regex = issue_regex.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/graph.rs:537:19 [INFO] [stdout] | [INFO] [stdout] 537 | project_path: &String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 537 - project_path: &String, [INFO] [stdout] 537 + project_path: &str, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/graph.rs:554:5 [INFO] [stdout] | [INFO] [stdout] 553 | let graph = collector.walk(conf); [INFO] [stdout] | --------------------------------- unnecessary `let` binding [INFO] [stdout] 554 | graph [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 553 ~ [INFO] [stdout] 554 ~ collector.walk(conf) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `default` can be confused for the standard trait method `std::default::Default::default` [INFO] [stdout] --> src/graph.rs:601:5 [INFO] [stdout] | [INFO] [stdout] 601 | / pub fn default() -> GraphConfig { [INFO] [stdout] 602 | | GraphConfig { [INFO] [stdout] 603 | | project_path: String::from("."), [INFO] [stdout] 604 | | def_limit: 16, [INFO] [stdout] ... | [INFO] [stdout] 614 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::default::Default` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/server.rs:114:13 [INFO] [stdout] | [INFO] [stdout] 114 | return each.range.start_byte == params.start_byte && each.kind != SymbolKind::NAMESPACE; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 114 - return each.range.start_byte == params.start_byte && each.kind != SymbolKind::NAMESPACE; [INFO] [stdout] 114 + each.range.start_byte == params.start_byte && each.kind != SymbolKind::NAMESPACE [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/server.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 117 | if targets.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `targets.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: unneeded `return` statement [INFO] [stdout] --> src/server.rs:131:13 [INFO] [stdout] | [INFO] [stdout] 131 | return (key.id(), value); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 131 - return (key.id(), value); [INFO] [stdout] 131 + (key.id(), value) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SymbolGraph` [INFO] [stdout] --> src/symbol.rs:151:5 [INFO] [stdout] | [INFO] [stdout] 151 | / pub fn new() -> SymbolGraph { [INFO] [stdout] 152 | | SymbolGraph { [INFO] [stdout] 153 | | file_mapping: HashMap::new(), [INFO] [stdout] 154 | | symbol_mapping: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 157 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 150 + impl Default for SymbolGraph { [INFO] [stdout] 151 + fn default() -> Self { [INFO] [stdout] 152 + Self::new() [INFO] [stdout] 153 + } [INFO] [stdout] 154 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/symbol.rs:159:45 [INFO] [stdout] | [INFO] [stdout] 159 | pub(crate) fn add_file(&mut self, name: &String) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 159 ~ pub(crate) fn add_file(&mut self, name: &str) { [INFO] [stdout] 160 ~ let id = Arc::new(name.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/symbol.rs:190:20 [INFO] [stdout] | [INFO] [stdout] 190 | if let Some(..) = self.g.find_edge(*file_index, *symbol_index) { [INFO] [stdout] | -------^^^^^^^^----------------------------------------------- help: try: `if self.g.find_edge(*file_index, *symbol_index).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/symbol.rs:202:20 [INFO] [stdout] | [INFO] [stdout] 202 | if let Some(..) = self.g.find_edge(*a_index, *b_index) { [INFO] [stdout] | -------^^^^^^^^--------------------------------------- help: try: `if self.g.find_edge(*a_index, *b_index).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/symbol.rs:229:17 [INFO] [stdout] | [INFO] [stdout] 229 | / return if let Some(symbol) = self.g[target_idx].get_symbol() { [INFO] [stdout] 230 | | Some((symbol.clone(), weight)) [INFO] [stdout] 231 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 234 | | }; [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 229 ~ if let Some(symbol) = self.g[target_idx].get_symbol() { [INFO] [stdout] 230 + Some((symbol.clone(), weight)) [INFO] [stdout] 231 + } else { [INFO] [stdout] 232 + // not a symbol node [INFO] [stdout] 233 + None [INFO] [stdout] 234 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/symbol.rs:229:24 [INFO] [stdout] | [INFO] [stdout] 229 | return if let Some(symbol) = self.g[target_idx].get_symbol() { [INFO] [stdout] | ________________________^ [INFO] [stdout] 230 | | Some((symbol.clone(), weight)) [INFO] [stdout] 231 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 234 | | }; [INFO] [stdout] | |_________________^ help: try: `self.g[target_idx].get_symbol().map(|symbol| (symbol.clone(), weight))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/symbol.rs:245:9 [INFO] [stdout] | [INFO] [stdout] 245 | / self.neighbor_symbols(*file_index) [INFO] [stdout] 246 | | .keys() [INFO] [stdout] 247 | | .map(|each| each.clone()) [INFO] [stdout] | |_____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 245 ~ self.neighbor_symbols(*file_index) [INFO] [stdout] 246 + .keys().cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/api.rs:196:17 [INFO] [stdout] | [INFO] [stdout] 196 | / return RelatedFileContext { [INFO] [stdout] 197 | | name: k.clone(), [INFO] [stdout] 198 | | score: *v, [INFO] [stdout] 199 | | defs: self.symbol_graph.list_definitions(k).len(), [INFO] [stdout] 200 | | refs: self.symbol_graph.list_references(k).len(), [INFO] [stdout] 201 | | related_symbols, [INFO] [stdout] 202 | | }; [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 196 ~ RelatedFileContext { [INFO] [stdout] 197 + name: k.clone(), [INFO] [stdout] 198 + score: *v, [INFO] [stdout] 199 + defs: self.symbol_graph.list_definitions(k).len(), [INFO] [stdout] 200 + refs: self.symbol_graph.list_references(k).len(), [INFO] [stdout] 201 + related_symbols, [INFO] [stdout] 202 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `iter().cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stdout] --> src/api.rs:228:38 [INFO] [stdout] | [INFO] [stdout] 228 | .list_symbols(&file_name) [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 229 | | .iter() [INFO] [stdout] 230 | | .cloned() [INFO] [stdout] 231 | | .collect(); [INFO] [stdout] | |______________________^ help: try: `.to_vec()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stdout] = note: `#[warn(clippy::iter_cloned_collect)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/api.rs:287:17 [INFO] [stdout] | [INFO] [stdout] 287 | return (file, related_files); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 287 - return (file, related_files); [INFO] [stdout] 287 + (file, related_files) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/api.rs:296:21 [INFO] [stdout] | [INFO] [stdout] 296 | id: id.clone(), [INFO] [stdout] | ^^^^^^^^^^ help: try dereferencing it: `*id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/api.rs:326:33 [INFO] [stdout] | [INFO] [stdout] 326 | ... return cur_id - 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 326 - return cur_id - 1; [INFO] [stdout] 326 + cur_id - 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/api.rs:328:33 [INFO] [stdout] | [INFO] [stdout] 328 | ... return symbol_map.get(&symbol_id).unwrap().id; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 328 - return symbol_map.get(&symbol_id).unwrap().id; [INFO] [stdout] 328 + symbol_map.get(&symbol_id).unwrap().id [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/api.rs:315:29 [INFO] [stdout] | [INFO] [stdout] 315 | / ... if !symbol_map.contains_key(&symbol_id) { [INFO] [stdout] 316 | | ... symbol_map.insert( [INFO] [stdout] 317 | | ... symbol_id, [INFO] [stdout] 318 | | ... SymbolNode { [INFO] [stdout] ... | [INFO] [stdout] 328 | | ... return symbol_map.get(&symbol_id).unwrap().id; [INFO] [stdout] 329 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `RangeWrapper` which implements the `Copy` trait [INFO] [stdout] --> src/api.rs:322:48 [INFO] [stdout] | [INFO] [stdout] 322 | ... range: s.symbol.range.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `s.symbol.range` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/extractor.rs:39:25 [INFO] [stdout] | [INFO] [stdout] 39 | return each.name != "_"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 39 - return each.name != "_"; [INFO] [stdout] 39 + each.name != "_" [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/extractor.rs:70:27 [INFO] [stdout] | [INFO] [stdout] 70 | fn _extract(&self, f: &String, s: &String, language: &Language) -> Vec { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 70 ~ fn _extract(&self, f: &str, s: &String, language: &Language) -> Vec { [INFO] [stdout] 71 | let mut parser = Parser::new(); [INFO] [stdout] ... [INFO] [stdout] 91 | let string = str_slice.to_string(); [INFO] [stdout] 92 ~ let def_node = Symbol::new_def(f.to_owned(), string, range); [INFO] [stdout] 93 | taken.insert(def_node.id(), ()); [INFO] [stdout] ... [INFO] [stdout] 109 | let string = str_slice.to_string(); [INFO] [stdout] 110 ~ let ref_node = Symbol::new_ref(f.to_owned(), string, range); [INFO] [stdout] 111 | if taken.contains_key(&ref_node.id()) { [INFO] [stdout] ... [INFO] [stdout] 129 | let ref_node = Symbol::new_namespace( [INFO] [stdout] 130 ~ f.to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/extractor.rs:77:29 [INFO] [stdout] | [INFO] [stdout] 77 | let rule = get_rule(&self); [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/graph.rs:56:36 [INFO] [stdout] | [INFO] [stdout] 56 | let file_extension = match file_name.split('.').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 56 - let file_extension = match file_name.split('.').last() { [INFO] [stdout] 56 + let file_extension = match file_name.split('.').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/graph.rs:107:36 [INFO] [stdout] | [INFO] [stdout] 107 | file_context.symbols = file_context [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 108 | | .symbols [INFO] [stdout] 109 | | .iter() [INFO] [stdout] 110 | | .filter_map(|symbol| { [INFO] [stdout] ... | [INFO] [stdout] 129 | | }) [INFO] [stdout] 130 | | .map(|f| f.clone()) [INFO] [stdout] | |___________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 107 ~ file_context.symbols = file_context [INFO] [stdout] 108 + .symbols [INFO] [stdout] 109 + .iter() [INFO] [stdout] 110 + .filter_map(|symbol| { [INFO] [stdout] 111 + if symbol.kind == SymbolKind::NAMESPACE { [INFO] [stdout] 112 + return None; [INFO] [stdout] 113 + } [INFO] [stdout] 114 + [INFO] [stdout] 115 + let line = symbol.range.start_point.row; [INFO] [stdout] 116 + let depth = namespace_manager.get_line_depth(line); [INFO] [stdout] 117 + [INFO] [stdout] 118 + match symbol.kind { [INFO] [stdout] 119 + SymbolKind::DEF => { [INFO] [stdout] 120 + // nested def [INFO] [stdout] 121 + if depth >= rule.namespace_filter_level { [INFO] [stdout] 122 + return None; [INFO] [stdout] 123 + } [INFO] [stdout] 124 + [INFO] [stdout] 125 + return Some(symbol); [INFO] [stdout] 126 + } [INFO] [stdout] 127 + _ => Some(symbol), [INFO] [stdout] 128 + } [INFO] [stdout] 129 + }).cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.filter_map(..)` can be written more simply using `.filter(..)` [INFO] [stdout] --> src/graph.rs:110:18 [INFO] [stdout] | [INFO] [stdout] 110 | .filter_map(|symbol| { [INFO] [stdout] | __________________^ [INFO] [stdout] 111 | | if symbol.kind == SymbolKind::NAMESPACE { [INFO] [stdout] 112 | | return None; [INFO] [stdout] ... | [INFO] [stdout] 129 | | }) [INFO] [stdout] | |__________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map [INFO] [stdout] = note: `#[warn(clippy::unnecessary_filter_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:125:29 [INFO] [stdout] | [INFO] [stdout] 125 | ... return Some(symbol); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 125 - return Some(symbol); [INFO] [stdout] 125 + Some(symbol) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:193:17 [INFO] [stdout] | [INFO] [stdout] 193 | return Graph::extract_file_context(file_path, file_content, symbol_limit); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 193 - return Graph::extract_file_context(file_path, file_content, symbol_limit); [INFO] [stdout] 193 + Graph::extract_file_context(file_path, file_content, symbol_limit) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/graph.rs:205:10 [INFO] [stdout] | [INFO] [stdout] 205 | ) -> ( [INFO] [stdout] | __________^ [INFO] [stdout] 206 | | HashMap>, [INFO] [stdout] 207 | | HashMap>, [INFO] [stdout] 208 | | HashMap>, [INFO] [stdout] 209 | | ) { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/graph.rs:221:30 [INFO] [stdout] | [INFO] [stdout] 221 | ... .or_insert_with(Vec::new) [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: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/graph.rs:227:30 [INFO] [stdout] | [INFO] [stdout] 227 | ... .or_insert_with(Vec::new) [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] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/graph.rs:261:36 [INFO] [stdout] | [INFO] [stdout] 261 | let filtered_symbols = file_context [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 262 | | .symbols [INFO] [stdout] 263 | | .iter() [INFO] [stdout] 264 | | .filter(|symbol| { [INFO] [stdout] ... | [INFO] [stdout] 280 | | }) [INFO] [stdout] 281 | | .map(|symbol| symbol.clone()) [INFO] [stdout] | |_____________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 261 ~ let filtered_symbols = file_context [INFO] [stdout] 262 + .symbols [INFO] [stdout] 263 + .iter() [INFO] [stdout] 264 + .filter(|symbol| { [INFO] [stdout] 265 + // ref but no def [INFO] [stdout] 266 + if !global_def_symbol_table.contains_key(&symbol.name) { [INFO] [stdout] 267 + return false; [INFO] [stdout] 268 + } [INFO] [stdout] 269 + return true; [INFO] [stdout] 270 + }) [INFO] [stdout] 271 + .filter(|symbol| { [INFO] [stdout] 272 + // def but no ref [INFO] [stdout] 273 + if !global_ref_symbol_table.contains_key(&symbol.name) { [INFO] [stdout] 274 + return false; [INFO] [stdout] 275 + } [INFO] [stdout] 276 + return true; [INFO] [stdout] 277 + }) [INFO] [stdout] 278 + .filter(|symbol| { [INFO] [stdout] 279 + return symbol.name.len() > symbol_len_limit; [INFO] [stdout] 280 + }).cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:269:21 [INFO] [stdout] | [INFO] [stdout] 269 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 269 - return true; [INFO] [stdout] 269 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:276:21 [INFO] [stdout] | [INFO] [stdout] 276 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 276 - return true; [INFO] [stdout] 276 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:279:21 [INFO] [stdout] | [INFO] [stdout] 279 | return symbol.name.len() > symbol_len_limit; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 279 - return symbol.name.len() > symbol_len_limit; [INFO] [stdout] 279 + symbol.name.len() > symbol_len_limit [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:358:13 [INFO] [stdout] | [INFO] [stdout] 358 | / return if let Some(ref_commits) = file_commit_cache.get(&f) { [INFO] [stdout] 359 | | ref_commits.clone() [INFO] [stdout] 360 | | } else { [INFO] [stdout] 361 | | let file_commits: HashSet = relation_graph [INFO] [stdout] ... | [INFO] [stdout] 386 | | file_commits [INFO] [stdout] 387 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 358 ~ if let Some(ref_commits) = file_commit_cache.get(&f) { [INFO] [stdout] 359 + ref_commits.clone() [INFO] [stdout] 360 + } else { [INFO] [stdout] 361 + let file_commits: HashSet = relation_graph [INFO] [stdout] 362 + .file_related_commits(&f) [INFO] [stdout] 363 + .unwrap() [INFO] [stdout] 364 + .into_iter() [INFO] [stdout] 365 + .filter(|each| { [INFO] [stdout] 366 + // reduce the impact of large commits [INFO] [stdout] 367 + return if let Some(ref_files) = commit_file_cache.get(each) { [INFO] [stdout] 368 + ref_files.len() [INFO] [stdout] 369 + < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 370 + } else { [INFO] [stdout] 371 + let ref_files: HashSet = relation_graph [INFO] [stdout] 372 + .commit_related_files(each) [INFO] [stdout] 373 + .unwrap() [INFO] [stdout] 374 + .into_iter() [INFO] [stdout] 375 + .collect(); [INFO] [stdout] 376 + [INFO] [stdout] 377 + commit_file_cache.insert(each.clone(), ref_files.clone()); [INFO] [stdout] 378 + ref_files.len() [INFO] [stdout] 379 + < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 380 + }; [INFO] [stdout] 381 + }) [INFO] [stdout] 382 + .into_iter() [INFO] [stdout] 383 + .collect(); [INFO] [stdout] 384 + [INFO] [stdout] 385 + file_commit_cache.insert(f.clone(), file_commits.clone()); [INFO] [stdout] 386 + file_commits [INFO] [stdout] 387 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::iter::Filter, {closure@src/graph.rs:365:29: 365:35}>` [INFO] [stdout] --> src/graph.rs:361:53 [INFO] [stdout] | [INFO] [stdout] 361 | let file_commits: HashSet = relation_graph [INFO] [stdout] | _____________________________________________________^ [INFO] [stdout] 362 | | .file_related_commits(&f) [INFO] [stdout] 363 | | .unwrap() [INFO] [stdout] 364 | | .into_iter() [INFO] [stdout] ... | [INFO] [stdout] 381 | | }) [INFO] [stdout] 382 | | .into_iter() [INFO] [stdout] | |________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 361 ~ let file_commits: HashSet = relation_graph [INFO] [stdout] 362 + .file_related_commits(&f) [INFO] [stdout] 363 + .unwrap() [INFO] [stdout] 364 + .into_iter() [INFO] [stdout] 365 + .filter(|each| { [INFO] [stdout] 366 + // reduce the impact of large commits [INFO] [stdout] 367 + return if let Some(ref_files) = commit_file_cache.get(each) { [INFO] [stdout] 368 + ref_files.len() [INFO] [stdout] 369 + < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 370 + } else { [INFO] [stdout] 371 + let ref_files: HashSet = relation_graph [INFO] [stdout] 372 + .commit_related_files(each) [INFO] [stdout] 373 + .unwrap() [INFO] [stdout] 374 + .into_iter() [INFO] [stdout] 375 + .collect(); [INFO] [stdout] 376 + [INFO] [stdout] 377 + commit_file_cache.insert(each.clone(), ref_files.clone()); [INFO] [stdout] 378 + ref_files.len() [INFO] [stdout] 379 + < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 380 + }; [INFO] [stdout] 381 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:367:25 [INFO] [stdout] | [INFO] [stdout] 367 | / return if let Some(ref_files) = commit_file_cache.get(each) { [INFO] [stdout] 368 | | ref_files.len() [INFO] [stdout] 369 | | < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 370 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 379 | | < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 380 | | }; [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 367 ~ if let Some(ref_files) = commit_file_cache.get(each) { [INFO] [stdout] 368 + ref_files.len() [INFO] [stdout] 369 + < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 370 + } else { [INFO] [stdout] 371 + let ref_files: HashSet = relation_graph [INFO] [stdout] 372 + .commit_related_files(each) [INFO] [stdout] 373 + .unwrap() [INFO] [stdout] 374 + .into_iter() [INFO] [stdout] 375 + .collect(); [INFO] [stdout] 376 + [INFO] [stdout] 377 + commit_file_cache.insert(each.clone(), ref_files.clone()); [INFO] [stdout] 378 + ref_files.len() [INFO] [stdout] 379 + < ((file_len as f32) * conf.commit_size_limit_ratio) as usize [INFO] [stdout] 380 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/graph.rs:392:13 [INFO] [stdout] | [INFO] [stdout] 392 | / return if let Some(count) = symbol_mapping.get(f) { [INFO] [stdout] 393 | | *count [INFO] [stdout] 394 | | } else { [INFO] [stdout] 395 | | let count = g.list_references(&f).len(); [INFO] [stdout] 396 | | symbol_mapping.insert(f.clone(), count); [INFO] [stdout] 397 | | count [INFO] [stdout] 398 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 392 ~ if let Some(count) = symbol_mapping.get(f) { [INFO] [stdout] 393 + *count [INFO] [stdout] 394 + } else { [INFO] [stdout] 395 + let count = g.list_references(&f).len(); [INFO] [stdout] 396 + symbol_mapping.insert(f.clone(), count); [INFO] [stdout] 397 + count [INFO] [stdout] 398 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/graph.rs:395:47 [INFO] [stdout] | [INFO] [stdout] 395 | let count = g.list_references(&f).len(); [INFO] [stdout] | ^^ help: change this to: `f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/graph.rs:447:29 [INFO] [stdout] | [INFO] [stdout] 447 | ... ratio = ratio / ref_count_in_file as f64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ratio /= ref_count_in_file as f64` [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: use of `or_insert` to construct default value [INFO] [stdout] --> src/graph.rs:455:30 [INFO] [stdout] | [INFO] [stdout] 455 | ... .or_insert(Vec::new()) [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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/graph.rs:463:60 [INFO] [stdout] | [INFO] [stdout] 463 | symbol_graph.link_symbol_to_symbol(&symbol, &def); [INFO] [stdout] | ^^^^^^^ help: change this to: `symbol` [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/graph.rs:463:69 [INFO] [stdout] | [INFO] [stdout] 463 | symbol_graph.link_symbol_to_symbol(&symbol, &def); [INFO] [stdout] | ^^^^ help: change this to: `def` [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 `unwrap` on `issue_regex` after checking its variant with `is_some` [INFO] [stdout] --> src/graph.rs:549:28 [INFO] [stdout] | [INFO] [stdout] 548 | if issue_regex.is_some() { [INFO] [stdout] | ------------------------ help: try: `if let Some() = issue_regex` [INFO] [stdout] 549 | conf.issue_regex = issue_regex.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/graph.rs:537:19 [INFO] [stdout] | [INFO] [stdout] 537 | project_path: &String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 537 - project_path: &String, [INFO] [stdout] 537 + project_path: &str, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/graph.rs:554:5 [INFO] [stdout] | [INFO] [stdout] 553 | let graph = collector.walk(conf); [INFO] [stdout] | --------------------------------- unnecessary `let` binding [INFO] [stdout] 554 | graph [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 553 ~ [INFO] [stdout] 554 ~ collector.walk(conf) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `default` can be confused for the standard trait method `std::default::Default::default` [INFO] [stdout] --> src/graph.rs:601:5 [INFO] [stdout] | [INFO] [stdout] 601 | / pub fn default() -> GraphConfig { [INFO] [stdout] 602 | | GraphConfig { [INFO] [stdout] 603 | | project_path: String::from("."), [INFO] [stdout] 604 | | def_limit: 16, [INFO] [stdout] ... | [INFO] [stdout] 614 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::default::Default` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/graph.rs:725:17 [INFO] [stdout] | [INFO] [stdout] 725 | assert!(issues.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!issues.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: length comparison to zero [INFO] [stdout] --> src/graph.rs:726:17 [INFO] [stdout] | [INFO] [stdout] 726 | assert!(commits.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!commits.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/server.rs:114:13 [INFO] [stdout] | [INFO] [stdout] 114 | return each.range.start_byte == params.start_byte && each.kind != SymbolKind::NAMESPACE; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 114 - return each.range.start_byte == params.start_byte && each.kind != SymbolKind::NAMESPACE; [INFO] [stdout] 114 + each.range.start_byte == params.start_byte && each.kind != SymbolKind::NAMESPACE [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/server.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 117 | if targets.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `targets.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/server.rs:131:13 [INFO] [stdout] | [INFO] [stdout] 131 | return (key.id(), value); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 131 - return (key.id(), value); [INFO] [stdout] 131 + (key.id(), value) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SymbolGraph` [INFO] [stdout] --> src/symbol.rs:151:5 [INFO] [stdout] | [INFO] [stdout] 151 | / pub fn new() -> SymbolGraph { [INFO] [stdout] 152 | | SymbolGraph { [INFO] [stdout] 153 | | file_mapping: HashMap::new(), [INFO] [stdout] 154 | | symbol_mapping: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 157 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 150 + impl Default for SymbolGraph { [INFO] [stdout] 151 + fn default() -> Self { [INFO] [stdout] 152 + Self::new() [INFO] [stdout] 153 + } [INFO] [stdout] 154 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/symbol.rs:159:45 [INFO] [stdout] | [INFO] [stdout] 159 | pub(crate) fn add_file(&mut self, name: &String) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 159 ~ pub(crate) fn add_file(&mut self, name: &str) { [INFO] [stdout] 160 ~ let id = Arc::new(name.to_owned()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/symbol.rs:190:20 [INFO] [stdout] | [INFO] [stdout] 190 | if let Some(..) = self.g.find_edge(*file_index, *symbol_index) { [INFO] [stdout] | -------^^^^^^^^----------------------------------------------- help: try: `if self.g.find_edge(*file_index, *symbol_index).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/symbol.rs:202:20 [INFO] [stdout] | [INFO] [stdout] 202 | if let Some(..) = self.g.find_edge(*a_index, *b_index) { [INFO] [stdout] | -------^^^^^^^^--------------------------------------- help: try: `if self.g.find_edge(*a_index, *b_index).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/symbol.rs:229:17 [INFO] [stdout] | [INFO] [stdout] 229 | / return if let Some(symbol) = self.g[target_idx].get_symbol() { [INFO] [stdout] 230 | | Some((symbol.clone(), weight)) [INFO] [stdout] 231 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 234 | | }; [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 229 ~ if let Some(symbol) = self.g[target_idx].get_symbol() { [INFO] [stdout] 230 + Some((symbol.clone(), weight)) [INFO] [stdout] 231 + } else { [INFO] [stdout] 232 + // not a symbol node [INFO] [stdout] 233 + None [INFO] [stdout] 234 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/symbol.rs:229:24 [INFO] [stdout] | [INFO] [stdout] 229 | return if let Some(symbol) = self.g[target_idx].get_symbol() { [INFO] [stdout] | ________________________^ [INFO] [stdout] 230 | | Some((symbol.clone(), weight)) [INFO] [stdout] 231 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 234 | | }; [INFO] [stdout] | |_________________^ help: try: `self.g[target_idx].get_symbol().map(|symbol| (symbol.clone(), weight))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/symbol.rs:245:9 [INFO] [stdout] | [INFO] [stdout] 245 | / self.neighbor_symbols(*file_index) [INFO] [stdout] 246 | | .keys() [INFO] [stdout] 247 | | .map(|each| each.clone()) [INFO] [stdout] | |_____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 245 ~ self.neighbor_symbols(*file_index) [INFO] [stdout] 246 + .keys().cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:226:8 [INFO] [stdout] | [INFO] [stdout] 226 | if !relate_cmd.json.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `relate_cmd.json.is_some()` [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/main.rs:234:8 [INFO] [stdout] | [INFO] [stdout] 234 | if !relate_cmd.common_options.depth.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `relate_cmd.common_options.depth.is_some()` [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/main.rs:253:8 [INFO] [stdout] | [INFO] [stdout] 253 | if !relate_cmd.json.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `relate_cmd.json.is_some()` [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: called `unwrap` on `relate_cmd.common_options.depth` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:235:24 [INFO] [stdout] | [INFO] [stdout] 234 | if !relate_cmd.common_options.depth.is_none() { [INFO] [stdout] | ----------------------------------------- the check is happening here [INFO] [stdout] 235 | config.depth = relate_cmd.common_options.depth.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `relate_cmd.json` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:254:19 [INFO] [stdout] | [INFO] [stdout] 253 | if !relate_cmd.json.is_none() { [INFO] [stdout] | ------------------------- the check is happening here [INFO] [stdout] 254 | fs::write(relate_cmd.json.unwrap(), json).expect(""); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `relation_cmd.common_options.def_limit` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:267:28 [INFO] [stdout] | [INFO] [stdout] 266 | if relation_cmd.common_options.def_limit.is_some() { [INFO] [stdout] | -------------------------------------------------- help: try: `if let Some() = relation_cmd.common_options.def_limit` [INFO] [stdout] 267 | config.def_limit = relation_cmd.common_options.def_limit.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `relation_cmd.common_options.def_limit` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:305:28 [INFO] [stdout] | [INFO] [stdout] 304 | if relation_cmd.common_options.def_limit.is_some() { [INFO] [stdout] | -------------------------------------------------- help: try: `if let Some() = relation_cmd.common_options.def_limit` [INFO] [stdout] 305 | config.def_limit = relation_cmd.common_options.def_limit.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:421:8 [INFO] [stdout] | [INFO] [stdout] 421 | if !interactive_cmd.common_options.depth.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `interactive_cmd.common_options.depth.is_some()` [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: called `unwrap` on `interactive_cmd.common_options.depth` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:422:24 [INFO] [stdout] | [INFO] [stdout] 421 | if !interactive_cmd.common_options.depth.is_none() { [INFO] [stdout] | ---------------------------------------------- the check is happening here [INFO] [stdout] 422 | config.depth = interactive_cmd.common_options.depth.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:461:8 [INFO] [stdout] | [INFO] [stdout] 461 | if !server_cmd.common_options.depth.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `server_cmd.common_options.depth.is_some()` [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: called `unwrap` on `server_cmd.common_options.depth` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:462:24 [INFO] [stdout] | [INFO] [stdout] 461 | if !server_cmd.common_options.depth.is_none() { [INFO] [stdout] | ----------------------------------------- the check is happening here [INFO] [stdout] 462 | config.depth = server_cmd.common_options.depth.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u16` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:468:26 [INFO] [stdout] | [INFO] [stdout] 468 | server_config.port = server_cmd.port.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `server_cmd.port` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:480:8 [INFO] [stdout] | [INFO] [stdout] 480 | if !obsidian_cmd.common_options.depth.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `obsidian_cmd.common_options.depth.is_some()` [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: called `unwrap` on `obsidian_cmd.common_options.depth` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:481:24 [INFO] [stdout] | [INFO] [stdout] 480 | if !obsidian_cmd.common_options.depth.is_none() { [INFO] [stdout] | ------------------------------------------- the check is happening here [INFO] [stdout] 481 | config.depth = obsidian_cmd.common_options.depth.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:603:8 [INFO] [stdout] | [INFO] [stdout] 603 | if !diff_cmd.common_options.depth.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `diff_cmd.common_options.depth.is_some()` [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/main.rs:613:8 [INFO] [stdout] | [INFO] [stdout] 613 | if !current_branch.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current_branch.is_some()` [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: called `unwrap` on `diff_cmd.common_options.depth` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:604:24 [INFO] [stdout] | [INFO] [stdout] 603 | if !diff_cmd.common_options.depth.is_none() { [INFO] [stdout] | --------------------------------------- the check is happening here [INFO] [stdout] 604 | config.depth = diff_cmd.common_options.depth.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `current_branch` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:614:34 [INFO] [stdout] | [INFO] [stdout] 613 | if !current_branch.is_none() { [INFO] [stdout] | ------------------------ the check is happening here [INFO] [stdout] 614 | let current_branch_str = current_branch.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:655:25 [INFO] [stdout] | [INFO] [stdout] 655 | .map(|item| return (item.name.clone(), item)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 655 - .map(|item| return (item.name.clone(), item)) [INFO] [stdout] 655 + .map(|item| (item.name.clone(), item)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:660:25 [INFO] [stdout] | [INFO] [stdout] 660 | .map(|item| return (item.name.clone(), item)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 660 - .map(|item| return (item.name.clone(), item)) [INFO] [stdout] 660 + .map(|item| (item.name.clone(), item)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/main.rs:703:28 [INFO] [stdout] | [INFO] [stdout] 703 | names.push(format!("{}", link.name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `link.name.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:226:8 [INFO] [stdout] | [INFO] [stdout] 226 | if !relate_cmd.json.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `relate_cmd.json.is_some()` [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/main.rs:234:8 [INFO] [stdout] | [INFO] [stdout] 234 | if !relate_cmd.common_options.depth.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `relate_cmd.common_options.depth.is_some()` [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/main.rs:253:8 [INFO] [stdout] | [INFO] [stdout] 253 | if !relate_cmd.json.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `relate_cmd.json.is_some()` [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: called `unwrap` on `relate_cmd.common_options.depth` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:235:24 [INFO] [stdout] | [INFO] [stdout] 234 | if !relate_cmd.common_options.depth.is_none() { [INFO] [stdout] | ----------------------------------------- the check is happening here [INFO] [stdout] 235 | config.depth = relate_cmd.common_options.depth.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `relate_cmd.json` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:254:19 [INFO] [stdout] | [INFO] [stdout] 253 | if !relate_cmd.json.is_none() { [INFO] [stdout] | ------------------------- the check is happening here [INFO] [stdout] 254 | fs::write(relate_cmd.json.unwrap(), json).expect(""); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `relation_cmd.common_options.def_limit` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:267:28 [INFO] [stdout] | [INFO] [stdout] 266 | if relation_cmd.common_options.def_limit.is_some() { [INFO] [stdout] | -------------------------------------------------- help: try: `if let Some() = relation_cmd.common_options.def_limit` [INFO] [stdout] 267 | config.def_limit = relation_cmd.common_options.def_limit.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `relation_cmd.common_options.def_limit` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:305:28 [INFO] [stdout] | [INFO] [stdout] 304 | if relation_cmd.common_options.def_limit.is_some() { [INFO] [stdout] | -------------------------------------------------- help: try: `if let Some() = relation_cmd.common_options.def_limit` [INFO] [stdout] 305 | config.def_limit = relation_cmd.common_options.def_limit.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:421:8 [INFO] [stdout] | [INFO] [stdout] 421 | if !interactive_cmd.common_options.depth.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `interactive_cmd.common_options.depth.is_some()` [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: called `unwrap` on `interactive_cmd.common_options.depth` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:422:24 [INFO] [stdout] | [INFO] [stdout] 421 | if !interactive_cmd.common_options.depth.is_none() { [INFO] [stdout] | ---------------------------------------------- the check is happening here [INFO] [stdout] 422 | config.depth = interactive_cmd.common_options.depth.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:461:8 [INFO] [stdout] | [INFO] [stdout] 461 | if !server_cmd.common_options.depth.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `server_cmd.common_options.depth.is_some()` [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: called `unwrap` on `server_cmd.common_options.depth` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:462:24 [INFO] [stdout] | [INFO] [stdout] 461 | if !server_cmd.common_options.depth.is_none() { [INFO] [stdout] | ----------------------------------------- the check is happening here [INFO] [stdout] 462 | config.depth = server_cmd.common_options.depth.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u16` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:468:26 [INFO] [stdout] | [INFO] [stdout] 468 | server_config.port = server_cmd.port.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `server_cmd.port` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:480:8 [INFO] [stdout] | [INFO] [stdout] 480 | if !obsidian_cmd.common_options.depth.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `obsidian_cmd.common_options.depth.is_some()` [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: called `unwrap` on `obsidian_cmd.common_options.depth` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:481:24 [INFO] [stdout] | [INFO] [stdout] 480 | if !obsidian_cmd.common_options.depth.is_none() { [INFO] [stdout] | ------------------------------------------- the check is happening here [INFO] [stdout] 481 | config.depth = obsidian_cmd.common_options.depth.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:603:8 [INFO] [stdout] | [INFO] [stdout] 603 | if !diff_cmd.common_options.depth.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `diff_cmd.common_options.depth.is_some()` [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/main.rs:613:8 [INFO] [stdout] | [INFO] [stdout] 613 | if !current_branch.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current_branch.is_some()` [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: called `unwrap` on `diff_cmd.common_options.depth` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:604:24 [INFO] [stdout] | [INFO] [stdout] 603 | if !diff_cmd.common_options.depth.is_none() { [INFO] [stdout] | --------------------------------------- the check is happening here [INFO] [stdout] 604 | config.depth = diff_cmd.common_options.depth.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `current_branch` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:614:34 [INFO] [stdout] | [INFO] [stdout] 613 | if !current_branch.is_none() { [INFO] [stdout] | ------------------------ the check is happening here [INFO] [stdout] 614 | let current_branch_str = current_branch.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:655:25 [INFO] [stdout] | [INFO] [stdout] 655 | .map(|item| return (item.name.clone(), item)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 655 - .map(|item| return (item.name.clone(), item)) [INFO] [stdout] 655 + .map(|item| (item.name.clone(), item)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:660:25 [INFO] [stdout] | [INFO] [stdout] 660 | .map(|item| return (item.name.clone(), item)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 660 - .map(|item| return (item.name.clone(), item)) [INFO] [stdout] 660 + .map(|item| (item.name.clone(), item)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/main.rs:703:28 [INFO] [stdout] | [INFO] [stdout] 703 | names.push(format!("{}", link.name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `link.name.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 01s [INFO] running `Command { std: "docker" "inspect" "b3a01f3b8eab27fbbc750881a2f15ae58b9e0b503f71557dc9a0072986652202", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b3a01f3b8eab27fbbc750881a2f15ae58b9e0b503f71557dc9a0072986652202", kill_on_drop: false }` [INFO] [stdout] b3a01f3b8eab27fbbc750881a2f15ae58b9e0b503f71557dc9a0072986652202