[INFO] crate epub 1.2.0 is already in cache [INFO] extracting crate epub 1.2.0 into work/ex/clippy-test-run/sources/stable/reg/epub/1.2.0 [INFO] extracting crate epub 1.2.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/epub/1.2.0 [INFO] validating manifest of epub-1.2.0 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 epub-1.2.0 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 epub-1.2.0 [INFO] finished frobbing epub-1.2.0 [INFO] frobbed toml for epub-1.2.0 written to work/ex/clippy-test-run/sources/stable/reg/epub/1.2.0/Cargo.toml [INFO] started frobbing epub-1.2.0 [INFO] finished frobbing epub-1.2.0 [INFO] frobbed toml for epub-1.2.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/epub/1.2.0/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 epub-1.2.0 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/epub/1.2.0:/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] 7f80ebdf2faf4237220c367b440903b606b7030cb2214ca2b776b4a313fcaf59 [INFO] running `"docker" "start" "-a" "7f80ebdf2faf4237220c367b440903b606b7030cb2214ca2b776b4a313fcaf59"` [INFO] [stderr] Checking epub v1.2.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/xmlutils.rs:54:25 [INFO] [stderr] | [INFO] [stderr] 54 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/xmlutils.rs:56:25 [INFO] [stderr] | [INFO] [stderr] 56 | namespace: namespace, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `namespace` [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/xmlutils.rs:228:29 [INFO] [stderr] | [INFO] [stderr] 228 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/xmlutils.rs:231:29 [INFO] [stderr] | [INFO] [stderr] 231 | namespace: namespace, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `namespace` [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/archive.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | zip: zip, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `zip` [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/archive.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | files: files, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `files` [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/doc.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | archive: archive, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `archive` [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/doc.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | spine: spine, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `spine` [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/doc.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | resources: resources, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `resources` [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/xmlutils.rs:54:25 [INFO] [stderr] | [INFO] [stderr] 54 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/xmlutils.rs:56:25 [INFO] [stderr] | [INFO] [stderr] 56 | namespace: namespace, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `namespace` [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/xmlutils.rs:228:29 [INFO] [stderr] | [INFO] [stderr] 228 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/xmlutils.rs:231:29 [INFO] [stderr] | [INFO] [stderr] 231 | namespace: namespace, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `namespace` [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/archive.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | zip: zip, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `zip` [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/archive.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | files: files, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `files` [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/doc.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | archive: archive, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `archive` [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/doc.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | spine: spine, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `spine` [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/doc.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | resources: resources, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `resources` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/doc.rs:398:34 [INFO] [stderr] | [INFO] [stderr] 398 | Some(&(ref p, _)) => return Ok(p.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(p.clone())` [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/doc.rs:399:21 [INFO] [stderr] | [INFO] [stderr] 399 | None => return Err(format_err!("Current not found")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(format_err!("Current not found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/doc.rs:417:25 [INFO] [stderr] | [INFO] [stderr] 417 | Some(id) => return Ok(id.to_string()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(id.to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/doc.rs:418:21 [INFO] [stderr] | [INFO] [stderr] 418 | None => return Err(format_err!("current is broken")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(format_err!("current is broken"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/doc.rs:398:34 [INFO] [stderr] | [INFO] [stderr] 398 | Some(&(ref p, _)) => return Ok(p.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(p.clone())` [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/doc.rs:399:21 [INFO] [stderr] | [INFO] [stderr] 399 | None => return Err(format_err!("Current not found")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(format_err!("Current not found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/doc.rs:417:25 [INFO] [stderr] | [INFO] [stderr] 417 | Some(id) => return Ok(id.to_string()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(id.to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/doc.rs:418:21 [INFO] [stderr] | [INFO] [stderr] 418 | None => return Err(format_err!("current is broken")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(format_err!("current is broken"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/xmlutils.rs:78:24 [INFO] [stderr] | [INFO] [stderr] 78 | if parents.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!parents.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/xmlutils.rs:165:17 [INFO] [stderr] | [INFO] [stderr] 165 | / match c.borrow().find(tag) { [INFO] [stderr] 166 | | Ok(n) => return Ok(n), [INFO] [stderr] 167 | | _ => {} [INFO] [stderr] 168 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Ok(n) = c.borrow().find(tag) { return Ok(n) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xmlutils.rs:198:63 [INFO] [stderr] | [INFO] [stderr] 198 | pub fn replace_attrs(xmldoc: &[u8], closure: F, extra_css: &Vec) -> Result, XMLError> [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `attributes`. [INFO] [stderr] --> src/xmlutils.rs:219:34 [INFO] [stderr] | [INFO] [stderr] 219 | for i in 0..attributes.len() { [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] 219 | for in &attributes { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/xmlutils.rs:237:65 [INFO] [stderr] | [INFO] [stderr] 237 | if n.local_name.to_lowercase() == "head" && extra_css.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!extra_css.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/doc.rs:271:9 [INFO] [stderr] | [INFO] [stderr] 271 | / match self.resources.get(id) { [INFO] [stderr] 272 | | Some(&(_, ref res)) => return Ok(res.to_string()), [INFO] [stderr] 273 | | None => {} [INFO] [stderr] 274 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(&(_, ref res)) = self.resources.get(id) { return Ok(res.to_string()) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/doc.rs:600:21 [INFO] [stderr] | [INFO] [stderr] 600 | / if self.metadata.contains_key(&k) { [INFO] [stderr] 601 | | if let Some(arr) = self.metadata.get_mut(&k) { [INFO] [stderr] 602 | | arr.push(v); [INFO] [stderr] 603 | | } [INFO] [stderr] 604 | | } else { [INFO] [stderr] 605 | | self.metadata.insert(k, vec![v]); [INFO] [stderr] 606 | | } [INFO] [stderr] | |_____________________^ help: consider using: `self.metadata.entry(k)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/doc.rs:609:21 [INFO] [stderr] | [INFO] [stderr] 609 | let ref k = item.name.local_name; [INFO] [stderr] | ----^^^^^------------------------ help: try: `let k = &item.name.local_name;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/doc.rs:628:46 [INFO] [stderr] | [INFO] [stderr] 628 | let toc_res = self.resources.get(id).ok_or(err_msg("No toc found"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| err_msg("No toc found"))` [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: length comparison to zero [INFO] [stderr] --> src/xmlutils.rs:78:24 [INFO] [stderr] | [INFO] [stderr] 78 | if parents.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!parents.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/xmlutils.rs:165:17 [INFO] [stderr] | [INFO] [stderr] 165 | / match c.borrow().find(tag) { [INFO] [stderr] 166 | | Ok(n) => return Ok(n), [INFO] [stderr] 167 | | _ => {} [INFO] [stderr] 168 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Ok(n) = c.borrow().find(tag) { return Ok(n) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xmlutils.rs:198:63 [INFO] [stderr] | [INFO] [stderr] 198 | pub fn replace_attrs(xmldoc: &[u8], closure: F, extra_css: &Vec) -> Result, XMLError> [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `attributes`. [INFO] [stderr] --> src/xmlutils.rs:219:34 [INFO] [stderr] | [INFO] [stderr] 219 | for i in 0..attributes.len() { [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] 219 | for in &attributes { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/xmlutils.rs:237:65 [INFO] [stderr] | [INFO] [stderr] 237 | if n.local_name.to_lowercase() == "head" && extra_css.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!extra_css.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/doc.rs:271:9 [INFO] [stderr] | [INFO] [stderr] 271 | / match self.resources.get(id) { [INFO] [stderr] 272 | | Some(&(_, ref res)) => return Ok(res.to_string()), [INFO] [stderr] 273 | | None => {} [INFO] [stderr] 274 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(&(_, ref res)) = self.resources.get(id) { return Ok(res.to_string()) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/doc.rs:600:21 [INFO] [stderr] | [INFO] [stderr] 600 | / if self.metadata.contains_key(&k) { [INFO] [stderr] 601 | | if let Some(arr) = self.metadata.get_mut(&k) { [INFO] [stderr] 602 | | arr.push(v); [INFO] [stderr] 603 | | } [INFO] [stderr] 604 | | } else { [INFO] [stderr] 605 | | self.metadata.insert(k, vec![v]); [INFO] [stderr] 606 | | } [INFO] [stderr] | |_____________________^ help: consider using: `self.metadata.entry(k)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/doc.rs:609:21 [INFO] [stderr] | [INFO] [stderr] 609 | let ref k = item.name.local_name; [INFO] [stderr] | ----^^^^^------------------------ help: try: `let k = &item.name.local_name;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/doc.rs:628:46 [INFO] [stderr] | [INFO] [stderr] 628 | let toc_res = self.resources.get(id).ok_or(err_msg("No toc found"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| err_msg("No toc found"))` [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: using `println!("")` [INFO] [stderr] --> tests/read.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> tests/doc.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | assert!(doc.toc.len() > 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!doc.toc.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] Finished dev [unoptimized + debuginfo] target(s) in 7.10s [INFO] running `"docker" "inspect" "7f80ebdf2faf4237220c367b440903b606b7030cb2214ca2b776b4a313fcaf59"` [INFO] running `"docker" "rm" "-f" "7f80ebdf2faf4237220c367b440903b606b7030cb2214ca2b776b4a313fcaf59"` [INFO] [stdout] 7f80ebdf2faf4237220c367b440903b606b7030cb2214ca2b776b4a313fcaf59