[INFO] updating cached repository Zynapse500/rust-rpm [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Zynapse500/rust-rpm [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Zynapse500/rust-rpm" "work/ex/clippy-test-run/sources/stable/gh/Zynapse500/rust-rpm"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Zynapse500/rust-rpm'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Zynapse500/rust-rpm" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Zynapse500/rust-rpm"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Zynapse500/rust-rpm'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 9f94077bdc16ffd9750b6b6fe833f69925b45696 [INFO] sha for GitHub repo Zynapse500/rust-rpm: 9f94077bdc16ffd9750b6b6fe833f69925b45696 [INFO] validating manifest of Zynapse500/rust-rpm 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 Zynapse500/rust-rpm 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 Zynapse500/rust-rpm [INFO] finished frobbing Zynapse500/rust-rpm [INFO] frobbed toml for Zynapse500/rust-rpm written to work/ex/clippy-test-run/sources/stable/gh/Zynapse500/rust-rpm/Cargo.toml [INFO] started frobbing Zynapse500/rust-rpm [INFO] finished frobbing Zynapse500/rust-rpm [INFO] frobbed toml for Zynapse500/rust-rpm written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Zynapse500/rust-rpm/Cargo.toml [INFO] crate Zynapse500/rust-rpm has a lockfile. skipping [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 Zynapse500/rust-rpm against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Zynapse500/rust-rpm:/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] fc3e8b8a082e970998eb29cef56fe79081c0a8429fe5c705c5ae9cfa91e5d75a [INFO] running `"docker" "start" "-a" "fc3e8b8a082e970998eb29cef56fe79081c0a8429fe5c705c5ae9cfa91e5d75a"` [INFO] [stderr] Checking serde v1.0.18 [INFO] [stderr] Checking termios v0.2.2 [INFO] [stderr] Checking clap v2.27.0 [INFO] [stderr] Compiling serde_derive v1.0.18 [INFO] [stderr] Checking getch v0.2.0 [INFO] [stderr] Checking serde_json v1.0.5 [INFO] [stderr] Checking rpm v1.0.0 (/opt/crater/workdir) [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/workspace.rs:17:42 [INFO] [stderr] | [INFO] [stderr] 17 | const WORKSPACE_PREFERENCE_FOLDER_NAME: &'static str = ".workspace"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/workspace.rs:18:41 [INFO] [stderr] | [INFO] [stderr] 18 | const WORKSPACE_PROJECT_DATABASE_NAME: &'static str = "projects.json"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/workspace.rs:19:40 [INFO] [stderr] | [INFO] [stderr] 19 | const WORKSPACE_PROJECTS_FOLDER_NAME: &'static str = "projects"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: doc comment not used by rustdoc [INFO] [stderr] --> src/workspace.rs:88:3 [INFO] [stderr] | [INFO] [stderr] 88 | /// Create the '.workspace' folder within the workspace root [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_doc_comments)] on by default [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/workspace.rs:206:30 [INFO] [stderr] | [INFO] [stderr] 206 | const WORKSPACES_FILE_NAME: &'static str = "workspaces.json"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/workspace.rs:326:5 [INFO] [stderr] | [INFO] [stderr] 326 | return Ok(exe_path.to_str().unwrap().to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(exe_path.to_str().unwrap().to_owned())` [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] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/workspace.rs:329:5 [INFO] [stderr] | [INFO] [stderr] 329 | return Err("Failed to get path to 'rpm' executable!".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err("Failed to get path to 'rpm' executable!".to_owned())` [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/main.rs:96:2 [INFO] [stderr] | [INFO] [stderr] 96 | return if "y" == answer.to_lowercase() { [INFO] [stderr] | _____^ [INFO] [stderr] 97 | | true [INFO] [stderr] 98 | | } else { [INFO] [stderr] 99 | | false [INFO] [stderr] 100 | | } [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] 96 | if "y" == answer.to_lowercase() { [INFO] [stderr] 97 | true [INFO] [stderr] 98 | } else { [INFO] [stderr] 99 | false [INFO] [stderr] 100 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/workspace.rs:17:42 [INFO] [stderr] | [INFO] [stderr] 17 | const WORKSPACE_PREFERENCE_FOLDER_NAME: &'static str = ".workspace"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/workspace.rs:18:41 [INFO] [stderr] | [INFO] [stderr] 18 | const WORKSPACE_PROJECT_DATABASE_NAME: &'static str = "projects.json"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/workspace.rs:19:40 [INFO] [stderr] | [INFO] [stderr] 19 | const WORKSPACE_PROJECTS_FOLDER_NAME: &'static str = "projects"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: doc comment not used by rustdoc [INFO] [stderr] --> src/workspace.rs:88:3 [INFO] [stderr] | [INFO] [stderr] 88 | /// Create the '.workspace' folder within the workspace root [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_doc_comments)] on by default [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/workspace.rs:206:30 [INFO] [stderr] | [INFO] [stderr] 206 | const WORKSPACES_FILE_NAME: &'static str = "workspaces.json"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/workspace.rs:326:5 [INFO] [stderr] | [INFO] [stderr] 326 | return Ok(exe_path.to_str().unwrap().to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(exe_path.to_str().unwrap().to_owned())` [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] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/workspace.rs:329:5 [INFO] [stderr] | [INFO] [stderr] 329 | return Err("Failed to get path to 'rpm' executable!".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err("Failed to get path to 'rpm' executable!".to_owned())` [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/main.rs:96:2 [INFO] [stderr] | [INFO] [stderr] 96 | return if "y" == answer.to_lowercase() { [INFO] [stderr] | _____^ [INFO] [stderr] 97 | | true [INFO] [stderr] 98 | | } else { [INFO] [stderr] 99 | | false [INFO] [stderr] 100 | | } [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] 96 | if "y" == answer.to_lowercase() { [INFO] [stderr] 97 | true [INFO] [stderr] 98 | } else { [INFO] [stderr] 99 | false [INFO] [stderr] 100 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: function is never used: `pause` [INFO] [stderr] --> src/main.rs:55:1 [INFO] [stderr] | [INFO] [stderr] 55 | fn pause() { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/workspace.rs:35:10 [INFO] [stderr] | [INFO] [stderr] 35 | if let Err(_) = fs::create_dir_all(path) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 36 | | return Err("Failed to create workspace directory!".to_owned()); [INFO] [stderr] 37 | | } [INFO] [stderr] | |_________- help: try this: `if fs::create_dir_all(path).is_err()` [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_ok()` [INFO] [stderr] --> src/workspace.rs:56:10 [INFO] [stderr] | [INFO] [stderr] 56 | if let Ok(_) = workspaces.lookup_index(&self.name) { [INFO] [stderr] | _________- ^^^^^ [INFO] [stderr] 57 | | return Err(format!("Workspace with the name '{}' already exists", self.name).to_owned()) [INFO] [stderr] 58 | | } [INFO] [stderr] | |_________- help: try this: `if workspaces.lookup_index(&self.name).is_ok()` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/workspace.rs:82:2 [INFO] [stderr] | [INFO] [stderr] 82 | pub fn name<'a>(&'a self) -> &'a str { [INFO] [stderr] | _____^ [INFO] [stderr] 83 | | &self.name [INFO] [stderr] 84 | | } [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: length comparison to zero [INFO] [stderr] --> src/project.rs:59:8 [INFO] [stderr] | [INFO] [stderr] 59 | if project.projects.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!project.projects.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/project.rs:61:7 [INFO] [stderr] | [INFO] [stderr] 61 | proj.add(p); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/project.rs:94:15 [INFO] [stderr] | [INFO] [stderr] 94 | return Err(format!("Failed to find project with matching name!")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to find project with matching name!".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/project.rs:161:8 [INFO] [stderr] | [INFO] [stderr] 161 | if project.projects.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!project.projects.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/project.rs:200:15 [INFO] [stderr] | [INFO] [stderr] 200 | return Err(format!("Failed to find project with matching name!")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to find project with matching name!".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/project.rs:255:18 [INFO] [stderr] | [INFO] [stderr] 255 | let mut text = String::from(format!("No projects with the name '{}' found!", name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("No projects with the name '{}' found!", name)` [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: length comparison to zero [INFO] [stderr] --> src/project.rs:256:6 [INFO] [stderr] | [INFO] [stderr] 256 | if matches.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!matches.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:83:2 [INFO] [stderr] | [INFO] [stderr] 83 | stdout().flush(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | return if "y" == answer.to_lowercase() { [INFO] [stderr] | ____________^ [INFO] [stderr] 97 | | true [INFO] [stderr] 98 | | } else { [INFO] [stderr] 99 | | false [INFO] [stderr] 100 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `"y" == answer.to_lowercase()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: function is never used: `pause` [INFO] [stderr] --> src/main.rs:55:1 [INFO] [stderr] | [INFO] [stderr] 55 | fn pause() { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/workspace.rs:35:10 [INFO] [stderr] | [INFO] [stderr] 35 | if let Err(_) = fs::create_dir_all(path) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 36 | | return Err("Failed to create workspace directory!".to_owned()); [INFO] [stderr] 37 | | } [INFO] [stderr] | |_________- help: try this: `if fs::create_dir_all(path).is_err()` [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_ok()` [INFO] [stderr] --> src/workspace.rs:56:10 [INFO] [stderr] | [INFO] [stderr] 56 | if let Ok(_) = workspaces.lookup_index(&self.name) { [INFO] [stderr] | _________- ^^^^^ [INFO] [stderr] 57 | | return Err(format!("Workspace with the name '{}' already exists", self.name).to_owned()) [INFO] [stderr] 58 | | } [INFO] [stderr] | |_________- help: try this: `if workspaces.lookup_index(&self.name).is_ok()` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/workspace.rs:82:2 [INFO] [stderr] | [INFO] [stderr] 82 | pub fn name<'a>(&'a self) -> &'a str { [INFO] [stderr] | _____^ [INFO] [stderr] 83 | | &self.name [INFO] [stderr] 84 | | } [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: length comparison to zero [INFO] [stderr] --> src/project.rs:59:8 [INFO] [stderr] | [INFO] [stderr] 59 | if project.projects.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!project.projects.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/project.rs:61:7 [INFO] [stderr] | [INFO] [stderr] 61 | proj.add(p); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/project.rs:94:15 [INFO] [stderr] | [INFO] [stderr] 94 | return Err(format!("Failed to find project with matching name!")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to find project with matching name!".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/project.rs:161:8 [INFO] [stderr] | [INFO] [stderr] 161 | if project.projects.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!project.projects.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/project.rs:200:15 [INFO] [stderr] | [INFO] [stderr] 200 | return Err(format!("Failed to find project with matching name!")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to find project with matching name!".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/project.rs:255:18 [INFO] [stderr] | [INFO] [stderr] 255 | let mut text = String::from(format!("No projects with the name '{}' found!", name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("No projects with the name '{}' found!", name)` [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: length comparison to zero [INFO] [stderr] --> src/project.rs:256:6 [INFO] [stderr] | [INFO] [stderr] 256 | if matches.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!matches.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:83:2 [INFO] [stderr] | [INFO] [stderr] 83 | stdout().flush(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | return if "y" == answer.to_lowercase() { [INFO] [stderr] | ____________^ [INFO] [stderr] 97 | | true [INFO] [stderr] 98 | | } else { [INFO] [stderr] 99 | | false [INFO] [stderr] 100 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `"y" == answer.to_lowercase()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 18.02s [INFO] running `"docker" "inspect" "fc3e8b8a082e970998eb29cef56fe79081c0a8429fe5c705c5ae9cfa91e5d75a"` [INFO] running `"docker" "rm" "-f" "fc3e8b8a082e970998eb29cef56fe79081c0a8429fe5c705c5ae9cfa91e5d75a"` [INFO] [stdout] fc3e8b8a082e970998eb29cef56fe79081c0a8429fe5c705c5ae9cfa91e5d75a