[INFO] crate cargo-readme 3.1.2 is already in cache [INFO] extracting crate cargo-readme 3.1.2 into work/ex/clippy-test-run/sources/stable/reg/cargo-readme/3.1.2 [INFO] extracting crate cargo-readme 3.1.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/cargo-readme/3.1.2 [INFO] validating manifest of cargo-readme-3.1.2 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 cargo-readme-3.1.2 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 cargo-readme-3.1.2 [INFO] finished frobbing cargo-readme-3.1.2 [INFO] frobbed toml for cargo-readme-3.1.2 written to work/ex/clippy-test-run/sources/stable/reg/cargo-readme/3.1.2/Cargo.toml [INFO] started frobbing cargo-readme-3.1.2 [INFO] finished frobbing cargo-readme-3.1.2 [INFO] frobbed toml for cargo-readme-3.1.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/cargo-readme/3.1.2/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 cargo-readme-3.1.2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/cargo-readme/3.1.2:/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] c80fe75cacbd3b8edd4038a5e84b2d36a189e6229efb714d99e3e01e13dde0e2 [INFO] running `"docker" "start" "-a" "c80fe75cacbd3b8edd4038a5e84b2d36a189e6229efb714d99e3e01e13dde0e2"` [INFO] [stderr] Checking cargo-readme v3.1.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/readme/process.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | indent_headings: indent_headings, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `indent_headings` [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/readme/process.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | indent_headings: indent_headings, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `indent_headings` [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: unneeded return statement [INFO] [stderr] --> src/config/manifest.rs:97:18 [INFO] [stderr] | [INFO] [stderr] 97 | _ => return None, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `None` [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/config/manifest.rs:97:18 [INFO] [stderr] | [INFO] [stderr] 97 | _ => return None, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `None` [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: redundant closure found [INFO] [stderr] --> src/config/manifest.rs:47:37 [INFO] [stderr] | [INFO] [stderr] 47 | lib: cargo_toml.lib.map(|lib| ManifestLib::from_cargo_toml(lib)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ManifestLib::from_cargo_toml` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/config/manifest.rs:53:30 [INFO] [stderr] | [INFO] [stderr] 53 | .map(|bin| ManifestLib::from_cargo_toml(bin)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ManifestLib::from_cargo_toml` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/config/manifest.rs:59:22 [INFO] [stderr] | [INFO] [stderr] 59 | .map(|b| process_badges(b)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `process_badges` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/config/project.rs:66:8 [INFO] [stderr] | [INFO] [stderr] 66 | if manifest.bin.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!manifest.bin.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: equality checks against true are unnecessary [INFO] [stderr] --> src/config/project.rs:70:25 [INFO] [stderr] | [INFO] [stderr] 70 | .filter(|b| b.doc == true) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try simplifying it as shown: `b.doc` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/readme/extract.rs:36:19 [INFO] [stderr] | [INFO] [stderr] 36 | } else if line.trim().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!line.trim().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: single-character string constant used as pattern [INFO] [stderr] --> src/readme/extract.rs:85:37 [INFO] [stderr] | [INFO] [stderr] 85 | let split_at = if line.find(" ") == Some(3) { 4 } else { 3 }; [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: single-character string constant used as pattern [INFO] [stderr] --> src/readme/process.rs:53:86 [INFO] [stderr] | [INFO] [stderr] 53 | if self.indent_headings && self.section == Section::None && line.starts_with("#") { [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/readme/process.rs:71:42 [INFO] [stderr] | [INFO] [stderr] 71 | line = self.delimiter.take().unwrap_or("```".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "```".to_owned())` [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: identical conversion [INFO] [stderr] --> src/readme/process.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | self.into_iter() [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `self` [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: single-character string constant used as pattern [INFO] [stderr] --> src/readme/template.rs:54:44 [INFO] [stderr] | [INFO] [stderr] 54 | template = template.trim_right_matches("\n").to_owned(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [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: length comparison to zero [INFO] [stderr] --> src/readme/template.rs:117:8 [INFO] [stderr] | [INFO] [stderr] 117 | if badges.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!badges.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/readme/mod.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | / match template.read_to_string(&mut template_string) { [INFO] [stderr] 43 | | Err(e) => return Err(format!("Error: {}", e)), [INFO] [stderr] 44 | | _ => {} [INFO] [stderr] 45 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = template.read_to_string(&mut template_string) { return Err(format!("Error: {}", e)) }` [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: redundant closure found [INFO] [stderr] --> src/config/manifest.rs:47:37 [INFO] [stderr] | [INFO] [stderr] 47 | lib: cargo_toml.lib.map(|lib| ManifestLib::from_cargo_toml(lib)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ManifestLib::from_cargo_toml` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/config/manifest.rs:53:30 [INFO] [stderr] | [INFO] [stderr] 53 | .map(|bin| ManifestLib::from_cargo_toml(bin)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ManifestLib::from_cargo_toml` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/config/manifest.rs:59:22 [INFO] [stderr] | [INFO] [stderr] 59 | .map(|b| process_badges(b)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `process_badges` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/config/project.rs:66:8 [INFO] [stderr] | [INFO] [stderr] 66 | if manifest.bin.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!manifest.bin.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: equality checks against true are unnecessary [INFO] [stderr] --> src/config/project.rs:70:25 [INFO] [stderr] | [INFO] [stderr] 70 | .filter(|b| b.doc == true) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try simplifying it as shown: `b.doc` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/readme/extract.rs:36:19 [INFO] [stderr] | [INFO] [stderr] 36 | } else if line.trim().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!line.trim().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: single-character string constant used as pattern [INFO] [stderr] --> src/readme/extract.rs:85:37 [INFO] [stderr] | [INFO] [stderr] 85 | let split_at = if line.find(" ") == Some(3) { 4 } else { 3 }; [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: single-character string constant used as pattern [INFO] [stderr] --> src/readme/process.rs:53:86 [INFO] [stderr] | [INFO] [stderr] 53 | if self.indent_headings && self.section == Section::None && line.starts_with("#") { [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/readme/process.rs:71:42 [INFO] [stderr] | [INFO] [stderr] 71 | line = self.delimiter.take().unwrap_or("```".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "```".to_owned())` [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: identical conversion [INFO] [stderr] --> src/readme/process.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | self.into_iter() [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `self` [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: single-character string constant used as pattern [INFO] [stderr] --> src/readme/template.rs:54:44 [INFO] [stderr] | [INFO] [stderr] 54 | template = template.trim_right_matches("\n").to_owned(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [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: length comparison to zero [INFO] [stderr] --> src/readme/template.rs:117:8 [INFO] [stderr] | [INFO] [stderr] 117 | if badges.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!badges.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/readme/mod.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | / match template.read_to_string(&mut template_string) { [INFO] [stderr] 43 | | Err(e) => return Err(format!("Error: {}", e)), [INFO] [stderr] 44 | | _ => {} [INFO] [stderr] 45 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = template.read_to_string(&mut template_string) { return Err(format!("Error: {}", e)) }` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/helper.rs:8:26 [INFO] [stderr] | [INFO] [stderr] 8 | const DEFAULT_TEMPLATE: &'static str = "README.tpl"; [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: unneeded return statement [INFO] [stderr] --> src/helper.rs:72:21 [INFO] [stderr] | [INFO] [stderr] 72 | / return Err(format!( [INFO] [stderr] 73 | | "Could not open template file '{}': {}", [INFO] [stderr] 74 | | DEFAULT_TEMPLATE, e [INFO] [stderr] 75 | | )) [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] 72 | Err(format!( [INFO] [stderr] 73 | "Could not open template file '{}': {}", [INFO] [stderr] 74 | DEFAULT_TEMPLATE, e [INFO] [stderr] 75 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/helper.rs:36:39 [INFO] [stderr] | [INFO] [stderr] 36 | File::create(&output).map(|f| Some(f)).map_err(|e| { [INFO] [stderr] | ^^^^^^^^^^^ help: remove closure as shown: `Some` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/helper.rs:57:39 [INFO] [stderr] | [INFO] [stderr] 57 | File::open(&template).map(|f| Some(f)).map_err(|e| { [INFO] [stderr] | ^^^^^^^^^^^ help: remove closure as shown: `Some` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: The function/method `write_all` doesn't need a mutable reference [INFO] [stderr] --> src/helper.rs:92:28 [INFO] [stderr] | [INFO] [stderr] 92 | dest.write_all(&mut bytes) [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [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/main.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | / match execute(m) { [INFO] [stderr] 82 | | Err(e) => { [INFO] [stderr] 83 | | io::stderr() [INFO] [stderr] 84 | | .write_fmt(format_args!("Error: {}\n", e)) [INFO] [stderr] ... | [INFO] [stderr] 88 | | _ => {} [INFO] [stderr] 89 | | } [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] help: try this [INFO] [stderr] | [INFO] [stderr] 81 | if let Err(e) = execute(m) { [INFO] [stderr] 82 | io::stderr() [INFO] [stderr] 83 | .write_fmt(format_args!("Error: {}\n", e)) [INFO] [stderr] 84 | .expect("An error occurred while trying to show an error message"); [INFO] [stderr] 85 | std::process::exit(1); [INFO] [stderr] 86 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/helper.rs:8:26 [INFO] [stderr] | [INFO] [stderr] 8 | const DEFAULT_TEMPLATE: &'static str = "README.tpl"; [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: unneeded return statement [INFO] [stderr] --> src/helper.rs:72:21 [INFO] [stderr] | [INFO] [stderr] 72 | / return Err(format!( [INFO] [stderr] 73 | | "Could not open template file '{}': {}", [INFO] [stderr] 74 | | DEFAULT_TEMPLATE, e [INFO] [stderr] 75 | | )) [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] 72 | Err(format!( [INFO] [stderr] 73 | "Could not open template file '{}': {}", [INFO] [stderr] 74 | DEFAULT_TEMPLATE, e [INFO] [stderr] 75 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/helper.rs:36:39 [INFO] [stderr] | [INFO] [stderr] 36 | File::create(&output).map(|f| Some(f)).map_err(|e| { [INFO] [stderr] | ^^^^^^^^^^^ help: remove closure as shown: `Some` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/helper.rs:57:39 [INFO] [stderr] | [INFO] [stderr] 57 | File::open(&template).map(|f| Some(f)).map_err(|e| { [INFO] [stderr] | ^^^^^^^^^^^ help: remove closure as shown: `Some` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: The function/method `write_all` doesn't need a mutable reference [INFO] [stderr] --> src/helper.rs:92:28 [INFO] [stderr] | [INFO] [stderr] 92 | dest.write_all(&mut bytes) [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [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/main.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | / match execute(m) { [INFO] [stderr] 82 | | Err(e) => { [INFO] [stderr] 83 | | io::stderr() [INFO] [stderr] 84 | | .write_fmt(format_args!("Error: {}\n", e)) [INFO] [stderr] ... | [INFO] [stderr] 88 | | _ => {} [INFO] [stderr] 89 | | } [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] help: try this [INFO] [stderr] | [INFO] [stderr] 81 | if let Err(e) = execute(m) { [INFO] [stderr] 82 | io::stderr() [INFO] [stderr] 83 | .write_fmt(format_args!("Error: {}\n", e)) [INFO] [stderr] 84 | .expect("An error occurred while trying to show an error message"); [INFO] [stderr] 85 | std::process::exit(1); [INFO] [stderr] 86 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 13.87s [INFO] running `"docker" "inspect" "c80fe75cacbd3b8edd4038a5e84b2d36a189e6229efb714d99e3e01e13dde0e2"` [INFO] running `"docker" "rm" "-f" "c80fe75cacbd3b8edd4038a5e84b2d36a189e6229efb714d99e3e01e13dde0e2"` [INFO] [stdout] c80fe75cacbd3b8edd4038a5e84b2d36a189e6229efb714d99e3e01e13dde0e2