[INFO] crate reups 0.2.1 is already in cache [INFO] extracting crate reups 0.2.1 into work/ex/clippy-test-run/sources/stable/reg/reups/0.2.1 [INFO] extracting crate reups 0.2.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/reups/0.2.1 [INFO] validating manifest of reups-0.2.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of reups-0.2.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing reups-0.2.1 [INFO] finished frobbing reups-0.2.1 [INFO] frobbed toml for reups-0.2.1 written to work/ex/clippy-test-run/sources/stable/reg/reups/0.2.1/Cargo.toml [INFO] started frobbing reups-0.2.1 [INFO] finished frobbing reups-0.2.1 [INFO] frobbed toml for reups-0.2.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/reups/0.2.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting reups-0.2.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/reups/0.2.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] a0e30c3aeabe6f79cbd6fde509469527fc55e3bd6e3b1513be9922f6d171ce09 [INFO] running `"docker" "start" "-a" "a0e30c3aeabe6f79cbd6fde509469527fc55e3bd6e3b1513be9922f6d171ce09"` [INFO] [stderr] Compiling serde v1.0.85 [INFO] [stderr] Checking log v0.4.6 [INFO] [stderr] Checking reups v0.2.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/table.rs:80:19 [INFO] [stderr] | [INFO] [stderr] 80 | Ok(Table {name: name, path: path, product_dir: prod_dir, exact: exact, inexact: inexact, env_var: env_var}) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/table.rs:80:31 [INFO] [stderr] | [INFO] [stderr] 80 | Ok(Table {name: name, path: path, product_dir: prod_dir, exact: exact, inexact: inexact, env_var: env_var}) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/table.rs:80:66 [INFO] [stderr] | [INFO] [stderr] 80 | Ok(Table {name: name, path: path, product_dir: prod_dir, exact: exact, inexact: inexact, env_var: env_var}) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `exact` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/table.rs:80:80 [INFO] [stderr] | [INFO] [stderr] 80 | Ok(Table {name: name, path: path, product_dir: prod_dir, exact: exact, inexact: inexact, env_var: env_var}) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `inexact` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/table.rs:80:98 [INFO] [stderr] | [INFO] [stderr] 80 | Ok(Table {name: name, path: path, product_dir: prod_dir, exact: exact, inexact: inexact, env_var: env_var}) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `env_var` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/db/mod.rs:94:9 [INFO] [stderr] | [INFO] [stderr] 94 | write!(f, "Database at {:?}\n", self.system_db.directory)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/db/mod.rs:96:13 [INFO] [stderr] | [INFO] [stderr] 96 | write!(f, "User database at {:?}\n", user_db.directory)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/db/mod.rs:98:9 [INFO] [stderr] | [INFO] [stderr] 98 | write!(f, "Stack at {:?}\n", self.stack_root) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/mod.rs:112:34 [INFO] [stderr] | [INFO] [stderr] 112 | let system_db = DBImpl { directory: directory, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `directory` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/mod.rs:115:30 [INFO] [stderr] | [INFO] [stderr] 115 | product_to_tags: product_to_tags [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `product_to_tags` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/mod.rs:129:31 [INFO] [stderr] | [INFO] [stderr] 129 | Some(DBImpl { directory: directory, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `directory` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/mod.rs:132:31 [INFO] [stderr] | [INFO] [stderr] 132 | product_to_tags: product_to_tags }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `product_to_tags` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/table.rs:80:19 [INFO] [stderr] | [INFO] [stderr] 80 | Ok(Table {name: name, path: path, product_dir: prod_dir, exact: exact, inexact: inexact, env_var: env_var}) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/table.rs:80:31 [INFO] [stderr] | [INFO] [stderr] 80 | Ok(Table {name: name, path: path, product_dir: prod_dir, exact: exact, inexact: inexact, env_var: env_var}) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/table.rs:80:66 [INFO] [stderr] | [INFO] [stderr] 80 | Ok(Table {name: name, path: path, product_dir: prod_dir, exact: exact, inexact: inexact, env_var: env_var}) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `exact` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/table.rs:80:80 [INFO] [stderr] | [INFO] [stderr] 80 | Ok(Table {name: name, path: path, product_dir: prod_dir, exact: exact, inexact: inexact, env_var: env_var}) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `inexact` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/table.rs:80:98 [INFO] [stderr] | [INFO] [stderr] 80 | Ok(Table {name: name, path: path, product_dir: prod_dir, exact: exact, inexact: inexact, env_var: env_var}) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `env_var` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/db/mod.rs:94:9 [INFO] [stderr] | [INFO] [stderr] 94 | write!(f, "Database at {:?}\n", self.system_db.directory)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/db/mod.rs:96:13 [INFO] [stderr] | [INFO] [stderr] 96 | write!(f, "User database at {:?}\n", user_db.directory)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/db/mod.rs:98:9 [INFO] [stderr] | [INFO] [stderr] 98 | write!(f, "Stack at {:?}\n", self.stack_root) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/mod.rs:112:34 [INFO] [stderr] | [INFO] [stderr] 112 | let system_db = DBImpl { directory: directory, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `directory` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/mod.rs:115:30 [INFO] [stderr] | [INFO] [stderr] 115 | product_to_tags: product_to_tags [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `product_to_tags` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/mod.rs:129:31 [INFO] [stderr] | [INFO] [stderr] 129 | Some(DBImpl { directory: directory, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `directory` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/mod.rs:132:31 [INFO] [stderr] | [INFO] [stderr] 132 | product_to_tags: product_to_tags }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `product_to_tags` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/argparse.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / return SubCommand::with_name("setup") [INFO] [stderr] 11 | | .arg(Arg::with_name("product") [INFO] [stderr] 12 | | .help("Product to setup") [INFO] [stderr] 13 | | .index(1)) [INFO] [stderr] ... | [INFO] [stderr] 41 | | .multiple(true) [INFO] [stderr] 42 | | .help("Sets the level of verbosity, multiple occurances increases verbosity")); [INFO] [stderr] | |_______________________________________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 10 | SubCommand::with_name("setup") [INFO] [stderr] 11 | .arg(Arg::with_name("product") [INFO] [stderr] 12 | .help("Product to setup") [INFO] [stderr] 13 | .index(1)) [INFO] [stderr] 14 | .arg(Arg::with_name("just") [INFO] [stderr] 15 | .help("ignore dependncies") [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/argparse.rs:46:5 [INFO] [stderr] | [INFO] [stderr] 46 | / return SubCommand::with_name("list") [INFO] [stderr] 47 | | .arg(Arg::with_name("product") [INFO] [stderr] 48 | | .help("Name of product to list (optional)") [INFO] [stderr] 49 | | .index(1) [INFO] [stderr] ... | [INFO] [stderr] 73 | | .long("local") [INFO] [stderr] 74 | | .conflicts_with_all(&["product", "setup"])); [INFO] [stderr] | |___________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 46 | SubCommand::with_name("list") [INFO] [stderr] 47 | .arg(Arg::with_name("product") [INFO] [stderr] 48 | .help("Name of product to list (optional)") [INFO] [stderr] 49 | .index(1) [INFO] [stderr] 50 | .conflicts_with_all(&["setup", "local"])) [INFO] [stderr] 51 | .arg(Arg::with_name("setup") [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/argparse.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | / return SubCommand::with_name("completions") [INFO] [stderr] 79 | | .about("Creates auto completeion scripts for given shell") [INFO] [stderr] 80 | | .arg(Arg::with_name("shell") [INFO] [stderr] 81 | | .required(true) [INFO] [stderr] 82 | | .possible_values(&["bash", "fish", "zsh", "elvish"]) [INFO] [stderr] 83 | | .help("Shell to create completions for")); [INFO] [stderr] | |_________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 78 | SubCommand::with_name("completions") [INFO] [stderr] 79 | .about("Creates auto completeion scripts for given shell") [INFO] [stderr] 80 | .arg(Arg::with_name("shell") [INFO] [stderr] 81 | .required(true) [INFO] [stderr] 82 | .possible_values(&["bash", "fish", "zsh", "elvish"]) [INFO] [stderr] 83 | .help("Shell to create completions for")) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/argparse.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | return SubCommand::with_name("prep"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `SubCommand::with_name("prep")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/argparse.rs:103:5 [INFO] [stderr] | [INFO] [stderr] 103 | return matches; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `matches` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/db/graph.rs:49:9 [INFO] [stderr] | [INFO] [stderr] 49 | return self._index_map[&number].clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self._index_map[&number].clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/db/graph.rs:175:9 [INFO] [stderr] | [INFO] [stderr] 175 | return topo.iter(&self._graph) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `topo.iter(&self._graph)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/db/mod.rs:321:9 [INFO] [stderr] | [INFO] [stderr] 321 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/cogs.rs:41:20 [INFO] [stderr] | [INFO] [stderr] 41 | let user_home= env::home_dir(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/argparse.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / return SubCommand::with_name("setup") [INFO] [stderr] 11 | | .arg(Arg::with_name("product") [INFO] [stderr] 12 | | .help("Product to setup") [INFO] [stderr] 13 | | .index(1)) [INFO] [stderr] ... | [INFO] [stderr] 41 | | .multiple(true) [INFO] [stderr] 42 | | .help("Sets the level of verbosity, multiple occurances increases verbosity")); [INFO] [stderr] | |_______________________________________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 10 | SubCommand::with_name("setup") [INFO] [stderr] 11 | .arg(Arg::with_name("product") [INFO] [stderr] 12 | .help("Product to setup") [INFO] [stderr] 13 | .index(1)) [INFO] [stderr] 14 | .arg(Arg::with_name("just") [INFO] [stderr] 15 | .help("ignore dependncies") [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/argparse.rs:46:5 [INFO] [stderr] | [INFO] [stderr] 46 | / return SubCommand::with_name("list") [INFO] [stderr] 47 | | .arg(Arg::with_name("product") [INFO] [stderr] 48 | | .help("Name of product to list (optional)") [INFO] [stderr] 49 | | .index(1) [INFO] [stderr] ... | [INFO] [stderr] 73 | | .long("local") [INFO] [stderr] 74 | | .conflicts_with_all(&["product", "setup"])); [INFO] [stderr] | |___________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 46 | SubCommand::with_name("list") [INFO] [stderr] 47 | .arg(Arg::with_name("product") [INFO] [stderr] 48 | .help("Name of product to list (optional)") [INFO] [stderr] 49 | .index(1) [INFO] [stderr] 50 | .conflicts_with_all(&["setup", "local"])) [INFO] [stderr] 51 | .arg(Arg::with_name("setup") [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/argparse.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | / return SubCommand::with_name("completions") [INFO] [stderr] 79 | | .about("Creates auto completeion scripts for given shell") [INFO] [stderr] 80 | | .arg(Arg::with_name("shell") [INFO] [stderr] 81 | | .required(true) [INFO] [stderr] 82 | | .possible_values(&["bash", "fish", "zsh", "elvish"]) [INFO] [stderr] 83 | | .help("Shell to create completions for")); [INFO] [stderr] | |_________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 78 | SubCommand::with_name("completions") [INFO] [stderr] 79 | .about("Creates auto completeion scripts for given shell") [INFO] [stderr] 80 | .arg(Arg::with_name("shell") [INFO] [stderr] 81 | .required(true) [INFO] [stderr] 82 | .possible_values(&["bash", "fish", "zsh", "elvish"]) [INFO] [stderr] 83 | .help("Shell to create completions for")) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/argparse.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | return SubCommand::with_name("prep"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `SubCommand::with_name("prep")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/argparse.rs:103:5 [INFO] [stderr] | [INFO] [stderr] 103 | return matches; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `matches` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/db/graph.rs:49:9 [INFO] [stderr] | [INFO] [stderr] 49 | return self._index_map[&number].clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self._index_map[&number].clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/db/graph.rs:175:9 [INFO] [stderr] | [INFO] [stderr] 175 | return topo.iter(&self._graph) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `topo.iter(&self._graph)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/db/mod.rs:321:9 [INFO] [stderr] | [INFO] [stderr] 321 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/cogs.rs:41:20 [INFO] [stderr] | [INFO] [stderr] 41 | let user_home= env::home_dir(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `main_args` [INFO] [stderr] --> src/list.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | main_args: & 'a argparse::ArgMatches<'a>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/cogs.rs:21:51 [INFO] [stderr] | [INFO] [stderr] 21 | let eups_path_vec : Vec<&str> = env_var.split(":").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/dbfile.rs:36:31 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn entry(& self, key: & String) -> Option { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/db/graph.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | / match self.has_product(&name) { [INFO] [stderr] 54 | | true => { [INFO] [stderr] 55 | | let name_index = self._name_map[&name]; [INFO] [stderr] 56 | | if let (&NodeType::Optional, NodeType::Required) = [INFO] [stderr] ... | [INFO] [stderr] 65 | | } [INFO] [stderr] 66 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 53 | if self.has_product(&name) { [INFO] [stderr] 54 | let name_index = self._name_map[&name]; [INFO] [stderr] 55 | if let (&NodeType::Optional, NodeType::Required) = [INFO] [stderr] 56 | (self._graph.node_weight(name_index).unwrap(), node_type) { [INFO] [stderr] 57 | self._graph[name_index] = NodeType::Required; [INFO] [stderr] 58 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/graph.rs:69:38 [INFO] [stderr] | [INFO] [stderr] 69 | pub fn has_product(& self, name: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/graph.rs:73:43 [INFO] [stderr] | [INFO] [stderr] 73 | pub fn product_versions(& self, name: &String) -> Vec<&String> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/graph.rs:83:39 [INFO] [stderr] | [INFO] [stderr] 83 | pub fn is_optional(& self, name : &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/graph.rs:92:49 [INFO] [stderr] | [INFO] [stderr] 92 | pub fn connect_products(& mut self, source: &String, target: &String, version: String) -> Result<(), &str> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/graph.rs:92:66 [INFO] [stderr] | [INFO] [stderr] 92 | pub fn connect_products(& mut self, source: &String, target: &String, version: String) -> Result<(), &str> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/db/graph.rs:106:36 [INFO] [stderr] | [INFO] [stderr] 106 | tag: & Vec<& String>, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[& String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/db/graph.rs:143:16 [INFO] [stderr] | [INFO] [stderr] 143 | if let None = dependencies { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 144 | | return [INFO] [stderr] 145 | | } [INFO] [stderr] | |_________- help: try this: `if dependencies.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/db/graph.rs:153:24 [INFO] [stderr] | [INFO] [stderr] 153 | if let Err(_) = self.connect_products(top, &k, v.clone()) { [INFO] [stderr] | _________________- ^^^^^^ [INFO] [stderr] 154 | | eprintln!("There was an issue connecting products in the graph, topological walks my be incorrect"); [INFO] [stderr] 155 | | } [INFO] [stderr] | |_________________- help: try this: `if self.connect_products(top, &k, v.clone()).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/db/graph.rs:173:28 [INFO] [stderr] | [INFO] [stderr] 173 | pub fn iter(& self) -> petgraph::visit::WalkerIter as petgraph::visit::GraphBase>::NodeId, as petgraph::visit::Visitable>::Map>, &petgraph::Graph>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/db/mod.rs:143:17 [INFO] [stderr] | [INFO] [stderr] 143 | path::PathBuf::from(eups_path).parent().unwrap_or_else(||{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `path::PathBuf::from()`: `eups_path` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/db/mod.rs:166:24 [INFO] [stderr] | [INFO] [stderr] 166 | acc.extend(db.product_to_tags.keys().map(|x|{x.clone()})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `db.product_to_tags.keys().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:179:46 [INFO] [stderr] | [INFO] [stderr] 179 | pub fn product_versions(& self, product: & String) -> Vec{ [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/db/mod.rs:183:41 [INFO] [stderr] | [INFO] [stderr] 183 | product_versions.extend(db.product_to_version_info[product].keys().map(|x| x.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `db.product_to_version_info[product].keys().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:189:42 [INFO] [stderr] | [INFO] [stderr] 189 | pub fn product_tags(& self, product: & String) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:199:52 [INFO] [stderr] | [INFO] [stderr] 199 | pub fn get_table_from_version(& self, product: & String, version: & String) -> Option { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 199 | pub fn get_table_from_version(& self, product: &str, version: & String) -> Option { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `product.clone()` to [INFO] [stderr] | [INFO] [stderr] 221 | let mut product_clone = product.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:199:71 [INFO] [stderr] | [INFO] [stderr] 199 | pub fn get_table_from_version(& self, product: & String, version: & String) -> Option { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:246:55 [INFO] [stderr] | [INFO] [stderr] 246 | pub fn get_flavors_from_version(& self, product : & String, version : & String) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:246:75 [INFO] [stderr] | [INFO] [stderr] 246 | pub fn get_flavors_from_version(& self, product : & String, version : & String) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:258:51 [INFO] [stderr] | [INFO] [stderr] 258 | pub fn get_versions_from_tag(& self, product: & String, tag: Vec<& String>) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/db/mod.rs:264:56 [INFO] [stderr] | [INFO] [stderr] 264 | if db.tag_to_product_info.contains_key(t.clone()){ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 264 | if db.tag_to_product_info.contains_key(&(*t).clone()){ [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 264 | if db.tag_to_product_info.contains_key(&std::string::String::clone(t)){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/db/mod.rs:265:25 [INFO] [stderr] | [INFO] [stderr] 265 | let ref tag_map = db.tag_to_product_info[t.clone()]; [INFO] [stderr] | ----^^^^^^^^^^^------------------------------------- help: try: `let tag_map = &db.tag_to_product_info[t.clone()];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/db/mod.rs:265:62 [INFO] [stderr] | [INFO] [stderr] 265 | let ref tag_map = db.tag_to_product_info[t.clone()]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 265 | let ref tag_map = db.tag_to_product_info[&(*t).clone()]; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 265 | let ref tag_map = db.tag_to_product_info[&std::string::String::clone(t)]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:277:48 [INFO] [stderr] | [INFO] [stderr] 277 | pub fn get_table_from_tag(& self, product: & String, tag: Vec<& String>) -> Option{ [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/db/mod.rs:304:5 [INFO] [stderr] | [INFO] [stderr] 304 | / fn iter<'a>(& 'a self) -> DBIter<'a> { [INFO] [stderr] 305 | | DBIter { [INFO] [stderr] 306 | | inner: self, [INFO] [stderr] 307 | | pos: 0, [INFO] [stderr] 308 | | } [INFO] [stderr] 309 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:311:41 [INFO] [stderr] | [INFO] [stderr] 311 | pub fn has_product(& self, product: & String) -> bool { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/db/mod.rs:317:61 [INFO] [stderr] | [INFO] [stderr] 317 | else if db.product_to_tags.contains_key(product){ [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 318 | | return true; [INFO] [stderr] 319 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/db/mod.rs:314:64 [INFO] [stderr] | [INFO] [stderr] 314 | if db.product_to_version_info.contains_key(product){ [INFO] [stderr] | ________________________________________________________________^ [INFO] [stderr] 315 | | return true; [INFO] [stderr] 316 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/db/mod.rs:326:74 [INFO] [stderr] | [INFO] [stderr] 326 | fn build_db(eups_path: PathBuf, load_options : Option) -> (path::PathBuf, [INFO] [stderr] | __________________________________________________________________________^ [INFO] [stderr] 327 | | FnvHashMap>, [INFO] [stderr] 328 | | FnvHashMap>, [INFO] [stderr] 329 | | FnvHashMap>){ [INFO] [stderr] | |_______________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/db/mod.rs:393:68 [INFO] [stderr] | [INFO] [stderr] 393 | let mut version_hash = product_hash.entry(product).or_insert(FnvHashMap::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(FnvHashMap::default)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/db/mod.rs:432:71 [INFO] [stderr] | [INFO] [stderr] 432 | let mut tags_vec = product_to_tags.entry(product.clone()).or_insert(Vec::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: field is never used: `main_args` [INFO] [stderr] --> src/list.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | main_args: & 'a argparse::ArgMatches<'a>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/db/mod.rs:442:61 [INFO] [stderr] | [INFO] [stderr] 442 | let mut product_hash = tags_hash.entry(tag).or_insert(FnvHashMap::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(FnvHashMap::default)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/cogs.rs:21:51 [INFO] [stderr] | [INFO] [stderr] 21 | let eups_path_vec : Vec<&str> = env_var.split(":").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/setup.rs:22:34 [INFO] [stderr] | [INFO] [stderr] 22 | fn setup_table(product_version : &String, product_table: &table::Table, env_vars :& mut FnvHashMap, keep: bool, flavor : &String, db_path: PathBuf) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 22 | fn setup_table(product_version : &str, product_table: &table::Table, env_vars :& mut FnvHashMap, keep: bool, flavor : &String, db_path: PathBuf) { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `product_version.clone()` to [INFO] [stderr] | [INFO] [stderr] 43 | product_version.to_string()]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/setup.rs:22:138 [INFO] [stderr] | [INFO] [stderr] 22 | fn setup_table(product_version : &String, product_table: &table::Table, env_vars :& mut FnvHashMap, keep: bool, flavor : &String, db_path: PathBuf) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/setup.rs:164:12 [INFO] [stderr] | [INFO] [stderr] 164 | if !search_path.is_none() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `search_path.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/setup.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | / let mut search_path : Option = None; [INFO] [stderr] 156 | | if input_pathbuf.ends_with("ups") { [INFO] [stderr] 157 | | search_path = Some(input_pathbuf.clone()); [INFO] [stderr] 158 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let search_path = if input_pathbuf.ends_with("ups") { Some(input_pathbuf.clone()) } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/dbfile.rs:36:31 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn entry(& self, key: & String) -> Option { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/setup.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | / let mut mode = table::VersionType::Exact; [INFO] [stderr] 216 | | if sub_args.is_present("inexact") { [INFO] [stderr] 217 | | mode = table::VersionType::Inexact; [INFO] [stderr] 218 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let mode = if sub_args.is_present("inexact") { table::VersionType::Inexact } else { table::VersionType::Exact };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/setup.rs:228:13 [INFO] [stderr] | [INFO] [stderr] 228 | / match versions.last() { [INFO] [stderr] 229 | | Some(v) => {version = v.clone();}, [INFO] [stderr] 230 | | None => () [INFO] [stderr] 231 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(v) = versions.last() {version = v.clone();}` [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/db/graph.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | / match self.has_product(&name) { [INFO] [stderr] 54 | | true => { [INFO] [stderr] 55 | | let name_index = self._name_map[&name]; [INFO] [stderr] 56 | | if let (&NodeType::Optional, NodeType::Required) = [INFO] [stderr] ... | [INFO] [stderr] 65 | | } [INFO] [stderr] 66 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 53 | if self.has_product(&name) { [INFO] [stderr] 54 | let name_index = self._name_map[&name]; [INFO] [stderr] 55 | if let (&NodeType::Optional, NodeType::Required) = [INFO] [stderr] 56 | (self._graph.node_weight(name_index).unwrap(), node_type) { [INFO] [stderr] 57 | self._graph[name_index] = NodeType::Required; [INFO] [stderr] 58 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/graph.rs:69:38 [INFO] [stderr] | [INFO] [stderr] 69 | pub fn has_product(& self, name: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/graph.rs:73:43 [INFO] [stderr] | [INFO] [stderr] 73 | pub fn product_versions(& self, name: &String) -> Vec<&String> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/graph.rs:83:39 [INFO] [stderr] | [INFO] [stderr] 83 | pub fn is_optional(& self, name : &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/graph.rs:92:49 [INFO] [stderr] | [INFO] [stderr] 92 | pub fn connect_products(& mut self, source: &String, target: &String, version: String) -> Result<(), &str> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/graph.rs:92:66 [INFO] [stderr] | [INFO] [stderr] 92 | pub fn connect_products(& mut self, source: &String, target: &String, version: String) -> Result<(), &str> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/db/graph.rs:106:36 [INFO] [stderr] | [INFO] [stderr] 106 | tag: & Vec<& String>, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[& String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/setup.rs:254:9 [INFO] [stderr] | [INFO] [stderr] 254 | / let mut deps :Option = None; [INFO] [stderr] 255 | | if !sub_args.is_present("just") { [INFO] [stderr] 256 | | let mut dep_graph = db::graph::Graph::new(&db); [INFO] [stderr] 257 | | dep_graph.add_table(&table, [INFO] [stderr] ... | [INFO] [stderr] 263 | | deps = Some(dep_graph); [INFO] [stderr] 264 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let deps = if !sub_args.is_present("just") { ..; Some(dep_graph) } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/db/graph.rs:143:16 [INFO] [stderr] | [INFO] [stderr] 143 | if let None = dependencies { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 144 | | return [INFO] [stderr] 145 | | } [INFO] [stderr] | |_________- help: try this: `if dependencies.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/setup.rs:294:43 [INFO] [stderr] | [INFO] [stderr] 294 | let mut largest_version = versions.iter().max().unwrap().clone().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/db/graph.rs:153:24 [INFO] [stderr] | [INFO] [stderr] 153 | if let Err(_) = self.connect_products(top, &k, v.clone()) { [INFO] [stderr] | _________________- ^^^^^^ [INFO] [stderr] 154 | | eprintln!("There was an issue connecting products in the graph, topological walks my be incorrect"); [INFO] [stderr] 155 | | } [INFO] [stderr] | |_________________- help: try this: `if self.connect_products(top, &k, v.clone()).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/db/graph.rs:173:28 [INFO] [stderr] | [INFO] [stderr] 173 | pub fn iter(& self) -> petgraph::visit::WalkerIter as petgraph::visit::GraphBase>::NodeId, as petgraph::visit::Visitable>::Map>, &petgraph::Graph>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 294 | let mut largest_version = &(*versions.iter().max().unwrap()).clone().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 294 | let mut largest_version = &std::string::String::clone(versions.iter().max().unwrap()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/setup.rs:302:21 [INFO] [stderr] | [INFO] [stderr] 302 | / match versions.last() { [INFO] [stderr] 303 | | Some(v) => {largest_version = v.clone();}, [INFO] [stderr] 304 | | None => () [INFO] [stderr] 305 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Some(v) = versions.last() {largest_version = v.clone();}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/list.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | self.local_setups.keys().map(|k| k.clone()).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.local_setups.keys().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/list.rs:112:43 [INFO] [stderr] | [INFO] [stderr] 112 | fn print_product(& mut self, product: &String, select_printing : OnlyPrint){ [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/list.rs:126:54 [INFO] [stderr] | [INFO] [stderr] 126 | version_to_tags.entry(v).or_insert(vec![]).push(tag); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/list.rs:132:58 [INFO] [stderr] | [INFO] [stderr] 132 | version_to_tags.entry(local.clone()).or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/list.rs:197:52 [INFO] [stderr] | [INFO] [stderr] 197 | let value_vec: Vec<&str> = value.split(" ").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/logger.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | / match self.stderr { [INFO] [stderr] 35 | | true => { [INFO] [stderr] 36 | | eprintln!("{}", message); [INFO] [stderr] 37 | | }, [INFO] [stderr] ... | [INFO] [stderr] 40 | | } [INFO] [stderr] 41 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 34 | if self.stderr { [INFO] [stderr] 35 | eprintln!("{}", message); [INFO] [stderr] 36 | } else { [INFO] [stderr] 37 | println!("{}", message); [INFO] [stderr] 38 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/db/mod.rs:143:17 [INFO] [stderr] | [INFO] [stderr] 143 | path::PathBuf::from(eups_path).parent().unwrap_or_else(||{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `path::PathBuf::from()`: `eups_path` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/db/mod.rs:166:24 [INFO] [stderr] | [INFO] [stderr] 166 | acc.extend(db.product_to_tags.keys().map(|x|{x.clone()})); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `db.product_to_tags.keys().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:179:46 [INFO] [stderr] | [INFO] [stderr] 179 | pub fn product_versions(& self, product: & String) -> Vec{ [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/db/mod.rs:183:41 [INFO] [stderr] | [INFO] [stderr] 183 | product_versions.extend(db.product_to_version_info[product].keys().map(|x| x.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `db.product_to_version_info[product].keys().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:189:42 [INFO] [stderr] | [INFO] [stderr] 189 | pub fn product_tags(& self, product: & String) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:199:52 [INFO] [stderr] | [INFO] [stderr] 199 | pub fn get_table_from_version(& self, product: & String, version: & String) -> Option { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 199 | pub fn get_table_from_version(& self, product: &str, version: & String) -> Option { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `product.clone()` to [INFO] [stderr] | [INFO] [stderr] 221 | let mut product_clone = product.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:199:71 [INFO] [stderr] | [INFO] [stderr] 199 | pub fn get_table_from_version(& self, product: & String, version: & String) -> Option { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:246:55 [INFO] [stderr] | [INFO] [stderr] 246 | pub fn get_flavors_from_version(& self, product : & String, version : & String) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:246:75 [INFO] [stderr] | [INFO] [stderr] 246 | pub fn get_flavors_from_version(& self, product : & String, version : & String) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: Could not compile `reups`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:258:51 [INFO] [stderr] | [INFO] [stderr] 258 | pub fn get_versions_from_tag(& self, product: & String, tag: Vec<& String>) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/db/mod.rs:264:56 [INFO] [stderr] | [INFO] [stderr] 264 | if db.tag_to_product_info.contains_key(t.clone()){ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 264 | if db.tag_to_product_info.contains_key(&(*t).clone()){ [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 264 | if db.tag_to_product_info.contains_key(&std::string::String::clone(t)){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/db/mod.rs:265:25 [INFO] [stderr] | [INFO] [stderr] 265 | let ref tag_map = db.tag_to_product_info[t.clone()]; [INFO] [stderr] | ----^^^^^^^^^^^------------------------------------- help: try: `let tag_map = &db.tag_to_product_info[t.clone()];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/db/mod.rs:265:62 [INFO] [stderr] | [INFO] [stderr] 265 | let ref tag_map = db.tag_to_product_info[t.clone()]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 265 | let ref tag_map = db.tag_to_product_info[&(*t).clone()]; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 265 | let ref tag_map = db.tag_to_product_info[&std::string::String::clone(t)]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:277:48 [INFO] [stderr] | [INFO] [stderr] 277 | pub fn get_table_from_tag(& self, product: & String, tag: Vec<& String>) -> Option{ [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/db/mod.rs:304:5 [INFO] [stderr] | [INFO] [stderr] 304 | / fn iter<'a>(& 'a self) -> DBIter<'a> { [INFO] [stderr] 305 | | DBIter { [INFO] [stderr] 306 | | inner: self, [INFO] [stderr] 307 | | pos: 0, [INFO] [stderr] 308 | | } [INFO] [stderr] 309 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/mod.rs:311:41 [INFO] [stderr] | [INFO] [stderr] 311 | pub fn has_product(& self, product: & String) -> bool { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/db/mod.rs:317:61 [INFO] [stderr] | [INFO] [stderr] 317 | else if db.product_to_tags.contains_key(product){ [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 318 | | return true; [INFO] [stderr] 319 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/db/mod.rs:314:64 [INFO] [stderr] | [INFO] [stderr] 314 | if db.product_to_version_info.contains_key(product){ [INFO] [stderr] | ________________________________________________________________^ [INFO] [stderr] 315 | | return true; [INFO] [stderr] 316 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/db/mod.rs:326:74 [INFO] [stderr] | [INFO] [stderr] 326 | fn build_db(eups_path: PathBuf, load_options : Option) -> (path::PathBuf, [INFO] [stderr] | __________________________________________________________________________^ [INFO] [stderr] 327 | | FnvHashMap>, [INFO] [stderr] 328 | | FnvHashMap>, [INFO] [stderr] 329 | | FnvHashMap>){ [INFO] [stderr] | |_______________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/db/mod.rs:393:68 [INFO] [stderr] | [INFO] [stderr] 393 | let mut version_hash = product_hash.entry(product).or_insert(FnvHashMap::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(FnvHashMap::default)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/db/mod.rs:432:71 [INFO] [stderr] | [INFO] [stderr] 432 | let mut tags_vec = product_to_tags.entry(product.clone()).or_insert(Vec::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/db/mod.rs:442:61 [INFO] [stderr] | [INFO] [stderr] 442 | let mut product_hash = tags_hash.entry(tag).or_insert(FnvHashMap::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(FnvHashMap::default)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/setup.rs:22:34 [INFO] [stderr] | [INFO] [stderr] 22 | fn setup_table(product_version : &String, product_table: &table::Table, env_vars :& mut FnvHashMap, keep: bool, flavor : &String, db_path: PathBuf) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 22 | fn setup_table(product_version : &str, product_table: &table::Table, env_vars :& mut FnvHashMap, keep: bool, flavor : &String, db_path: PathBuf) { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `product_version.clone()` to [INFO] [stderr] | [INFO] [stderr] 43 | product_version.to_string()]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/setup.rs:22:138 [INFO] [stderr] | [INFO] [stderr] 22 | fn setup_table(product_version : &String, product_table: &table::Table, env_vars :& mut FnvHashMap, keep: bool, flavor : &String, db_path: PathBuf) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/setup.rs:164:12 [INFO] [stderr] | [INFO] [stderr] 164 | if !search_path.is_none() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `search_path.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/setup.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | / let mut search_path : Option = None; [INFO] [stderr] 156 | | if input_pathbuf.ends_with("ups") { [INFO] [stderr] 157 | | search_path = Some(input_pathbuf.clone()); [INFO] [stderr] 158 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let search_path = if input_pathbuf.ends_with("ups") { Some(input_pathbuf.clone()) } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/setup.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | / let mut mode = table::VersionType::Exact; [INFO] [stderr] 216 | | if sub_args.is_present("inexact") { [INFO] [stderr] 217 | | mode = table::VersionType::Inexact; [INFO] [stderr] 218 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let mode = if sub_args.is_present("inexact") { table::VersionType::Inexact } else { table::VersionType::Exact };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/setup.rs:228:13 [INFO] [stderr] | [INFO] [stderr] 228 | / match versions.last() { [INFO] [stderr] 229 | | Some(v) => {version = v.clone();}, [INFO] [stderr] 230 | | None => () [INFO] [stderr] 231 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(v) = versions.last() {version = v.clone();}` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/setup.rs:254:9 [INFO] [stderr] | [INFO] [stderr] 254 | / let mut deps :Option = None; [INFO] [stderr] 255 | | if !sub_args.is_present("just") { [INFO] [stderr] 256 | | let mut dep_graph = db::graph::Graph::new(&db); [INFO] [stderr] 257 | | dep_graph.add_table(&table, [INFO] [stderr] ... | [INFO] [stderr] 263 | | deps = Some(dep_graph); [INFO] [stderr] 264 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let deps = if !sub_args.is_present("just") { ..; Some(dep_graph) } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/setup.rs:294:43 [INFO] [stderr] | [INFO] [stderr] 294 | let mut largest_version = versions.iter().max().unwrap().clone().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 294 | let mut largest_version = &(*versions.iter().max().unwrap()).clone().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 294 | let mut largest_version = &std::string::String::clone(versions.iter().max().unwrap()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/setup.rs:302:21 [INFO] [stderr] | [INFO] [stderr] 302 | / match versions.last() { [INFO] [stderr] 303 | | Some(v) => {largest_version = v.clone();}, [INFO] [stderr] 304 | | None => () [INFO] [stderr] 305 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Some(v) = versions.last() {largest_version = v.clone();}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/list.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | self.local_setups.keys().map(|k| k.clone()).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.local_setups.keys().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/list.rs:112:43 [INFO] [stderr] | [INFO] [stderr] 112 | fn print_product(& mut self, product: &String, select_printing : OnlyPrint){ [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/list.rs:126:54 [INFO] [stderr] | [INFO] [stderr] 126 | version_to_tags.entry(v).or_insert(vec![]).push(tag); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/list.rs:132:58 [INFO] [stderr] | [INFO] [stderr] 132 | version_to_tags.entry(local.clone()).or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/list.rs:197:52 [INFO] [stderr] | [INFO] [stderr] 197 | let value_vec: Vec<&str> = value.split(" ").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/logger.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | / match self.stderr { [INFO] [stderr] 35 | | true => { [INFO] [stderr] 36 | | eprintln!("{}", message); [INFO] [stderr] 37 | | }, [INFO] [stderr] ... | [INFO] [stderr] 40 | | } [INFO] [stderr] 41 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 34 | if self.stderr { [INFO] [stderr] 35 | eprintln!("{}", message); [INFO] [stderr] 36 | } else { [INFO] [stderr] 37 | println!("{}", message); [INFO] [stderr] 38 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `reups`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "a0e30c3aeabe6f79cbd6fde509469527fc55e3bd6e3b1513be9922f6d171ce09"` [INFO] running `"docker" "rm" "-f" "a0e30c3aeabe6f79cbd6fde509469527fc55e3bd6e3b1513be9922f6d171ce09"` [INFO] [stdout] a0e30c3aeabe6f79cbd6fde509469527fc55e3bd6e3b1513be9922f6d171ce09