[INFO] updating cached repository nicohman/rust-wildbow-scraper [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/nicohman/rust-wildbow-scraper [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/nicohman/rust-wildbow-scraper" "work/ex/clippy-test-run/sources/stable/gh/nicohman/rust-wildbow-scraper"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/nicohman/rust-wildbow-scraper'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/nicohman/rust-wildbow-scraper" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/nicohman/rust-wildbow-scraper"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/nicohman/rust-wildbow-scraper'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 581acc58307082ac3ed0fca7d2afbe8fc3ea3974 [INFO] sha for GitHub repo nicohman/rust-wildbow-scraper: 581acc58307082ac3ed0fca7d2afbe8fc3ea3974 [INFO] validating manifest of nicohman/rust-wildbow-scraper 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 nicohman/rust-wildbow-scraper 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 nicohman/rust-wildbow-scraper [INFO] finished frobbing nicohman/rust-wildbow-scraper [INFO] frobbed toml for nicohman/rust-wildbow-scraper written to work/ex/clippy-test-run/sources/stable/gh/nicohman/rust-wildbow-scraper/Cargo.toml [INFO] started frobbing nicohman/rust-wildbow-scraper [INFO] finished frobbing nicohman/rust-wildbow-scraper [INFO] frobbed toml for nicohman/rust-wildbow-scraper written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/nicohman/rust-wildbow-scraper/Cargo.toml [INFO] crate nicohman/rust-wildbow-scraper has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] Blocking waiting for file lock on the registry index [INFO] linting nicohman/rust-wildbow-scraper against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/nicohman/rust-wildbow-scraper:/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] 91de604eba26520d47e7afe4dc8b0afb883f6e75d8471b2b274abccfe7d55340 [INFO] running `"docker" "start" "-a" "91de604eba26520d47e7afe4dc8b0afb883f6e75d8471b2b274abccfe7d55340"` [INFO] [stderr] Checking argparse v0.2.2 [INFO] [stderr] Compiling bzip2-sys v0.1.6 [INFO] [stderr] Compiling miniz_oxide_c_api v0.1.3 [INFO] [stderr] Checking h2 v0.1.12 [INFO] [stderr] Checking tokio-threadpool v0.1.6 [INFO] [stderr] Compiling string_cache_codegen v0.4.1 [INFO] [stderr] Checking tokio-reactor v0.1.5 [INFO] [stderr] Checking flate2 v1.0.2 [INFO] [stderr] Compiling string_cache v0.6.2 [INFO] [stderr] Compiling markup5ever v0.3.2 [INFO] [stderr] Checking tokio-uds v0.2.1 [INFO] [stderr] Checking tokio-udp v0.1.2 [INFO] [stderr] Checking tokio-tcp v0.1.1 [INFO] [stderr] Checking bzip2 v0.3.3 [INFO] [stderr] Checking tokio-fs v0.1.3 [INFO] [stderr] Checking zip v0.4.2 [INFO] [stderr] Checking tokio v0.1.8 [INFO] [stderr] Checking hyper v0.12.10 [INFO] [stderr] Checking html5ever v0.18.0 [INFO] [stderr] Checking hyper-tls v0.3.0 [INFO] [stderr] Checking select v0.4.2 [INFO] [stderr] Checking reqwest v0.9.3 [INFO] [stderr] Checking gen-epub-book v2.3.1 [INFO] [stderr] Checking rust-wildbow-scraper v1.0.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused import: `StoreTrue` [INFO] [stderr] --> src/main.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use argparse::{ArgumentParser, StoreTrue, PushConst, StoreConst}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::env` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::env; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:46:5 [INFO] [stderr] | [INFO] [stderr] 46 | / return match key { [INFO] [stderr] 47 | | "worm" => Book { [INFO] [stderr] 48 | | title: String::from("Worm"), [INFO] [stderr] 49 | | start: String::from("parahumans.wordpress.com/2011/06/11/1-1/"), [INFO] [stderr] ... | [INFO] [stderr] 103 | | [INFO] [stderr] 104 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 46 | match key { [INFO] [stderr] 47 | "worm" => Book { [INFO] [stderr] 48 | title: String::from("Worm"), [INFO] [stderr] 49 | start: String::from("parahumans.wordpress.com/2011/06/11/1-1/"), [INFO] [stderr] 50 | desc: String::from( [INFO] [stderr] 51 | "An introverted teenage girl with an unconventional superpower, Taylor goes out in costume to find escape from a deeply unhappy and frustrated civilian life. Her first attempt at taking down a supervillain sees her mistaken for one, thrusting her into the midst of the local ‘cape’ scene’s politics, unwritten rules, and ambiguous morals. As she risks life and limb, Taylor faces the dilemma of having to do the wrong things for the right reasons.", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:253:5 [INFO] [stderr] | [INFO] [stderr] 253 | / return DownloadedBook { [INFO] [stderr] 254 | | title: book.title, [INFO] [stderr] 255 | | content: done.1, [INFO] [stderr] 256 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 253 | DownloadedBook { [INFO] [stderr] 254 | title: book.title, [INFO] [stderr] 255 | content: done.1, [INFO] [stderr] 256 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/main.rs:217:16 [INFO] [stderr] | [INFO] [stderr] 217 | } else if yes.is_some() { [INFO] [stderr] | ________________^ [INFO] [stderr] 218 | | if yes.unwrap() { [INFO] [stderr] 219 | | elements.push(BookElement::NetworkCover(Url::parse(&cover).unwrap())); [INFO] [stderr] 220 | | } [INFO] [stderr] 221 | | } [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] 217 | } else if yes.is_some() && yes.unwrap() { [INFO] [stderr] 218 | elements.push(BookElement::NetworkCover(Url::parse(&cover).unwrap())); [INFO] [stderr] 219 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:316:9 [INFO] [stderr] | [INFO] [stderr] 316 | return tup.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `tup.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:322:9 [INFO] [stderr] | [INFO] [stderr] 322 | return download_iter(tup); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `download_iter(tup)` [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: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:168:9 [INFO] [stderr] | [INFO] [stderr] 168 | let mut r: Option; [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/main.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | io::stdout().flush().ok().expect("Could not flush stdout"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/main.rs:116:12 [INFO] [stderr] | [INFO] [stderr] 116 | buf == "y".to_string() || buf == "yes".to_string() [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"y"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/main.rs:116:38 [INFO] [stderr] | [INFO] [stderr] 116 | buf == "y".to_string() || buf == "yes".to_string() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `"yes"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with position. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/main.rs:176:8 [INFO] [stderr] | [INFO] [stderr] 176 | if which [INFO] [stderr] | ________^ [INFO] [stderr] 177 | | .iter() [INFO] [stderr] 178 | | .position(|ref s| s == &&"all".to_string()) [INFO] [stderr] 179 | | .is_some() [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `position(|ref s| s == &&"all".to_string()).is_some()` with `any(|ref s| s == &&"all".to_string())` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:226:12 [INFO] [stderr] | [INFO] [stderr] 226 | if !fs::metadata(get_con_dir()).is_err() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `fs::metadata(get_con_dir()).is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/main.rs:231:13 [INFO] [stderr] | [INFO] [stderr] 231 | io::stdout().flush().ok().expect("Could not flush stdout"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/main.rs:236:23 [INFO] [stderr] | [INFO] [stderr] 236 | if buf == "y".to_string() || buf == "yes".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"y"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/main.rs:236:49 [INFO] [stderr] | [INFO] [stderr] 236 | if buf == "y".to_string() || buf == "yes".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `"yes"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [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/main.rs:263:17 [INFO] [stderr] | [INFO] [stderr] 263 | let check = doc.find(Descendant( [INFO] [stderr] | _________________^ [INFO] [stderr] 264 | | And(Name("div"), Class("entry-content")), [INFO] [stderr] 265 | | Descendant(Name("p"), Name("a")), [INFO] [stderr] 266 | | )).filter(|x| if x.text().trim() == "Next Chapter" || [INFO] [stderr] ... | [INFO] [stderr] 272 | | }) [INFO] [stderr] 273 | | .next(); [INFO] [stderr] | |_______________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:266:19 [INFO] [stderr] | [INFO] [stderr] 266 | )).filter(|x| if x.text().trim() == "Next Chapter" || [INFO] [stderr] | ___________________^ [INFO] [stderr] 267 | | x.text().trim() == "Next" [INFO] [stderr] 268 | | { [INFO] [stderr] 269 | | true [INFO] [stderr] 270 | | } else { [INFO] [stderr] 271 | | false [INFO] [stderr] 272 | | }) [INFO] [stderr] | |_________^ [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] help: you can reduce it to [INFO] [stderr] | [INFO] [stderr] 266 | )).filter(|x| x.text().trim() == "Next Chapter" || [INFO] [stderr] 267 | x.text().trim() == "Next") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:278:16 [INFO] [stderr] | [INFO] [stderr] 278 | .split("|") [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:298:15 [INFO] [stderr] | [INFO] [stderr] 298 | let num = tup.1.len().clone().to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `tup.1.len()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: unused import: `StoreTrue` [INFO] [stderr] --> src/main.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use argparse::{ArgumentParser, StoreTrue, PushConst, StoreConst}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::env` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::env; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:46:5 [INFO] [stderr] | [INFO] [stderr] 46 | / return match key { [INFO] [stderr] 47 | | "worm" => Book { [INFO] [stderr] 48 | | title: String::from("Worm"), [INFO] [stderr] 49 | | start: String::from("parahumans.wordpress.com/2011/06/11/1-1/"), [INFO] [stderr] ... | [INFO] [stderr] 103 | | [INFO] [stderr] 104 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 46 | match key { [INFO] [stderr] 47 | "worm" => Book { [INFO] [stderr] 48 | title: String::from("Worm"), [INFO] [stderr] 49 | start: String::from("parahumans.wordpress.com/2011/06/11/1-1/"), [INFO] [stderr] 50 | desc: String::from( [INFO] [stderr] 51 | "An introverted teenage girl with an unconventional superpower, Taylor goes out in costume to find escape from a deeply unhappy and frustrated civilian life. Her first attempt at taking down a supervillain sees her mistaken for one, thrusting her into the midst of the local ‘cape’ scene’s politics, unwritten rules, and ambiguous morals. As she risks life and limb, Taylor faces the dilemma of having to do the wrong things for the right reasons.", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:253:5 [INFO] [stderr] | [INFO] [stderr] 253 | / return DownloadedBook { [INFO] [stderr] 254 | | title: book.title, [INFO] [stderr] 255 | | content: done.1, [INFO] [stderr] 256 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 253 | DownloadedBook { [INFO] [stderr] 254 | title: book.title, [INFO] [stderr] 255 | content: done.1, [INFO] [stderr] 256 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/main.rs:217:16 [INFO] [stderr] | [INFO] [stderr] 217 | } else if yes.is_some() { [INFO] [stderr] | ________________^ [INFO] [stderr] 218 | | if yes.unwrap() { [INFO] [stderr] 219 | | elements.push(BookElement::NetworkCover(Url::parse(&cover).unwrap())); [INFO] [stderr] 220 | | } [INFO] [stderr] 221 | | } [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] 217 | } else if yes.is_some() && yes.unwrap() { [INFO] [stderr] 218 | elements.push(BookElement::NetworkCover(Url::parse(&cover).unwrap())); [INFO] [stderr] 219 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:316:9 [INFO] [stderr] | [INFO] [stderr] 316 | return tup.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `tup.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:322:9 [INFO] [stderr] | [INFO] [stderr] 322 | return download_iter(tup); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `download_iter(tup)` [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: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:168:9 [INFO] [stderr] | [INFO] [stderr] 168 | let mut r: Option; [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/main.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | io::stdout().flush().ok().expect("Could not flush stdout"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/main.rs:116:12 [INFO] [stderr] | [INFO] [stderr] 116 | buf == "y".to_string() || buf == "yes".to_string() [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"y"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/main.rs:116:38 [INFO] [stderr] | [INFO] [stderr] 116 | buf == "y".to_string() || buf == "yes".to_string() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `"yes"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with position. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/main.rs:176:8 [INFO] [stderr] | [INFO] [stderr] 176 | if which [INFO] [stderr] | ________^ [INFO] [stderr] 177 | | .iter() [INFO] [stderr] 178 | | .position(|ref s| s == &&"all".to_string()) [INFO] [stderr] 179 | | .is_some() [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `position(|ref s| s == &&"all".to_string()).is_some()` with `any(|ref s| s == &&"all".to_string())` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:226:12 [INFO] [stderr] | [INFO] [stderr] 226 | if !fs::metadata(get_con_dir()).is_err() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `fs::metadata(get_con_dir()).is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/main.rs:231:13 [INFO] [stderr] | [INFO] [stderr] 231 | io::stdout().flush().ok().expect("Could not flush stdout"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/main.rs:236:23 [INFO] [stderr] | [INFO] [stderr] 236 | if buf == "y".to_string() || buf == "yes".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"y"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/main.rs:236:49 [INFO] [stderr] | [INFO] [stderr] 236 | if buf == "y".to_string() || buf == "yes".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `"yes"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [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/main.rs:263:17 [INFO] [stderr] | [INFO] [stderr] 263 | let check = doc.find(Descendant( [INFO] [stderr] | _________________^ [INFO] [stderr] 264 | | And(Name("div"), Class("entry-content")), [INFO] [stderr] 265 | | Descendant(Name("p"), Name("a")), [INFO] [stderr] 266 | | )).filter(|x| if x.text().trim() == "Next Chapter" || [INFO] [stderr] ... | [INFO] [stderr] 272 | | }) [INFO] [stderr] 273 | | .next(); [INFO] [stderr] | |_______________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:266:19 [INFO] [stderr] | [INFO] [stderr] 266 | )).filter(|x| if x.text().trim() == "Next Chapter" || [INFO] [stderr] | ___________________^ [INFO] [stderr] 267 | | x.text().trim() == "Next" [INFO] [stderr] 268 | | { [INFO] [stderr] 269 | | true [INFO] [stderr] 270 | | } else { [INFO] [stderr] 271 | | false [INFO] [stderr] 272 | | }) [INFO] [stderr] | |_________^ [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] help: you can reduce it to [INFO] [stderr] | [INFO] [stderr] 266 | )).filter(|x| x.text().trim() == "Next Chapter" || [INFO] [stderr] 267 | x.text().trim() == "Next") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:278:16 [INFO] [stderr] | [INFO] [stderr] 278 | .split("|") [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:298:15 [INFO] [stderr] | [INFO] [stderr] 298 | let num = tup.1.len().clone().to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `tup.1.len()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 44.52s [INFO] running `"docker" "inspect" "91de604eba26520d47e7afe4dc8b0afb883f6e75d8471b2b274abccfe7d55340"` [INFO] running `"docker" "rm" "-f" "91de604eba26520d47e7afe4dc8b0afb883f6e75d8471b2b274abccfe7d55340"` [INFO] [stdout] 91de604eba26520d47e7afe4dc8b0afb883f6e75d8471b2b274abccfe7d55340