[INFO] crate rustdoc-stripper 0.1.5 is already in cache [INFO] extracting crate rustdoc-stripper 0.1.5 into work/ex/clippy-test-run/sources/stable/reg/rustdoc-stripper/0.1.5 [INFO] extracting crate rustdoc-stripper 0.1.5 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rustdoc-stripper/0.1.5 [INFO] validating manifest of rustdoc-stripper-0.1.5 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 rustdoc-stripper-0.1.5 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 rustdoc-stripper-0.1.5 [INFO] finished frobbing rustdoc-stripper-0.1.5 [INFO] frobbed toml for rustdoc-stripper-0.1.5 written to work/ex/clippy-test-run/sources/stable/reg/rustdoc-stripper/0.1.5/Cargo.toml [INFO] started frobbing rustdoc-stripper-0.1.5 [INFO] finished frobbing rustdoc-stripper-0.1.5 [INFO] frobbed toml for rustdoc-stripper-0.1.5 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rustdoc-stripper/0.1.5/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 rustdoc-stripper-0.1.5 against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rustdoc-stripper/0.1.5:/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 -Dclippy::into_iter_on_array" "-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] 142c54941df45b45badf44f8d3816c06367add6533158b6ddb63c8f343f6d2e2 [INFO] running `"docker" "start" "-a" "142c54941df45b45badf44f8d3816c06367add6533158b6ddb63c8f343f6d2e2"` [INFO] [stderr] Compiling libc v0.2.48 [INFO] [stderr] Checking rustdoc-stripper v0.1.5 (/opt/crater/workdir) [INFO] [stderr] error[E0602]: unknown lint: `clippy::into_iter_on_array` [INFO] [stderr] | [INFO] [stderr] = note: requested on the command line with `-D clippy::into_iter_on_array` [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/regenerate.rs:438:25 [INFO] [stderr] | [INFO] [stderr] 438 | file: file, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `file` [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/regenerate.rs:481:21 [INFO] [stderr] | [INFO] [stderr] 481 | file: file, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `file` [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/regenerate.rs:482:21 [INFO] [stderr] | [INFO] [stderr] 482 | infos: infos, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `infos` [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/regenerate.rs:484:21 [INFO] [stderr] | [INFO] [stderr] 484 | comments: comments, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `comments` [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/strip.rs:382:30 [INFO] [stderr] | [INFO] [stderr] 382 | comment_lines : comment_lines, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `comment_lines` [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/types.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | line: line, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [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/types.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | event: event, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `event` [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/types.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | ty: ty, [INFO] [stderr] | ^^^^^^ help: replace it with: `ty` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0602`. [INFO] [stderr] error: Could not compile `libc`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/regenerate.rs:393:14 [INFO] [stderr] | [INFO] [stderr] 393 | Some((*sub_erase_macro_path(Some(Box::new(t)), false).unwrap())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/regenerate.rs:393:14 [INFO] [stderr] | [INFO] [stderr] 393 | Some((*sub_erase_macro_path(Some(Box::new(t)), false).unwrap())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/regenerate.rs:464:28 [INFO] [stderr] | [INFO] [stderr] 464 | } else { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 465 | | if !comments.is_empty() { [INFO] [stderr] 466 | | infos.push((None, comments)); [INFO] [stderr] 467 | | comments = vec![]; [INFO] [stderr] 468 | | } [INFO] [stderr] 469 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 464 | } else if !comments.is_empty() { [INFO] [stderr] 465 | infos.push((None, comments)); [INFO] [stderr] 466 | comments = vec![]; [INFO] [stderr] 467 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/strip.rs:23:26 [INFO] [stderr] | [INFO] [stderr] 23 | const STOP_CHARACTERS : &'static [char] = &['\t', '\n', '\r', '<', '{', ':', ';', '!', '(']; [INFO] [stderr] | -^^^^^^^------- help: consider removing `'static`: `&[char]` [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/strip.rs:24:21 [INFO] [stderr] | [INFO] [stderr] 24 | const COMMENT_ID : &'static [&'static str] = &["//", "/*"]; [INFO] [stderr] | -^^^^^^^--------------- help: consider removing `'static`: `&[&'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/strip.rs:24:31 [INFO] [stderr] | [INFO] [stderr] 24 | const COMMENT_ID : &'static [&'static str] = &["//", "/*"]; [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/strip.rs:25:25 [INFO] [stderr] | [INFO] [stderr] 25 | const DOC_COMMENT_ID : &'static [&'static str] = &["///", "/*!", "//!"]; [INFO] [stderr] | -^^^^^^^--------------- help: consider removing `'static`: `&[&'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/strip.rs:25:35 [INFO] [stderr] | [INFO] [stderr] 25 | const DOC_COMMENT_ID : &'static [&'static str] = &["///", "/*!", "//!"]; [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/strip.rs:220:24 [INFO] [stderr] | [INFO] [stderr] 220 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 221 | | if let Some(ref parent) = current { [INFO] [stderr] 222 | | match parent.ty { [INFO] [stderr] 223 | | Type::Struct | Type::Enum => false, [INFO] [stderr] ... | [INFO] [stderr] 228 | | } [INFO] [stderr] 229 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 220 | } else if let Some(ref parent) = current { [INFO] [stderr] 221 | match parent.ty { [INFO] [stderr] 222 | Type::Struct | Type::Enum => false, [INFO] [stderr] 223 | _ => true, [INFO] [stderr] 224 | } [INFO] [stderr] 225 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/strip.rs:507:56 [INFO] [stderr] | [INFO] [stderr] 507 | } else { [INFO] [stderr] | ________________________________________________________^ [INFO] [stderr] 508 | | if t.name == "pub" { [INFO] [stderr] 509 | | true [INFO] [stderr] 510 | | } else { [INFO] [stderr] 511 | | false [INFO] [stderr] 512 | | } [INFO] [stderr] 513 | | } [INFO] [stderr] | |_________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 507 | } else if t.name == "pub" { [INFO] [stderr] 508 | true [INFO] [stderr] 509 | } else { [INFO] [stderr] 510 | false [INFO] [stderr] 511 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/utils.rs:109:16 [INFO] [stderr] | [INFO] [stderr] 109 | .ok_or((())) [INFO] [stderr] | ^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/utils.rs:109:16 [INFO] [stderr] | [INFO] [stderr] 109 | .ok_or((())) [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/consts.rs:15:26 [INFO] [stderr] | [INFO] [stderr] 15 | pub const MOD_COMMENT : &'static str = " src/consts.rs:16:27 [INFO] [stderr] | [INFO] [stderr] 16 | pub const FILE_COMMENT : &'static str = " src/consts.rs:17:19 [INFO] [stderr] | [INFO] [stderr] 17 | pub const FILE : &'static str = " src/consts.rs:18:23 [INFO] [stderr] | [INFO] [stderr] 18 | pub const END_INFO : &'static str = " -->"; [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/consts.rs:19:34 [INFO] [stderr] | [INFO] [stderr] 19 | pub const OUTPUT_COMMENT_FILE : &'static str = "comments.md"; [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/regenerate.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | / let mut file_comment = false; [INFO] [stderr] 96 | | [INFO] [stderr] 97 | | if elements[pos].1.len() > 0 && elements[pos].1[0].starts_with("//!") { [INFO] [stderr] 98 | | line += 1; [INFO] [stderr] ... | [INFO] [stderr] 104 | | } [INFO] [stderr] 105 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let file_comment = if elements[pos].1.len() > 0 && elements[pos].1[0].starts_with("//!") { ..; true } else { ..; false };` [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: length comparison to zero [INFO] [stderr] --> src/regenerate.rs:97:16 [INFO] [stderr] | [INFO] [stderr] 97 | if elements[pos].1.len() > 0 && elements[pos].1[0].starts_with("//!") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!elements[pos].1.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: single-character string constant used as pattern [INFO] [stderr] --> src/regenerate.rs:102:83 [INFO] [stderr] | [INFO] [stderr] 102 | original_content[line + *decal - 1].trim_left().starts_with("#") { [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/regenerate.rs:106:47 [INFO] [stderr] | [INFO] [stderr] 106 | for comment in (&elements[pos].1).into_iter().skip(if file_comment { 1 } else { 0 }) { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/regenerate.rs:125:21 [INFO] [stderr] | [INFO] [stderr] 125 | infos: &mut HashMap, Vec<(Option, Vec)>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 124 | pub fn regenerate_comments(work_dir: &Path, path: &str, [INFO] [stderr] 125 | infos: &mut HashMap, Vec<(Option, Vec)>, S>, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/regenerate.rs:125:16 [INFO] [stderr] | [INFO] [stderr] 125 | infos: &mut HashMap, Vec<(Option, Vec)>>, [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: single-character string constant used as pattern [INFO] [stderr] --> src/regenerate.rs:168:65 [INFO] [stderr] | [INFO] [stderr] 168 | parse_result.original_content[it].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: useless use of `format!` [INFO] [stderr] --> src/regenerate.rs:177:66 [INFO] [stderr] | [INFO] [stderr] 177 | parse_result.original_content.insert(it, 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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/regenerate.rs:213:25 [INFO] [stderr] | [INFO] [stderr] 213 | / match get_corresponding_type(&elements, &tmp, [INFO] [stderr] 214 | | parse_result.event_list[it].line, [INFO] [stderr] 215 | | &mut decal, [INFO] [stderr] 216 | | &mut parse_result.original_content, [INFO] [stderr] ... | [INFO] [stderr] 219 | | None => {} [INFO] [stderr] 220 | | } [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] 213 | if let Some(l) = get_corresponding_type(&elements, &tmp, [INFO] [stderr] 214 | parse_result.event_list[it].line, [INFO] [stderr] 215 | &mut decal, [INFO] [stderr] 216 | &mut parse_result.original_content, [INFO] [stderr] 217 | ignore_macros) { elements.remove(l); } [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/regenerate.rs:223:21 [INFO] [stderr] | [INFO] [stderr] 223 | / match current { [INFO] [stderr] 224 | | Some(ref c) => { [INFO] [stderr] 225 | | if c.ty == Type::Struct || [INFO] [stderr] 226 | | c.ty == Type::Enum || [INFO] [stderr] ... | [INFO] [stderr] 250 | | None => {} [INFO] [stderr] 251 | | } [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] 223 | if let Some(ref c) = current { [INFO] [stderr] 224 | if c.ty == Type::Struct || [INFO] [stderr] 225 | c.ty == Type::Enum || [INFO] [stderr] 226 | c.ty == Type::Mod { [INFO] [stderr] 227 | let tmp = Some(t.clone()); [INFO] [stderr] 228 | let cc = { [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/regenerate.rs:239:37 [INFO] [stderr] | [INFO] [stderr] 239 | / match get_corresponding_type(&elements, &cc, [INFO] [stderr] 240 | | parse_result.event_list[it].line, [INFO] [stderr] 241 | | &mut decal, [INFO] [stderr] 242 | | &mut parse_result.original_content, [INFO] [stderr] ... | [INFO] [stderr] 245 | | None => {} [INFO] [stderr] 246 | | } [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] 239 | if let Some(l) = get_corresponding_type(&elements, &cc, [INFO] [stderr] 240 | parse_result.event_list[it].line, [INFO] [stderr] 241 | &mut decal, [INFO] [stderr] 242 | &mut parse_result.original_content, [INFO] [stderr] 243 | ignore_macros) { elements.remove(l); } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/regenerate.rs:289:8 [INFO] [stderr] | [INFO] [stderr] 289 | if line.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `line.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/regenerate.rs:296:44 [INFO] [stderr] | [INFO] [stderr] 296 | let elems : Vec<&str> = part.split(" ").filter(|x| x.len() > 0).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: length comparison to zero [INFO] [stderr] --> src/regenerate.rs:296:60 [INFO] [stderr] | [INFO] [stderr] 296 | let elems : Vec<&str> = part.split(" ").filter(|x| x.len() > 0).collect(); [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!x.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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/regenerate.rs:305:27 [INFO] [stderr] | [INFO] [stderr] 305 | fn save_remainings(infos: &HashMap, Vec<(Option, Vec)>>, [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: you seem to want to iterate on a map's values [INFO] [stderr] --> src/regenerate.rs:309:25 [INFO] [stderr] | [INFO] [stderr] 309 | for (_, content) in infos { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 309 | for content in infos.values() { [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/regenerate.rs:310:12 [INFO] [stderr] | [INFO] [stderr] 310 | if content.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!content.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: length comparison to one [INFO] [stderr] --> src/regenerate.rs:324:20 [INFO] [stderr] | [INFO] [stderr] 324 | if content.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `content.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/regenerate.rs:331:21 [INFO] [stderr] | [INFO] [stderr] 331 | / match line.0 { [INFO] [stderr] 332 | | Some(ref d) => { [INFO] [stderr] 333 | | let _ = writeln!(out_file, [INFO] [stderr] 334 | | "{}", write_comment(d, &join(&line.1, "\n"), [INFO] [stderr] ... | [INFO] [stderr] 337 | | None => {} [INFO] [stderr] 338 | | } [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] 331 | if let Some(ref d) = line.0 { [INFO] [stderr] 332 | let _ = writeln!(out_file, [INFO] [stderr] 333 | "{}", write_comment(d, &join(&line.1, "\n"), [INFO] [stderr] 334 | false)); [INFO] [stderr] 335 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/regenerate.rs:400:8 [INFO] [stderr] | [INFO] [stderr] 400 | -> HashMap, Vec<(Option, Vec)>> [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: consider using `Option` instead of `Option>` or a custom enum if you need to distinguish all 3 cases [INFO] [stderr] --> src/regenerate.rs:416:33 [INFO] [stderr] | [INFO] [stderr] 416 | fn line_file(line: &str) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_option)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_option [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/regenerate.rs:433:28 [INFO] [stderr] | [INFO] [stderr] 433 | while let Some(line) = lines.next() { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `for line in lines { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/strip.rs:28:38 [INFO] [stderr] | [INFO] [stderr] 28 | while (*it + 1) < words.len() && limit.contains(words[*it + 1]) == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!limit.contains(words[*it + 1])` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/strip.rs:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | / match current { [INFO] [stderr] 71 | | &Some(ref c) => { [INFO] [stderr] 72 | | match e { [INFO] [stderr] 73 | | &Some(ref t) => { [INFO] [stderr] ... | [INFO] [stderr] 88 | | } [INFO] [stderr] 89 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 70 | match *current { [INFO] [stderr] 71 | Some(ref c) => { [INFO] [stderr] 72 | match e { [INFO] [stderr] 73 | &Some(ref t) => { [INFO] [stderr] 74 | let mut tmp = t.clone(); [INFO] [stderr] 75 | tmp.parent = Some(Box::new(c.clone())); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/strip.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | / match e { [INFO] [stderr] 73 | | &Some(ref t) => { [INFO] [stderr] 74 | | let mut tmp = t.clone(); [INFO] [stderr] 75 | | tmp.parent = Some(Box::new(c.clone())); [INFO] [stderr] ... | [INFO] [stderr] 82 | | } [INFO] [stderr] 83 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 72 | match *e { [INFO] [stderr] 73 | Some(ref t) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/strip.rs:85:18 [INFO] [stderr] | [INFO] [stderr] 85 | &None => match e { [INFO] [stderr] | __________________^ [INFO] [stderr] 86 | | &Some(ref t) => Some(t.clone()), [INFO] [stderr] 87 | | _ => None, [INFO] [stderr] 88 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 85 | &None => match *e { [INFO] [stderr] 86 | Some(ref t) => Some(t.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/strip.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | / match current { [INFO] [stderr] 94 | | &Some(ref c) => match c.parent { [INFO] [stderr] 95 | | Some(ref p) => Some(p.deref().clone()), [INFO] [stderr] 96 | | None => None, [INFO] [stderr] 97 | | }, [INFO] [stderr] 98 | | &None => None, [INFO] [stderr] 99 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 93 | match *current { [INFO] [stderr] 94 | Some(ref c) => match c.parent { [INFO] [stderr] 95 | Some(ref p) => Some(p.deref().clone()), [INFO] [stderr] 96 | None => None, [INFO] [stderr] 97 | }, [INFO] [stderr] 98 | None => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/strip.rs:136:5 [INFO] [stderr] | [INFO] [stderr] 136 | / loop { [INFO] [stderr] 137 | | let tmp_text = &text[last_pos..]; [INFO] [stderr] 138 | | if let Some(pos) = tmp_text.find('/') { [INFO] [stderr] 139 | | let tmp_text = &tmp_text[pos..]; [INFO] [stderr] ... | [INFO] [stderr] 168 | | return BlockKind::Other(text) [INFO] [stderr] 169 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/strip.rs:140:13 [INFO] [stderr] | [INFO] [stderr] 140 | last_pos = pos + last_pos; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `last_pos += pos` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/strip.rs:191:43 [INFO] [stderr] | [INFO] [stderr] 191 | for _ in 0..comment.split("\n").count() - 1 { [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/strip.rs:258:67 [INFO] [stderr] | [INFO] [stderr] 258 | let words : Vec<&str> = content.split(' ').filter(|s| s.len() > 0).collect(); [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.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: length comparison to one [INFO] [stderr] --> src/strip.rs:277:58 [INFO] [stderr] | [INFO] [stderr] 277 | if line + 1 < b_content.len() && b_content[line + 1].len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `b_content[line + 1].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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/strip.rs:292:25 [INFO] [stderr] | [INFO] [stderr] 292 | / let mut removed = false; [INFO] [stderr] 293 | | if line + 1 < b_content.len() && b_content[line + 1].len() < 1 { [INFO] [stderr] 294 | | comment_lines.push(line + 1); [INFO] [stderr] 295 | | removed = true; [INFO] [stderr] 296 | | } [INFO] [stderr] | |_________________________^ help: it is more idiomatic to write: `let removed = if line + 1 < b_content.len() && b_content[line + 1].len() < 1 { ..; true } else { false };` [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: the loop variable `pos` is used to index `b_content` [INFO] [stderr] --> src/strip.rs:285:36 [INFO] [stderr] | [INFO] [stderr] 285 | for pos in mark..line { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 285 | for (pos, ) in b_content.iter().enumerate().take(line).skip(mark) { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/strip.rs:293:58 [INFO] [stderr] | [INFO] [stderr] 293 | if line + 1 < b_content.len() && b_content[line + 1].len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `b_content[line + 1].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/strip.rs:310:44 [INFO] [stderr] | [INFO] [stderr] 310 | name.push_str(&format!("{}", b_content[line + 1].trim())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `b_content[line + 1].trim().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: single-character string constant used as pattern [INFO] [stderr] --> src/strip.rs:400:26 [INFO] [stderr] | [INFO] [stderr] 400 | if s.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: identical conversion [INFO] [stderr] --> src/strip.rs:407:5 [INFO] [stderr] | [INFO] [stderr] 407 | / c.replace("*/", "") [INFO] [stderr] 408 | | .split("\n") [INFO] [stderr] 409 | | .into_iter() [INFO] [stderr] | |_________________^ [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] help: consider removing `.into_iter()` [INFO] [stderr] | [INFO] [stderr] 407 | c.replace("*/", "") [INFO] [stderr] 408 | .split("\n") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/strip.rs:408:13 [INFO] [stderr] | [INFO] [stderr] 408 | .split("\n") [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 one [INFO] [stderr] --> src/strip.rs:418:16 [INFO] [stderr] | [INFO] [stderr] 418 | if parse_result.comment_lines.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `parse_result.comment_lines.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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/strip.rs:443:28 [INFO] [stderr] | [INFO] [stderr] 443 | if get_mod(¤t) == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!get_mod(¤t)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/strip.rs:508:53 [INFO] [stderr] | [INFO] [stderr] 508 | / if t.name == "pub" { [INFO] [stderr] 509 | | true [INFO] [stderr] 510 | | } else { [INFO] [stderr] 511 | | false [INFO] [stderr] 512 | | } [INFO] [stderr] | |_____________________________________________________^ help: you can reduce it to: `t.name == "pub"` [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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/strip.rs:516:49 [INFO] [stderr] | [INFO] [stderr] 516 | / if t.name == "pub" { [INFO] [stderr] 517 | | true [INFO] [stderr] 518 | | } else { [INFO] [stderr] 519 | | false [INFO] [stderr] 520 | | } [INFO] [stderr] | |_________________________________________________^ help: you can reduce it to: `t.name == "pub"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: the variable `decal` is used as a loop counter. Consider using `for (decal, item) in to_remove.enumerate()` or similar iterators [INFO] [stderr] --> src/strip.rs:557:25 [INFO] [stderr] | [INFO] [stderr] 557 | for line in to_remove { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/types.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / match self { [INFO] [stderr] 55 | | &EventType::Type(ref t) => write!(fmt, "Type: {:?}", t), [INFO] [stderr] 56 | | &EventType::FileComment(ref t) => write!(fmt, "FileComment: {:?}", t), [INFO] [stderr] 57 | | &EventType::Comment(ref t) => write!(fmt, "Comment: {:?}", t), [INFO] [stderr] 58 | | &EventType::InScope => write!(fmt, "InScope"), [INFO] [stderr] 59 | | &EventType::OutScope => write!(fmt, "OutScope"), [INFO] [stderr] 60 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 54 | match *self { [INFO] [stderr] 55 | EventType::Type(ref t) => write!(fmt, "Type: {:?}", t), [INFO] [stderr] 56 | EventType::FileComment(ref t) => write!(fmt, "FileComment: {:?}", t), [INFO] [stderr] 57 | EventType::Comment(ref t) => write!(fmt, "Comment: {:?}", t), [INFO] [stderr] 58 | EventType::InScope => write!(fmt, "InScope"), [INFO] [stderr] 59 | EventType::OutScope => write!(fmt, "OutScope"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/types.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | / match ty { [INFO] [stderr] 103 | | &Some(ref t) => { [INFO] [stderr] 104 | | if ignore_macros && is_parent && t.ty == Type::Macro { [INFO] [stderr] 105 | | recur(&t.parent, true, ignore_macros) [INFO] [stderr] ... | [INFO] [stderr] 110 | | _ => 0, [INFO] [stderr] 111 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 102 | match *ty { [INFO] [stderr] 103 | Some(ref t) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/types.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | / match parent { [INFO] [stderr] 121 | | &Some(ref p) => write!(f, "{:?}::{} {}{}", p, self.ty, self.name, self.args.join(" ")), [INFO] [stderr] 122 | | _ => write!(f, "{} {}{}", self.ty, self.name, self.args.join(" ")), [INFO] [stderr] 123 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 120 | match *parent { [INFO] [stderr] 121 | Some(ref p) => write!(f, "{:?}::{} {}{}", p, self.ty, self.name, self.args.join(" ")), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/types.rs:136:31 [INFO] [stderr] | [INFO] [stderr] 136 | if t.ty == Type::Macro && is_parent == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `is_parent` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/utils.rs:32:24 [INFO] [stderr] | [INFO] [stderr] 32 | do_loop_over_files(path.as_ref(), path.as_ref(), func, files_to_ignore, verbose) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try this: `path` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/utils.rs:32:39 [INFO] [stderr] | [INFO] [stderr] 32 | do_loop_over_files(path.as_ref(), path.as_ref(), func, files_to_ignore, verbose) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try this: `path` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/utils.rs:148:5 [INFO] [stderr] | [INFO] [stderr] 148 | / if let &Some(ref t) = id { [INFO] [stderr] 149 | | if ignore_macro { [INFO] [stderr] 150 | | format!("{} {}{}\n{}", FILE_COMMENT, t, END_INFO, comment) [INFO] [stderr] 151 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 155 | | format!("{}{}\n{}", FILE_COMMENT, END_INFO, comment) [INFO] [stderr] 156 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 148 | if let Some(ref t) = *id { [INFO] [stderr] | ^^^^^^^^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `rustdoc-stripper`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "142c54941df45b45badf44f8d3816c06367add6533158b6ddb63c8f343f6d2e2"` [INFO] running `"docker" "rm" "-f" "142c54941df45b45badf44f8d3816c06367add6533158b6ddb63c8f343f6d2e2"` [INFO] [stdout] 142c54941df45b45badf44f8d3816c06367add6533158b6ddb63c8f343f6d2e2