[INFO] cloning repository https://github.com/sjlynch/RETL [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sjlynch/RETL" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsjlynch%2FRETL", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsjlynch%2FRETL'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 9895fac58b4b0647f4270d496d427c072b714d16 [INFO] linting sjlynch/RETL against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsjlynch%2FRETL" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/sjlynch/RETL [INFO] finished tweaking git repo https://github.com/sjlynch/RETL [INFO] tweaked toml for git repo https://github.com/sjlynch/RETL written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/sjlynch/RETL on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/sjlynch/RETL already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded sysinfo v0.29.11 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 65b71fea7cbc101a9e60a9d198ac59f7a813278325ec9b8cc531b4639b465a9b [INFO] running `Command { std: "docker" "start" "-a" "65b71fea7cbc101a9e60a9d198ac59f7a813278325ec9b8cc531b4639b465a9b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "65b71fea7cbc101a9e60a9d198ac59f7a813278325ec9b8cc531b4639b465a9b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "65b71fea7cbc101a9e60a9d198ac59f7a813278325ec9b8cc531b4639b465a9b", kill_on_drop: false }` [INFO] [stdout] 65b71fea7cbc101a9e60a9d198ac59f7a813278325ec9b8cc531b4639b465a9b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 86278097140a0ac2c8e3b3121210818e287c6ae140f424a17449d64a7d4c5475 [INFO] running `Command { std: "docker" "start" "-a" "86278097140a0ac2c8e3b3121210818e287c6ae140f424a17449d64a7d4c5475", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.175 [INFO] [stderr] Compiling getrandom v0.3.3 [INFO] [stderr] Checking regex-syntax v0.8.6 [INFO] [stderr] Compiling zstd-safe v7.2.4 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking unicode-width v0.2.1 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Compiling anyhow v1.0.99 [INFO] [stderr] Compiling syn v2.0.106 [INFO] [stderr] Checking thread_local v1.1.9 [INFO] [stderr] Checking rustix v1.1.2 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Checking console v0.15.11 [INFO] [stderr] Checking parking_lot_core v0.9.11 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Checking parking_lot v0.12.4 [INFO] [stderr] Checking ahash v0.8.12 [INFO] [stderr] Compiling cc v1.2.34 [INFO] [stderr] Checking indicatif v0.17.11 [INFO] [stderr] Checking tempfile v3.22.0 [INFO] [stderr] Checking regex-automata v0.4.10 [INFO] [stderr] Checking sysinfo v0.29.11 [INFO] [stderr] Compiling zstd-sys v2.0.15+zstd.1.5.7 [INFO] [stderr] Checking regex v1.11.2 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling tracing-attributes v0.1.30 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking tracing-subscriber v0.3.19 [INFO] [stderr] Checking zstd v0.13.3 [INFO] [stderr] Checking serde v1.0.219 [INFO] [stderr] Checking serde_json v1.0.143 [INFO] [stderr] Checking retl v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/dedupe.rs:143:13 [INFO] [stdout] | [INFO] [stdout] 143 | let mut w = NdjsonWriter::create(&tmp, cfg.write_buf_bytes)?; [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/dedupe.rs:175:9 [INFO] [stdout] | [INFO] [stdout] 175 | let mut out = crate::util::create_with_backoff(&tmp_out, 16, 50) [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `shard_paths` is never used [INFO] [stdout] --> src/kv_shard.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 19 | impl ShardedKVWriter { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 60 | fn shard_paths(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extractor_from_value_adapter` is never used [INFO] [stdout] --> src/key_extractor.rs:65:8 [INFO] [stdout] | [INFO] [stdout] 65 | pub fn extractor_from_value_adapter(ex: &KeyExtractor) -> impl '_ + Fn(&Value) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extractor_from_line_adapter` is never used [INFO] [stdout] --> src/key_extractor.rs:70:8 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn extractor_from_line_adapter(ex: &KeyExtractor) -> impl '_ + Fn(&str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/paths.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | / for entry in WalkDir::new(dir).min_depth(1).max_depth(1) { [INFO] [stdout] 32 | | if let Ok(ent) = entry { [INFO] [stdout] 33 | | if let Some(name) = ent.file_name().to_str() { [INFO] [stdout] 34 | | if let Some(caps) = re.captures(name) { [INFO] [stdout] ... | [INFO] [stdout] 42 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/paths.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | / if let Ok(ent) = entry { [INFO] [stdout] 33 | | if let Some(name) = ent.file_name().to_str() { [INFO] [stdout] 34 | | if let Some(caps) = re.captures(name) { [INFO] [stdout] 35 | | let year: u16 = caps[1].parse().unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 41 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 31 ~ for ent in WalkDir::new(dir).min_depth(1).max_depth(1).into_iter().flatten() { [INFO] [stdout] 32 + if let Some(name) = ent.file_name().to_str() { [INFO] [stdout] 33 + if let Some(caps) = re.captures(name) { [INFO] [stdout] 34 + let year: u16 = caps[1].parse().unwrap(); [INFO] [stdout] 35 + let month: u8 = caps[2].parse().unwrap(); [INFO] [stdout] 36 + let ym = YearMonth { year, month }; [INFO] [stdout] 37 + map.insert(ym, ent.path().to_path_buf()); [INFO] [stdout] 38 + } [INFO] [stdout] 39 + } [INFO] [stdout] 40 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/dedupe.rs:143:13 [INFO] [stdout] | [INFO] [stdout] 143 | let mut w = NdjsonWriter::create(&tmp, cfg.write_buf_bytes)?; [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/dedupe.rs:175:9 [INFO] [stdout] | [INFO] [stdout] 175 | let mut out = crate::util::create_with_backoff(&tmp_out, 16, 50) [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `shard_paths` is never used [INFO] [stdout] --> src/kv_shard.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 19 | impl ShardedKVWriter { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 60 | fn shard_paths(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extractor_from_value_adapter` is never used [INFO] [stdout] --> src/key_extractor.rs:65:8 [INFO] [stdout] | [INFO] [stdout] 65 | pub fn extractor_from_value_adapter(ex: &KeyExtractor) -> impl '_ + Fn(&Value) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extractor_from_line_adapter` is never used [INFO] [stdout] --> src/key_extractor.rs:70:8 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn extractor_from_line_adapter(ex: &KeyExtractor) -> impl '_ + Fn(&str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/paths.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | / for entry in WalkDir::new(dir).min_depth(1).max_depth(1) { [INFO] [stdout] 32 | | if let Ok(ent) = entry { [INFO] [stdout] 33 | | if let Some(name) = ent.file_name().to_str() { [INFO] [stdout] 34 | | if let Some(caps) = re.captures(name) { [INFO] [stdout] ... | [INFO] [stdout] 42 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/paths.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | / if let Ok(ent) = entry { [INFO] [stdout] 33 | | if let Some(name) = ent.file_name().to_str() { [INFO] [stdout] 34 | | if let Some(caps) = re.captures(name) { [INFO] [stdout] 35 | | let year: u16 = caps[1].parse().unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 41 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 31 ~ for ent in WalkDir::new(dir).min_depth(1).max_depth(1).into_iter().flatten() { [INFO] [stdout] 32 + if let Some(name) = ent.file_name().to_str() { [INFO] [stdout] 33 + if let Some(caps) = re.captures(name) { [INFO] [stdout] 34 + let year: u16 = caps[1].parse().unwrap(); [INFO] [stdout] 35 + let month: u8 = caps[2].parse().unwrap(); [INFO] [stdout] 36 + let ym = YearMonth { year, month }; [INFO] [stdout] 37 + map.insert(ym, ent.path().to_path_buf()); [INFO] [stdout] 38 + } [INFO] [stdout] 39 + } [INFO] [stdout] 40 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `BuildHasher::hash_one` [INFO] [stdout] --> src/shard.rs:51:10 [INFO] [stdout] | [INFO] [stdout] 51 | (hasher.finish() as usize) % self.count [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_hash_one [INFO] [stdout] = note: `#[warn(clippy::manual_hash_one)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 49 ~ [INFO] [stdout] 50 ~ [INFO] [stdout] 51 ~ (self.state.hash_one(&s) as usize) % self.count [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/shard.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | / if !buf.is_empty() { [INFO] [stdout] 119 | | if seen.insert(buf.clone()) { [INFO] [stdout] 120 | | writer.write_all(buf.as_bytes())?; [INFO] [stdout] 121 | | writer.write_all(b"\n")?; [INFO] [stdout] 122 | | } [INFO] [stdout] 123 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 118 ~ if !buf.is_empty() [INFO] [stdout] 119 ~ && seen.insert(buf.clone()) { [INFO] [stdout] 120 | writer.write_all(buf.as_bytes())?; [INFO] [stdout] 121 | writer.write_all(b"\n")?; [INFO] [stdout] 122 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/shard.rs:164:13 [INFO] [stdout] | [INFO] [stdout] 164 | / if self.reader.is_none() { [INFO] [stdout] 165 | | if self.open_next().ok()? == false { [INFO] [stdout] 166 | | return None; [INFO] [stdout] 167 | | } [INFO] [stdout] 168 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 164 ~ if self.reader.is_none() [INFO] [stdout] 165 ~ && self.open_next().ok()? == false { [INFO] [stdout] 166 | return None; [INFO] [stdout] 167 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/shard.rs:165:20 [INFO] [stdout] | [INFO] [stdout] 165 | if self.open_next().ok()? == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!self.open_next().ok()?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `BuildHasher::hash_one` [INFO] [stdout] --> src/kv_shard.rs:42:10 [INFO] [stdout] | [INFO] [stdout] 42 | (h.finish() as usize) % self.count [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_hash_one [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 40 ~ [INFO] [stdout] 41 ~ [INFO] [stdout] 42 ~ (self.state.hash_one(&k) as usize) % self.count [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `BuildHasher::hash_one` [INFO] [stdout] --> src/shard.rs:51:10 [INFO] [stdout] | [INFO] [stdout] 51 | (hasher.finish() as usize) % self.count [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_hash_one [INFO] [stdout] = note: `#[warn(clippy::manual_hash_one)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 49 ~ [INFO] [stdout] 50 ~ [INFO] [stdout] 51 ~ (self.state.hash_one(&s) as usize) % self.count [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/shard.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | / if !buf.is_empty() { [INFO] [stdout] 119 | | if seen.insert(buf.clone()) { [INFO] [stdout] 120 | | writer.write_all(buf.as_bytes())?; [INFO] [stdout] 121 | | writer.write_all(b"\n")?; [INFO] [stdout] 122 | | } [INFO] [stdout] 123 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 118 ~ if !buf.is_empty() [INFO] [stdout] 119 ~ && seen.insert(buf.clone()) { [INFO] [stdout] 120 | writer.write_all(buf.as_bytes())?; [INFO] [stdout] 121 | writer.write_all(b"\n")?; [INFO] [stdout] 122 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/filters.rs:36:16 [INFO] [stdout] | [INFO] [stdout] 36 | if !allow.binary_search(&a_low).is_ok() { return false; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `allow.binary_search(&a_low).is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/shard.rs:164:13 [INFO] [stdout] | [INFO] [stdout] 164 | / if self.reader.is_none() { [INFO] [stdout] 165 | | if self.open_next().ok()? == false { [INFO] [stdout] 166 | | return None; [INFO] [stdout] 167 | | } [INFO] [stdout] 168 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 164 ~ if self.reader.is_none() [INFO] [stdout] 165 ~ && self.open_next().ok()? == false { [INFO] [stdout] 166 | return None; [INFO] [stdout] 167 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/shard.rs:165:20 [INFO] [stdout] | [INFO] [stdout] 165 | if self.open_next().ok()? == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!self.open_next().ok()?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Result::Err` [INFO] [stdout] --> src/filters.rs:134:14 [INFO] [stdout] | [INFO] [stdout] 134 | let dt = OffsetDateTime::from_unix_timestamp(ts).unwrap_or_else(|_| OffsetDateTime::UNIX_EPOCH); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 134 - let dt = OffsetDateTime::from_unix_timestamp(ts).unwrap_or_else(|_| OffsetDateTime::UNIX_EPOCH); [INFO] [stdout] 134 + let dt = OffsetDateTime::from_unix_timestamp(ts).unwrap_or(OffsetDateTime::UNIX_EPOCH); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `BuildHasher::hash_one` [INFO] [stdout] --> src/kv_shard.rs:42:10 [INFO] [stdout] | [INFO] [stdout] 42 | (h.finish() as usize) % self.count [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_hash_one [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 40 ~ [INFO] [stdout] 41 ~ [INFO] [stdout] 42 ~ (self.state.hash_one(&k) as usize) % self.count [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `flatten()` will run forever if the iterator repeatedly produces an `Err` [INFO] [stdout] --> src/stitch.rs:38:31 [INFO] [stdout] | [INFO] [stdout] 38 | for line in r.lines().flatten() { [INFO] [stdout] | ^^^^^^^^^ help: replace with: `map_while(Result::ok)` [INFO] [stdout] | [INFO] [stdout] note: this expression returning a `std::io::Lines` may produce an infinite number of `Err` in case of a read error [INFO] [stdout] --> src/stitch.rs:38:21 [INFO] [stdout] | [INFO] [stdout] 38 | for line in r.lines().flatten() { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#lines_filter_map_ok [INFO] [stdout] = note: `#[warn(clippy::lines_filter_map_ok)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/stitch.rs:63:27 [INFO] [stdout] | [INFO] [stdout] 63 | pub fn concat_tsvs(parts: &Vec, out_path: &Path, write_buf: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 63 ~ pub fn concat_tsvs(parts: &[PathBuf], out_path: &Path, write_buf: usize) -> Result<()> { [INFO] [stdout] 64 ~ let mut paths = parts.to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/filters.rs:36:16 [INFO] [stdout] | [INFO] [stdout] 36 | if !allow.binary_search(&a_low).is_ok() { return false; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `allow.binary_search(&a_low).is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/concurrency.rs:19:39 [INFO] [stdout] | [INFO] [stdout] 19 | chunk.par_iter().try_for_each(|job| f(job))?; [INFO] [stdout] | ^^^^^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/streaming.rs:38:1 [INFO] [stdout] | [INFO] [stdout] 38 | / pub fn stream_job( [INFO] [stdout] 39 | | job: &FileJob, [INFO] [stdout] 40 | | writer: &mut W, [INFO] [stdout] 41 | | targets: Option<&Vec>, [INFO] [stdout] ... | [INFO] [stdout] 47 | | human_timestamps: bool, [INFO] [stdout] 48 | | ) -> Result { [INFO] [stdout] | |________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Result::Err` [INFO] [stdout] --> src/filters.rs:134:14 [INFO] [stdout] | [INFO] [stdout] 134 | let dt = OffsetDateTime::from_unix_timestamp(ts).unwrap_or_else(|_| OffsetDateTime::UNIX_EPOCH); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 134 - let dt = OffsetDateTime::from_unix_timestamp(ts).unwrap_or_else(|_| OffsetDateTime::UNIX_EPOCH); [INFO] [stdout] 134 + let dt = OffsetDateTime::from_unix_timestamp(ts).unwrap_or(OffsetDateTime::UNIX_EPOCH); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/util.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | /// All entries are normalized (lowercase), then the list is sort+dedup. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 47 | /// All entries are normalized (lowercase), then the list is sort+dedup. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `flatten()` will run forever if the iterator repeatedly produces an `Err` [INFO] [stdout] --> src/util.rs:65:39 [INFO] [stdout] | [INFO] [stdout] 65 | for line in r.lines().flatten() { [INFO] [stdout] | ^^^^^^^^^ help: replace with: `map_while(Result::ok)` [INFO] [stdout] | [INFO] [stdout] note: this expression returning a `std::io::Lines` may produce an infinite number of `Err` in case of a read error [INFO] [stdout] --> src/util.rs:65:29 [INFO] [stdout] | [INFO] [stdout] 65 | for line in r.lines().flatten() { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#lines_filter_map_ok [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `flatten()` will run forever if the iterator repeatedly produces an `Err` [INFO] [stdout] --> src/stitch.rs:38:31 [INFO] [stdout] | [INFO] [stdout] 38 | for line in r.lines().flatten() { [INFO] [stdout] | ^^^^^^^^^ help: replace with: `map_while(Result::ok)` [INFO] [stdout] | [INFO] [stdout] note: this expression returning a `std::io::Lines` may produce an infinite number of `Err` in case of a read error [INFO] [stdout] --> src/stitch.rs:38:21 [INFO] [stdout] | [INFO] [stdout] 38 | for line in r.lines().flatten() { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#lines_filter_map_ok [INFO] [stdout] = note: `#[warn(clippy::lines_filter_map_ok)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/util.rs:130:36 [INFO] [stdout] | [INFO] [stdout] 130 | Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "open failed"))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 130 - Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "open failed"))) [INFO] [stdout] 130 + Err(last_err.unwrap_or_else(|| io::Error::other("open failed"))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/util.rs:148:36 [INFO] [stdout] | [INFO] [stdout] 148 | Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "create failed"))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 148 - Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "create failed"))) [INFO] [stdout] 148 + Err(last_err.unwrap_or_else(|| io::Error::other("create failed"))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/stitch.rs:63:27 [INFO] [stdout] | [INFO] [stdout] 63 | pub fn concat_tsvs(parts: &Vec, out_path: &Path, write_buf: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 63 ~ pub fn concat_tsvs(parts: &[PathBuf], out_path: &Path, write_buf: usize) -> Result<()> { [INFO] [stdout] 64 ~ let mut paths = parts.to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/util.rs:167:36 [INFO] [stdout] | [INFO] [stdout] 167 | Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "remove failed"))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 167 - Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "remove failed"))) [INFO] [stdout] 167 + Err(last_err.unwrap_or_else(|| io::Error::other("remove failed"))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/concurrency.rs:19:39 [INFO] [stdout] | [INFO] [stdout] 19 | chunk.par_iter().try_for_each(|job| f(job))?; [INFO] [stdout] | ^^^^^^^^^^^^ help: replace the closure with the function itself: `&f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/streaming.rs:38:1 [INFO] [stdout] | [INFO] [stdout] 38 | / pub fn stream_job( [INFO] [stdout] 39 | | job: &FileJob, [INFO] [stdout] 40 | | writer: &mut W, [INFO] [stdout] 41 | | targets: Option<&Vec>, [INFO] [stdout] ... | [INFO] [stdout] 47 | | human_timestamps: bool, [INFO] [stdout] 48 | | ) -> Result { [INFO] [stdout] | |________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/util.rs:185:36 [INFO] [stdout] | [INFO] [stdout] 185 | Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "rename failed"))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 185 - Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "rename failed"))) [INFO] [stdout] 185 + Err(last_err.unwrap_or_else(|| io::Error::other("rename failed"))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/util.rs:203:36 [INFO] [stdout] | [INFO] [stdout] 203 | Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "copy failed"))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 203 - Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "copy failed"))) [INFO] [stdout] 203 + Err(last_err.unwrap_or_else(|| io::Error::other("copy failed"))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `RedditETL` [INFO] [stdout] --> src/pipeline.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | / pub fn new() -> Self { [INFO] [stdout] 44 | | Self { opts: ETLOptions::default() } [INFO] [stdout] 45 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 42 + impl Default for RedditETL { [INFO] [stdout] 43 + fn default() -> Self { [INFO] [stdout] 44 + Self::new() [INFO] [stdout] 45 + } [INFO] [stdout] 46 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/util.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | /// All entries are normalized (lowercase), then the list is sort+dedup. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 47 | /// All entries are normalized (lowercase), then the list is sort+dedup. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `flatten()` will run forever if the iterator repeatedly produces an `Err` [INFO] [stdout] --> src/util.rs:65:39 [INFO] [stdout] | [INFO] [stdout] 65 | for line in r.lines().flatten() { [INFO] [stdout] | ^^^^^^^^^ help: replace with: `map_while(Result::ok)` [INFO] [stdout] | [INFO] [stdout] note: this expression returning a `std::io::Lines` may produce an infinite number of `Err` in case of a read error [INFO] [stdout] --> src/util.rs:65:29 [INFO] [stdout] | [INFO] [stdout] 65 | for line in r.lines().flatten() { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#lines_filter_map_ok [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/util.rs:130:36 [INFO] [stdout] | [INFO] [stdout] 130 | Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "open failed"))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 130 - Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "open failed"))) [INFO] [stdout] 130 + Err(last_err.unwrap_or_else(|| io::Error::other("open failed"))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/util.rs:148:36 [INFO] [stdout] | [INFO] [stdout] 148 | Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "create failed"))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 148 - Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "create failed"))) [INFO] [stdout] 148 + Err(last_err.unwrap_or_else(|| io::Error::other("create failed"))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/util.rs:167:36 [INFO] [stdout] | [INFO] [stdout] 167 | Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "remove failed"))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 167 - Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "remove failed"))) [INFO] [stdout] 167 + Err(last_err.unwrap_or_else(|| io::Error::other("remove failed"))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/util.rs:185:36 [INFO] [stdout] | [INFO] [stdout] 185 | Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "rename failed"))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 185 - Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "rename failed"))) [INFO] [stdout] 185 + Err(last_err.unwrap_or_else(|| io::Error::other("rename failed"))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/util.rs:203:36 [INFO] [stdout] | [INFO] [stdout] 203 | Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "copy failed"))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 203 - Err(last_err.unwrap_or_else(|| io::Error::new(io::ErrorKind::Other, "copy failed"))) [INFO] [stdout] 203 + Err(last_err.unwrap_or_else(|| io::Error::other("copy failed"))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `RedditETL` [INFO] [stdout] --> src/pipeline.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | / pub fn new() -> Self { [INFO] [stdout] 44 | | Self { opts: ETLOptions::default() } [INFO] [stdout] 45 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 42 + impl Default for RedditETL { [INFO] [stdout] 43 + fn default() -> Self { [INFO] [stdout] 44 + Self::new() [INFO] [stdout] 45 + } [INFO] [stdout] 46 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/pipeline.rs:231:9 [INFO] [stdout] | [INFO] [stdout] 231 | while let Some(u) = it.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for u in it` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/pipeline.rs:231:9 [INFO] [stdout] | [INFO] [stdout] 231 | while let Some(u) = it.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for u in it` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/pipeline.rs:498:5 [INFO] [stdout] | [INFO] [stdout] 498 | /// Keeps progress/date-bounds/streaming consistent and DRY. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 498 | /// Keeps progress/date-bounds/streaming consistent and DRY. [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `BuildHasher::hash_one` [INFO] [stdout] --> src/parents.rs:50:10 [INFO] [stdout] | [INFO] [stdout] 50 | (h.finish() as usize) % self.count [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_hash_one [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 48 ~ [INFO] [stdout] 49 ~ [INFO] [stdout] 50 ~ (self.rs.hash_one(&id) as usize) % self.count [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `BuildHasher::hash_one` [INFO] [stdout] --> src/parents.rs:94:10 [INFO] [stdout] | [INFO] [stdout] 94 | (h.finish() as usize) % self.count [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_hash_one [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 92 ~ [INFO] [stdout] 93 ~ [INFO] [stdout] 94 ~ (self.rs.hash_one(&id) as usize) % self.count [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `ParentIds` [INFO] [stdout] --> src/parents.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | / pub fn new() -> Self { [INFO] [stdout] 135 | | Self { [INFO] [stdout] 136 | | t1_ids_mem: Some(AHashSet::new()), [INFO] [stdout] 137 | | t3_ids_mem: Some(AHashSet::new()), [INFO] [stdout] ... | [INFO] [stdout] 141 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 133 + impl Default for ParentIds { [INFO] [stdout] 134 + fn default() -> Self { [INFO] [stdout] 135 + Self::new() [INFO] [stdout] 136 + } [INFO] [stdout] 137 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/parents.rs:143:24 [INFO] [stdout] | [INFO] [stdout] 143 | pub fn contains_t1<'a>(&self, id: &'a str, loader: &mut impl FnMut(&Path) -> Result<&AHashSet>) -> Result { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 143 - pub fn contains_t1<'a>(&self, id: &'a str, loader: &mut impl FnMut(&Path) -> Result<&AHashSet>) -> Result { [INFO] [stdout] 143 + pub fn contains_t1(&self, id: &str, loader: &mut impl FnMut(&Path) -> Result<&AHashSet>) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/parents.rs:154:24 [INFO] [stdout] | [INFO] [stdout] 154 | pub fn contains_t3<'a>(&self, id: &'a str, loader: &mut impl FnMut(&Path) -> Result<&AHashSet>) -> Result { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 154 - pub fn contains_t3<'a>(&self, id: &'a str, loader: &mut impl FnMut(&Path) -> Result<&AHashSet>) -> Result { [INFO] [stdout] 154 + pub fn contains_t3(&self, id: &str, loader: &mut impl FnMut(&Path) -> Result<&AHashSet>) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/pipeline.rs:498:5 [INFO] [stdout] | [INFO] [stdout] 498 | /// Keeps progress/date-bounds/streaming consistent and DRY. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 498 | /// Keeps progress/date-bounds/streaming consistent and DRY. [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `BuildHasher::hash_one` [INFO] [stdout] --> src/parents.rs:50:10 [INFO] [stdout] | [INFO] [stdout] 50 | (h.finish() as usize) % self.count [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_hash_one [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 48 ~ [INFO] [stdout] 49 ~ [INFO] [stdout] 50 ~ (self.rs.hash_one(&id) as usize) % self.count [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/parents.rs:336:20 [INFO] [stdout] | [INFO] [stdout] 336 | Ok(cache.get(path).map_or(false, |set| set.contains(id))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 336 - Ok(cache.get(path).map_or(false, |set| set.contains(id))) [INFO] [stdout] 336 + Ok(cache.get(path).is_some_and(|set| set.contains(id))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `BuildHasher::hash_one` [INFO] [stdout] --> src/parents.rs:94:10 [INFO] [stdout] | [INFO] [stdout] 94 | (h.finish() as usize) % self.count [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_hash_one [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 92 ~ [INFO] [stdout] 93 ~ [INFO] [stdout] 94 ~ (self.rs.hash_one(&id) as usize) % self.count [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `ParentIds` [INFO] [stdout] --> src/parents.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | / pub fn new() -> Self { [INFO] [stdout] 135 | | Self { [INFO] [stdout] 136 | | t1_ids_mem: Some(AHashSet::new()), [INFO] [stdout] 137 | | t3_ids_mem: Some(AHashSet::new()), [INFO] [stdout] ... | [INFO] [stdout] 141 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 133 + impl Default for ParentIds { [INFO] [stdout] 134 + fn default() -> Self { [INFO] [stdout] 135 + Self::new() [INFO] [stdout] 136 + } [INFO] [stdout] 137 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/parents.rs:143:24 [INFO] [stdout] | [INFO] [stdout] 143 | pub fn contains_t1<'a>(&self, id: &'a str, loader: &mut impl FnMut(&Path) -> Result<&AHashSet>) -> Result { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 143 - pub fn contains_t1<'a>(&self, id: &'a str, loader: &mut impl FnMut(&Path) -> Result<&AHashSet>) -> Result { [INFO] [stdout] 143 + pub fn contains_t1(&self, id: &str, loader: &mut impl FnMut(&Path) -> Result<&AHashSet>) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/parents.rs:154:24 [INFO] [stdout] | [INFO] [stdout] 154 | pub fn contains_t3<'a>(&self, id: &'a str, loader: &mut impl FnMut(&Path) -> Result<&AHashSet>) -> Result { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 154 - pub fn contains_t3<'a>(&self, id: &'a str, loader: &mut impl FnMut(&Path) -> Result<&AHashSet>) -> Result { [INFO] [stdout] 154 + pub fn contains_t3(&self, id: &str, loader: &mut impl FnMut(&Path) -> Result<&AHashSet>) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/parents.rs:336:20 [INFO] [stdout] | [INFO] [stdout] 336 | Ok(cache.get(path).map_or(false, |set| set.contains(id))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 336 - Ok(cache.get(path).map_or(false, |set| set.contains(id))) [INFO] [stdout] 336 + Ok(cache.get(path).is_some_and(|set| set.contains(id))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `BuildHasher::hash_one` [INFO] [stdout] --> src/partition.rs:67:10 [INFO] [stdout] | [INFO] [stdout] 67 | (h.finish() as usize) % self.writers.len() [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_hash_one [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 65 ~ [INFO] [stdout] 66 ~ [INFO] [stdout] 67 ~ (self.state.hash_one(&user) as usize) % self.writers.len() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `BuildHasher::hash_one` [INFO] [stdout] --> src/bucketing.rs:45:6 [INFO] [stdout] | [INFO] [stdout] 45 | (h.finish() as usize) % parts.max(1) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_hash_one [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 43 ~ [INFO] [stdout] 44 ~ [INFO] [stdout] 45 ~ (state.hash_one(&key) as usize) % parts.max(1) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `BuildHasher::hash_one` [INFO] [stdout] --> src/partition.rs:67:10 [INFO] [stdout] | [INFO] [stdout] 67 | (h.finish() as usize) % self.writers.len() [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_hash_one [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 65 ~ [INFO] [stdout] 66 ~ [INFO] [stdout] 67 ~ (self.state.hash_one(&user) as usize) % self.writers.len() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `BuildHasher::hash_one` [INFO] [stdout] --> src/bucketing.rs:45:6 [INFO] [stdout] | [INFO] [stdout] 45 | (h.finish() as usize) % parts.max(1) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_hash_one [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 43 ~ [INFO] [stdout] 44 ~ [INFO] [stdout] 45 ~ (state.hash_one(&key) as usize) % parts.max(1) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/key_extractor.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | ByValue(Arc Option + Send + Sync>), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/dedupe.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | / if buffered_bytes >= target_bytes || is_low_memory(cfg.soft_low_frac) { [INFO] [stdout] 87 | | if !map.is_empty() { [INFO] [stdout] 88 | | run_idx += 1; [INFO] [stdout] 89 | | let run_path = runs_dir.join(format!("run_{:04}.ndjson", run_idx)); [INFO] [stdout] ... | [INFO] [stdout] 94 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 86 ~ if (buffered_bytes >= target_bytes || is_low_memory(cfg.soft_low_frac)) { [INFO] [stdout] 87 ~ && !map.is_empty() { [INFO] [stdout] 88 | run_idx += 1; [INFO] [stdout] ... [INFO] [stdout] 92 | run_paths.push(run_path); [INFO] [stdout] 93 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/key_extractor.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | ByValue(Arc Option + Send + Sync>), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `readers` [INFO] [stdout] --> src/dedupe.rs:182:14 [INFO] [stdout] | [INFO] [stdout] 182 | for i in 0..readers.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 182 - for i in 0..readers.len() { [INFO] [stdout] 182 + for (i, ) in readers.iter_mut().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/dedupe.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | / if buffered_bytes >= target_bytes || is_low_memory(cfg.soft_low_frac) { [INFO] [stdout] 87 | | if !map.is_empty() { [INFO] [stdout] 88 | | run_idx += 1; [INFO] [stdout] 89 | | let run_path = runs_dir.join(format!("run_{:04}.ndjson", run_idx)); [INFO] [stdout] ... | [INFO] [stdout] 94 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 86 ~ if (buffered_bytes >= target_bytes || is_low_memory(cfg.soft_low_frac)) { [INFO] [stdout] 87 ~ && !map.is_empty() { [INFO] [stdout] 88 | run_idx += 1; [INFO] [stdout] ... [INFO] [stdout] 92 | run_paths.push(run_path); [INFO] [stdout] 93 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `readers` [INFO] [stdout] --> src/dedupe.rs:182:14 [INFO] [stdout] | [INFO] [stdout] 182 | for i in 0..readers.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 182 - for i in 0..readers.len() { [INFO] [stdout] 182 + for (i, ) in readers.iter_mut().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `tempfile::TempDir::into_path`: use TempDir::keep() [INFO] [stdout] --> tests/common/mod.rs:47:20 [INFO] [stdout] | [INFO] [stdout] 47 | let base = dir.into_path(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `tempfile::TempDir::into_path`: use TempDir::keep() [INFO] [stdout] --> tests/common/mod.rs:47:20 [INFO] [stdout] | [INFO] [stdout] 47 | let base = dir.into_path(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `tempfile::TempDir::into_path`: use TempDir::keep() [INFO] [stdout] --> tests/common/mod.rs:47:20 [INFO] [stdout] | [INFO] [stdout] 47 | let base = dir.into_path(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_jsonl_values` is never used [INFO] [stdout] --> tests/common/mod.rs:19:8 [INFO] [stdout] | [INFO] [stdout] 19 | pub fn read_jsonl_values(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_lines` is never used [INFO] [stdout] --> tests/common/mod.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn read_lines(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `add_corrupt_month` is never used [INFO] [stdout] --> tests/common/mod.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn add_corrupt_month(base: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `decompress_zst_lines` is never used [INFO] [stdout] --> tests/common/mod.rs:112:8 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn decompress_zst_lines(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | /// c1 by "alice" replying to submission s1 (t3_s1), includes an http:// URL [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | /// c2 by "charlie" replying to comment c1 (t1_c1) — tests comment-parent resolution [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | /// c3 by "[deleted]" (pseudo user) — tests pseudo user filtering [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> tests/examples_usernames.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | /// Outcome: authors should include "alice" (comment with URL) but not "bob" (title lacks URL) [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 12 | /// Outcome: authors should include "alice" (comment with URL) but not "bob" (title lacks URL) [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> tests/examples_usernames.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | while let Some(u) = it.next() { got.push(u.to_lowercase()); } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for u in it` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_jsonl_values` is never used [INFO] [stdout] --> tests/common/mod.rs:19:8 [INFO] [stdout] | [INFO] [stdout] 19 | pub fn read_jsonl_values(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_lines` is never used [INFO] [stdout] --> tests/common/mod.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn read_lines(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `decompress_zst_lines` is never used [INFO] [stdout] --> tests/common/mod.rs:112:8 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn decompress_zst_lines(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | /// c1 by "alice" replying to submission s1 (t3_s1), includes an http:// URL [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | /// c2 by "charlie" replying to comment c1 (t1_c1) — tests comment-parent resolution [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | /// c3 by "[deleted]" (pseudo user) — tests pseudo user filtering [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> tests/integrity.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | /// Outcome: both modes detect the corruption and return it in the error list. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 10 | /// Outcome: both modes detect the corruption and return it in the error list. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `tempfile::TempDir::into_path`: use TempDir::keep() [INFO] [stdout] --> tests/common/mod.rs:47:20 [INFO] [stdout] | [INFO] [stdout] 47 | let base = dir.into_path(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_jsonl_values` is never used [INFO] [stdout] --> tests/common/mod.rs:19:8 [INFO] [stdout] | [INFO] [stdout] 19 | pub fn read_jsonl_values(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `add_corrupt_month` is never used [INFO] [stdout] --> tests/common/mod.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn add_corrupt_month(base: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `decompress_zst_lines` is never used [INFO] [stdout] --> tests/common/mod.rs:112:8 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn decompress_zst_lines(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | /// c1 by "alice" replying to submission s1 (t3_s1), includes an http:// URL [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | /// c2 by "charlie" replying to comment c1 (t1_c1) — tests comment-parent resolution [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | /// c3 by "[deleted]" (pseudo user) — tests pseudo user filtering [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `tempfile::TempDir::into_path`: use TempDir::keep() [INFO] [stdout] --> tests/common/mod.rs:47:20 [INFO] [stdout] | [INFO] [stdout] 47 | let base = dir.into_path(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `tempfile::TempDir::into_path`: use TempDir::keep() [INFO] [stdout] --> tests/common/mod.rs:47:20 [INFO] [stdout] | [INFO] [stdout] 47 | let base = dir.into_path(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `tempfile::TempDir::into_path`: use TempDir::keep() [INFO] [stdout] --> tests/common/mod.rs:47:20 [INFO] [stdout] | [INFO] [stdout] 47 | let base = dir.into_path(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_jsonl_values` is never used [INFO] [stdout] --> tests/common/mod.rs:19:8 [INFO] [stdout] | [INFO] [stdout] 19 | pub fn read_jsonl_values(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `add_corrupt_month` is never used [INFO] [stdout] --> tests/common/mod.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn add_corrupt_month(base: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `decompress_zst_lines` is never used [INFO] [stdout] --> tests/common/mod.rs:112:8 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn decompress_zst_lines(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_lines` is never used [INFO] [stdout] --> tests/common/mod.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn read_lines(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `add_corrupt_month` is never used [INFO] [stdout] --> tests/common/mod.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn add_corrupt_month(base: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | /// c1 by "alice" replying to submission s1 (t3_s1), includes an http:// URL [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | /// c2 by "charlie" replying to comment c1 (t1_c1) — tests comment-parent resolution [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | /// c1 by "alice" replying to submission s1 (t3_s1), includes an http:// URL [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | /// c2 by "charlie" replying to comment c1 (t1_c1) — tests comment-parent resolution [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | /// c3 by "[deleted]" (pseudo user) — tests pseudo user filtering [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | /// c3 by "[deleted]" (pseudo user) — tests pseudo user filtering [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> tests/extract_and_export.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | /// Checks: file exists, records parse, `created_utc` becomes a string (when present) [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 12 | /// Checks: file exists, records parse, `created_utc` becomes a string (when present) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> tests/extract_and_export.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | /// Expectation: RC_2006-01.zst has 3 lines, RS_2006-01.zst has 2 lines (total 5) [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 47 | /// Expectation: RC_2006-01.zst has 3 lines, RS_2006-01.zst has 2 lines (total 5) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> tests/counts_and_first_seen.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | /// Outcome: Only one comment remains in Jan 2006, so count == 1. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 10 | /// Outcome: Only one comment remains in Jan 2006, so count == 1. [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> tests/counts_and_first_seen.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | /// Outcome: verify counts (alice=1, bob=1, charlie=1) and earliest timestamps. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 33 | /// Outcome: verify counts (alice=1, bob=1, charlie=1) and earliest timestamps. [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_jsonl_values` is never used [INFO] [stdout] --> tests/common/mod.rs:19:8 [INFO] [stdout] | [INFO] [stdout] 19 | pub fn read_jsonl_values(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_lines` is never used [INFO] [stdout] --> tests/common/mod.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn read_lines(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `add_corrupt_month` is never used [INFO] [stdout] --> tests/common/mod.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn add_corrupt_month(base: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `decompress_zst_lines` is never used [INFO] [stdout] --> tests/common/mod.rs:112:8 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn decompress_zst_lines(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_jsonl_values` is never used [INFO] [stdout] --> tests/common/mod.rs:19:8 [INFO] [stdout] | [INFO] [stdout] 19 | pub fn read_jsonl_values(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_lines` is never used [INFO] [stdout] --> tests/common/mod.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn read_lines(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `add_corrupt_month` is never used [INFO] [stdout] --> tests/common/mod.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn add_corrupt_month(base: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `decompress_zst_lines` is never used [INFO] [stdout] --> tests/common/mod.rs:112:8 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn decompress_zst_lines(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | /// c1 by "alice" replying to submission s1 (t3_s1), includes an http:// URL [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | /// c2 by "charlie" replying to comment c1 (t1_c1) — tests comment-parent resolution [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | /// c1 by "alice" replying to submission s1 (t3_s1), includes an http:// URL [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | /// c3 by "[deleted]" (pseudo user) — tests pseudo user filtering [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | /// c2 by "charlie" replying to comment c1 (t1_c1) — tests comment-parent resolution [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | /// c3 by "[deleted]" (pseudo user) — tests pseudo user filtering [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `tempfile::TempDir::into_path`: use TempDir::keep() [INFO] [stdout] --> tests/common/mod.rs:47:20 [INFO] [stdout] | [INFO] [stdout] 47 | let base = dir.into_path(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_jsonl_values` is never used [INFO] [stdout] --> tests/common/mod.rs:19:8 [INFO] [stdout] | [INFO] [stdout] 19 | pub fn read_jsonl_values(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `add_corrupt_month` is never used [INFO] [stdout] --> tests/common/mod.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn add_corrupt_month(base: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `decompress_zst_lines` is never used [INFO] [stdout] --> tests/common/mod.rs:112:8 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn decompress_zst_lines(path: &Path) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | /// c1 by "alice" replying to submission s1 (t3_s1), includes an http:// URL [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | /// c2 by "charlie" replying to comment c1 (t1_c1) — tests comment-parent resolution [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> tests/common/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | /// c3 by "[deleted]" (pseudo user) — tests pseudo user filtering [INFO] [stdout] | ^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> tests/examples.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | /// Expectation: only human authors remain ("alice", "bob", "charlie") [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 11 | /// Expectation: only human authors remain ("alice", "bob", "charlie") [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> tests/examples.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | /// Expectation: 5 total lines == 2 submissions (RS) + 3 comments (RC) [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 36 | /// Expectation: 5 total lines == 2 submissions (RS) + 3 comments (RC) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> tests/examples.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 62 | /// Expectation: RC file has 3 lines, RS file has 2 lines, total 5 [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 62 | /// Expectation: RC file has 3 lines, RS file has 2 lines, total 5 [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 25.11s [INFO] running `Command { std: "docker" "inspect" "86278097140a0ac2c8e3b3121210818e287c6ae140f424a17449d64a7d4c5475", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "86278097140a0ac2c8e3b3121210818e287c6ae140f424a17449d64a7d4c5475", kill_on_drop: false }` [INFO] [stdout] 86278097140a0ac2c8e3b3121210818e287c6ae140f424a17449d64a7d4c5475