[INFO] crate clog 0.9.1 is already in cache [INFO] extracting crate clog 0.9.1 into work/ex/clippy-test-run/sources/stable/reg/clog/0.9.1 [INFO] extracting crate clog 0.9.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/clog/0.9.1 [INFO] validating manifest of clog-0.9.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 clog-0.9.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 clog-0.9.1 [INFO] finished frobbing clog-0.9.1 [INFO] frobbed toml for clog-0.9.1 written to work/ex/clippy-test-run/sources/stable/reg/clog/0.9.1/Cargo.toml [INFO] started frobbing clog-0.9.1 [INFO] finished frobbing clog-0.9.1 [INFO] frobbed toml for clog-0.9.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/clog/0.9.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 clog-0.9.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/clog/0.9.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] c39933a2f3b7ebeb140ea2e33ac58fa9345f0398ba5c0bd36492bd45e05c02ee [INFO] running `"docker" "start" "-a" "c39933a2f3b7ebeb140ea2e33ac58fa9345f0398ba5c0bd36492bd45e05c02ee"` [INFO] [stderr] Checking clog v0.9.1 (/opt/crater/workdir) [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/fmt/md_writer.rs:90:52 [INFO] [stderr] | [INFO] [stderr] 90 | options.version, version_text, "XXXX-XX-XX" [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/fmt/md_writer.rs:114:34 [INFO] [stderr] | [INFO] [stderr] 114 | if let Err(..) = write!(self.0 , "* **{}:**\n", component) { [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/fmt/md_writer.rs:164:34 [INFO] [stderr] | [INFO] [stderr] 164 | if let Err(..) = write!(self.0 , ")\n") { [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/clog.rs:820:13 [INFO] [stderr] | [INFO] [stderr] 820 | hash: hash, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `hash` [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/clog.rs:823:13 [INFO] [stderr] | [INFO] [stderr] 823 | closes: closes, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `closes` [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/clog.rs:824:13 [INFO] [stderr] | [INFO] [stderr] 824 | breaks: breaks, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `breaks` [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/clog.rs:825:13 [INFO] [stderr] | [INFO] [stderr] 825 | commit_type: commit_type [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `commit_type` [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: literal with an empty format string [INFO] [stderr] --> src/fmt/md_writer.rs:90:52 [INFO] [stderr] | [INFO] [stderr] 90 | options.version, version_text, "XXXX-XX-XX" [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/fmt/md_writer.rs:114:34 [INFO] [stderr] | [INFO] [stderr] 114 | if let Err(..) = write!(self.0 , "* **{}:**\n", component) { [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/fmt/md_writer.rs:164:34 [INFO] [stderr] | [INFO] [stderr] 164 | if let Err(..) = write!(self.0 , ")\n") { [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/clog.rs:820:13 [INFO] [stderr] | [INFO] [stderr] 820 | hash: hash, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `hash` [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/clog.rs:823:13 [INFO] [stderr] | [INFO] [stderr] 823 | closes: closes, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `closes` [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/clog.rs:824:13 [INFO] [stderr] | [INFO] [stderr] 824 | breaks: breaks, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `breaks` [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/clog.rs:825:13 [INFO] [stderr] | [INFO] [stderr] 825 | commit_type: commit_type [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `commit_type` [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: unused macro definition [INFO] [stderr] --> src/macros.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / macro_rules! werr( [INFO] [stderr] 10 | | ($($arg:tt)*) => ({ [INFO] [stderr] 11 | | use std::io::{Write, stderr}; [INFO] [stderr] 12 | | write!(&mut stderr(), $($arg)*).ok(); [INFO] [stderr] 13 | | }) [INFO] [stderr] 14 | | ); [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/macros.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | / macro_rules! debug { [INFO] [stderr] 40 | | ($fmt:expr) => (); [INFO] [stderr] 41 | | ($fmt:expr, $($arg:tt)*) => (); [INFO] [stderr] 42 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/lib.rs:21:26 [INFO] [stderr] | [INFO] [stderr] 21 | const CLOG_CONFIG_FILE: &'static str = ".clog.toml"; [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: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/macros.rs:208:21 [INFO] [stderr] | [INFO] [stderr] 208 | use ::std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/fmt/mod.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | / clog_enum! { [INFO] [stderr] 12 | | #[derive(Debug)] [INFO] [stderr] 13 | | pub enum ChangelogFormat { [INFO] [stderr] 14 | | Json, [INFO] [stderr] 15 | | Markdown [INFO] [stderr] 16 | | } [INFO] [stderr] 17 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/macros.rs:208:21 [INFO] [stderr] | [INFO] [stderr] 208 | use ::std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/link_style.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | / clog_enum!{ [INFO] [stderr] 11 | | #[derive(Debug)] [INFO] [stderr] 12 | | pub enum LinkStyle { [INFO] [stderr] 13 | | Github, [INFO] [stderr] ... | [INFO] [stderr] 17 | | } [INFO] [stderr] 18 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] [INFO] [stderr] warning: unused import: `::std::ascii::AsciiExt` [INFO] [stderr] --> src/macros.rs:208:21 [INFO] [stderr] | [INFO] [stderr] 208 | use ::std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/fmt/mod.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | / clog_enum! { [INFO] [stderr] 12 | | #[derive(Debug)] [INFO] [stderr] 13 | | pub enum ChangelogFormat { [INFO] [stderr] 14 | | Json, [INFO] [stderr] 15 | | Markdown [INFO] [stderr] 16 | | } [INFO] [stderr] 17 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `::std::ascii::AsciiExt` [INFO] [stderr] --> src/macros.rs:208:21 [INFO] [stderr] | [INFO] [stderr] 208 | use ::std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/link_style.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | / clog_enum!{ [INFO] [stderr] 11 | | #[derive(Debug)] [INFO] [stderr] 12 | | pub enum LinkStyle { [INFO] [stderr] 13 | | Github, [INFO] [stderr] ... | [INFO] [stderr] 17 | | } [INFO] [stderr] 18 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/macros.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / macro_rules! werr( [INFO] [stderr] 10 | | ($($arg:tt)*) => ({ [INFO] [stderr] 11 | | use std::io::{Write, stderr}; [INFO] [stderr] 12 | | write!(&mut stderr(), $($arg)*).ok(); [INFO] [stderr] 13 | | }) [INFO] [stderr] 14 | | ); [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/macros.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | / macro_rules! debug { [INFO] [stderr] 40 | | ($fmt:expr) => (); [INFO] [stderr] 41 | | ($fmt:expr, $($arg:tt)*) => (); [INFO] [stderr] 42 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/lib.rs:21:26 [INFO] [stderr] | [INFO] [stderr] 21 | const CLOG_CONFIG_FILE: &'static str = ".clog.toml"; [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: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/macros.rs:208:21 [INFO] [stderr] | [INFO] [stderr] 208 | use ::std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/fmt/mod.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | / clog_enum! { [INFO] [stderr] 12 | | #[derive(Debug)] [INFO] [stderr] 13 | | pub enum ChangelogFormat { [INFO] [stderr] 14 | | Json, [INFO] [stderr] 15 | | Markdown [INFO] [stderr] 16 | | } [INFO] [stderr] 17 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/macros.rs:208:21 [INFO] [stderr] | [INFO] [stderr] 208 | use ::std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/link_style.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | / clog_enum!{ [INFO] [stderr] 11 | | #[derive(Debug)] [INFO] [stderr] 12 | | pub enum LinkStyle { [INFO] [stderr] 13 | | Github, [INFO] [stderr] ... | [INFO] [stderr] 17 | | } [INFO] [stderr] 18 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/fmt/md_writer.rs:102:12 [INFO] [stderr] | [INFO] [stderr] 102 | if section.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `section.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: useless use of `format!` [INFO] [stderr] --> src/fmt/md_writer.rs:121:17 [INFO] [stderr] | [INFO] [stderr] 121 | format!("* ") [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `"* ".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/fmt/json_writer.rs:102:12 [INFO] [stderr] | [INFO] [stderr] 102 | if section.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `section.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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/sectionmap.rs:50:81 [INFO] [stderr] | [INFO] [stderr] 50 | let comp_map = sm.sections.entry("Breaking Changes".to_owned()).or_insert(BTreeMap::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(BTreeMap::new)` [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/sectionmap.rs:51:71 [INFO] [stderr] | [INFO] [stderr] 51 | let sec_map = comp_map.entry(entry.component.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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/sectionmap.rs:54:73 [INFO] [stderr] | [INFO] [stderr] 54 | let comp_map = sm.sections.entry(entry.commit_type.clone()).or_insert(BTreeMap::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(BTreeMap::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/sectionmap.rs:55:67 [INFO] [stderr] | [INFO] [stderr] 55 | let sec_map = comp_map.entry(entry.component.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/clog.rs:404:13 [INFO] [stderr] | [INFO] [stderr] 404 | / match toml_table.get("sections") { [INFO] [stderr] 405 | | Some(table) => { [INFO] [stderr] 406 | | match table.as_table() { [INFO] [stderr] 407 | | Some(table) => { [INFO] [stderr] ... | [INFO] [stderr] 418 | | None => (), [INFO] [stderr] 419 | | }; [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] 404 | if let Some(table) = toml_table.get("sections") { [INFO] [stderr] 405 | match table.as_table() { [INFO] [stderr] 406 | Some(table) => { [INFO] [stderr] 407 | for (sec, val) in table.iter() { [INFO] [stderr] 408 | if let Some(vec) = val.as_slice() { [INFO] [stderr] 409 | let alias_vec = vec.iter().map(|v| v.as_str().unwrap_or("").to_owned()).collect::>(); [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/clog.rs:406:21 [INFO] [stderr] | [INFO] [stderr] 406 | / match table.as_table() { [INFO] [stderr] 407 | | Some(table) => { [INFO] [stderr] 408 | | for (sec, val) in table.iter() { [INFO] [stderr] 409 | | if let Some(vec) = val.as_slice() { [INFO] [stderr] ... | [INFO] [stderr] 415 | | None => (), [INFO] [stderr] 416 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [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] 406 | if let Some(table) = table.as_table() { [INFO] [stderr] 407 | for (sec, val) in table.iter() { [INFO] [stderr] 408 | if let Some(vec) = val.as_slice() { [INFO] [stderr] 409 | let alias_vec = vec.iter().map(|v| v.as_str().unwrap_or("").to_owned()).collect::>(); [INFO] [stderr] 410 | self.section_map.insert(sec.to_owned(), alias_vec); [INFO] [stderr] 411 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/clog.rs:952:26 [INFO] [stderr] | [INFO] [stderr] 952 | .unwrap_or(self.section_map.keys() [INFO] [stderr] | __________________________^ [INFO] [stderr] 953 | | .filter(|&k| k == "Unknown") [INFO] [stderr] 954 | | .next() [INFO] [stderr] 955 | | .unwrap()) [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 952 | .unwrap_or_else(|| self.section_map.keys() [INFO] [stderr] 953 | .filter(|&k| k == "Unknown") [INFO] [stderr] 954 | .next() [INFO] [stderr] 955 | .unwrap()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/clog.rs:952:36 [INFO] [stderr] | [INFO] [stderr] 952 | .unwrap_or(self.section_map.keys() [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 953 | | .filter(|&k| k == "Unknown") [INFO] [stderr] 954 | | .next() [INFO] [stderr] | |__________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|&k| k == "Unknown").next()` with `find(|&k| k == "Unknown")` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/link_style.rs:34:19 [INFO] [stderr] | [INFO] [stderr] 34 | "" => format!("{}", issue.as_ref()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `issue.as_ref().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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/link_style.rs:39:41 [INFO] [stderr] | [INFO] [stderr] 39 | LinkStyle::Stash => format!("{}", issue.as_ref()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `issue.as_ref().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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/link_style.rs:41:40 [INFO] [stderr] | [INFO] [stderr] 41 | LinkStyle::Cgit => format!("{}", issue.as_ref()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `issue.as_ref().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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/link_style.rs:59:19 [INFO] [stderr] | [INFO] [stderr] 59 | "" => format!("{}", &hash.as_ref()[0..8]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `&hash.as_ref()[0..8].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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused import: `::std::ascii::AsciiExt` [INFO] [stderr] --> src/macros.rs:208:21 [INFO] [stderr] | [INFO] [stderr] 208 | use ::std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/fmt/mod.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | / clog_enum! { [INFO] [stderr] 12 | | #[derive(Debug)] [INFO] [stderr] 13 | | pub enum ChangelogFormat { [INFO] [stderr] 14 | | Json, [INFO] [stderr] 15 | | Markdown [INFO] [stderr] 16 | | } [INFO] [stderr] 17 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `::std::ascii::AsciiExt` [INFO] [stderr] --> src/macros.rs:208:21 [INFO] [stderr] | [INFO] [stderr] 208 | use ::std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/link_style.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | / clog_enum!{ [INFO] [stderr] 11 | | #[derive(Debug)] [INFO] [stderr] 12 | | pub enum LinkStyle { [INFO] [stderr] 13 | | Github, [INFO] [stderr] ... | [INFO] [stderr] 17 | | } [INFO] [stderr] 18 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/fmt/md_writer.rs:102:12 [INFO] [stderr] | [INFO] [stderr] 102 | if section.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `section.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: useless use of `format!` [INFO] [stderr] --> src/fmt/md_writer.rs:121:17 [INFO] [stderr] | [INFO] [stderr] 121 | format!("* ") [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `"* ".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/fmt/json_writer.rs:102:12 [INFO] [stderr] | [INFO] [stderr] 102 | if section.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `section.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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/sectionmap.rs:50:81 [INFO] [stderr] | [INFO] [stderr] 50 | let comp_map = sm.sections.entry("Breaking Changes".to_owned()).or_insert(BTreeMap::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(BTreeMap::new)` [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/sectionmap.rs:51:71 [INFO] [stderr] | [INFO] [stderr] 51 | let sec_map = comp_map.entry(entry.component.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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/sectionmap.rs:54:73 [INFO] [stderr] | [INFO] [stderr] 54 | let comp_map = sm.sections.entry(entry.commit_type.clone()).or_insert(BTreeMap::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(BTreeMap::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/sectionmap.rs:55:67 [INFO] [stderr] | [INFO] [stderr] 55 | let sec_map = comp_map.entry(entry.component.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/clog.rs:404:13 [INFO] [stderr] | [INFO] [stderr] 404 | / match toml_table.get("sections") { [INFO] [stderr] 405 | | Some(table) => { [INFO] [stderr] 406 | | match table.as_table() { [INFO] [stderr] 407 | | Some(table) => { [INFO] [stderr] ... | [INFO] [stderr] 418 | | None => (), [INFO] [stderr] 419 | | }; [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] 404 | if let Some(table) = toml_table.get("sections") { [INFO] [stderr] 405 | match table.as_table() { [INFO] [stderr] 406 | Some(table) => { [INFO] [stderr] 407 | for (sec, val) in table.iter() { [INFO] [stderr] 408 | if let Some(vec) = val.as_slice() { [INFO] [stderr] 409 | let alias_vec = vec.iter().map(|v| v.as_str().unwrap_or("").to_owned()).collect::>(); [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/clog.rs:406:21 [INFO] [stderr] | [INFO] [stderr] 406 | / match table.as_table() { [INFO] [stderr] 407 | | Some(table) => { [INFO] [stderr] 408 | | for (sec, val) in table.iter() { [INFO] [stderr] 409 | | if let Some(vec) = val.as_slice() { [INFO] [stderr] ... | [INFO] [stderr] 415 | | None => (), [INFO] [stderr] 416 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [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] 406 | if let Some(table) = table.as_table() { [INFO] [stderr] 407 | for (sec, val) in table.iter() { [INFO] [stderr] 408 | if let Some(vec) = val.as_slice() { [INFO] [stderr] 409 | let alias_vec = vec.iter().map(|v| v.as_str().unwrap_or("").to_owned()).collect::>(); [INFO] [stderr] 410 | self.section_map.insert(sec.to_owned(), alias_vec); [INFO] [stderr] 411 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/clog.rs:952:26 [INFO] [stderr] | [INFO] [stderr] 952 | .unwrap_or(self.section_map.keys() [INFO] [stderr] | __________________________^ [INFO] [stderr] 953 | | .filter(|&k| k == "Unknown") [INFO] [stderr] 954 | | .next() [INFO] [stderr] 955 | | .unwrap()) [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 952 | .unwrap_or_else(|| self.section_map.keys() [INFO] [stderr] 953 | .filter(|&k| k == "Unknown") [INFO] [stderr] 954 | .next() [INFO] [stderr] 955 | .unwrap()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/clog.rs:952:36 [INFO] [stderr] | [INFO] [stderr] 952 | .unwrap_or(self.section_map.keys() [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 953 | | .filter(|&k| k == "Unknown") [INFO] [stderr] 954 | | .next() [INFO] [stderr] | |__________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|&k| k == "Unknown").next()` with `find(|&k| k == "Unknown")` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/link_style.rs:34:19 [INFO] [stderr] | [INFO] [stderr] 34 | "" => format!("{}", issue.as_ref()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `issue.as_ref().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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/link_style.rs:39:41 [INFO] [stderr] | [INFO] [stderr] 39 | LinkStyle::Stash => format!("{}", issue.as_ref()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `issue.as_ref().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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/link_style.rs:41:40 [INFO] [stderr] | [INFO] [stderr] 41 | LinkStyle::Cgit => format!("{}", issue.as_ref()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `issue.as_ref().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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/link_style.rs:59:19 [INFO] [stderr] | [INFO] [stderr] 59 | "" => format!("{}", &hash.as_ref()[0..8]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `&hash.as_ref()[0..8].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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.92s [INFO] running `"docker" "inspect" "c39933a2f3b7ebeb140ea2e33ac58fa9345f0398ba5c0bd36492bd45e05c02ee"` [INFO] running `"docker" "rm" "-f" "c39933a2f3b7ebeb140ea2e33ac58fa9345f0398ba5c0bd36492bd45e05c02ee"` [INFO] [stdout] c39933a2f3b7ebeb140ea2e33ac58fa9345f0398ba5c0bd36492bd45e05c02ee