[INFO] cloning repository https://github.com/drtconway/mazab [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/drtconway/mazab" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdrtconway%2Fmazab", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdrtconway%2Fmazab'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 1d2ec5ef9a1eae0e1754da68fe66116a0309979c [INFO] linting drtconway/mazab against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdrtconway%2Fmazab" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/drtconway/mazab [INFO] finished tweaking git repo https://github.com/drtconway/mazab [INFO] tweaked toml for git repo https://github.com/drtconway/mazab written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/drtconway/mazab 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/drtconway/mazab 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] warning: unused manifest key: build [INFO] [stderr] help: build is a valid .cargo/config.toml key [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded noodles v0.50.0 [INFO] [stderr] Downloaded noodles-bed v0.10.0 [INFO] [stderr] Downloaded noodles-core v0.12.0 [INFO] [stderr] Downloaded noodles-fastq v0.8.0 [INFO] [stderr] Downloaded noodles-bgzf v0.24.0 [INFO] [stderr] Downloaded noodles-gtf v0.16.0 [INFO] [stderr] Downloaded coroutines v0.2.0 [INFO] [stderr] Downloaded indicatif v0.17.6 [INFO] [stderr] Downloaded noodles-csi v0.24.0 [INFO] [stderr] Downloaded spin v0.4.10 [INFO] [stderr] Downloaded libdeflater v0.12.0 [INFO] [stderr] Downloaded noodles-bam v0.44.0 [INFO] [stderr] Downloaded portable-atomic v1.4.2 [INFO] [stderr] Downloaded core_affinity v0.8.1 [INFO] [stderr] Downloaded serde v1.0.185 [INFO] [stderr] Downloaded libdeflate-sys v0.12.0 [INFO] [stderr] Downloaded gzp v0.11.3 [INFO] [stderr] Downloaded serde_derive v1.0.185 [INFO] [stderr] Downloaded libz-ng-sys v1.1.12 [INFO] [stderr] Downloaded noodles-sam v0.41.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 850dce5f4a079cdb4acf68043a7eacfb0d80425ac2753976f8ac11051a4710a0 [INFO] running `Command { std: "docker" "start" "-a" "850dce5f4a079cdb4acf68043a7eacfb0d80425ac2753976f8ac11051a4710a0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "850dce5f4a079cdb4acf68043a7eacfb0d80425ac2753976f8ac11051a4710a0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "850dce5f4a079cdb4acf68043a7eacfb0d80425ac2753976f8ac11051a4710a0", kill_on_drop: false }` [INFO] [stdout] 850dce5f4a079cdb4acf68043a7eacfb0d80425ac2753976f8ac11051a4710a0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 881ae4e8e477eb347db802009368476a6b0e9a5ebd1424a45788965b4530d661 [INFO] running `Command { std: "docker" "start" "-a" "881ae4e8e477eb347db802009368476a6b0e9a5ebd1424a45788965b4530d661", kill_on_drop: false }` [INFO] [stderr] warning: unused manifest key: build [INFO] [stderr] help: build is a valid .cargo/config.toml key [INFO] [stderr] Compiling libc v0.2.147 [INFO] [stderr] Checking lexical-util v0.8.5 [INFO] [stderr] Checking miniz_oxide v0.7.1 [INFO] [stderr] Compiling futures-core v0.3.28 [INFO] [stderr] Compiling quote v1.0.33 [INFO] [stderr] Checking getrandom v0.2.10 [INFO] [stderr] Checking futures-sink v0.3.28 [INFO] [stderr] Checking noodles-core v0.12.0 [INFO] [stderr] Checking hashbrown v0.14.0 [INFO] [stderr] Checking typenum v1.16.0 [INFO] [stderr] Compiling futures-task v0.3.28 [INFO] [stderr] Compiling futures-channel v0.3.28 [INFO] [stderr] Compiling futures-util v0.3.28 [INFO] [stderr] Compiling syn v2.0.29 [INFO] [stderr] Compiling portable-atomic v1.4.2 [INFO] [stderr] Checking lexical-write-integer v0.8.5 [INFO] [stderr] Checking lexical-parse-integer v0.8.6 [INFO] [stderr] Checking regex-syntax v0.7.4 [INFO] [stderr] Checking lexical-write-float v0.8.5 [INFO] [stderr] Checking lexical-parse-float v0.8.5 [INFO] [stderr] Compiling cc v1.0.83 [INFO] [stderr] Checking indexmap v2.0.0 [INFO] [stderr] Compiling thiserror v1.0.47 [INFO] [stderr] Checking bitflags v2.4.0 [INFO] [stderr] Checking generic-array v0.14.7 [INFO] [stderr] Compiling serde v1.0.185 [INFO] [stderr] Checking futures-io v0.3.28 [INFO] [stderr] Checking lexical-core v0.8.5 [INFO] [stderr] Checking spin v0.9.8 [INFO] [stderr] Compiling cmake v0.1.50 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking nanorand v0.7.0 [INFO] [stderr] Checking console v0.15.7 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking core_affinity v0.8.1 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Checking noodles-bed v0.10.0 [INFO] [stderr] Compiling libz-sys v1.1.12 [INFO] [stderr] Compiling libz-ng-sys v1.1.12 [INFO] [stderr] Compiling libdeflate-sys v0.12.0 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking noodles-fastq v0.8.0 [INFO] [stderr] Checking cpufeatures v0.2.9 [INFO] [stderr] Checking spin v0.4.10 [INFO] [stderr] Checking sha2 v0.10.7 [INFO] [stderr] Checking coroutines v0.2.0 [INFO] [stderr] Checking indicatif v0.17.6 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking threadpool v1.8.1 [INFO] [stderr] Checking regex-automata v0.3.6 [INFO] [stderr] Compiling futures-macro v0.3.28 [INFO] [stderr] Compiling pin-project-internal v1.1.3 [INFO] [stderr] Compiling serde_derive v1.0.185 [INFO] [stderr] Compiling thiserror-impl v1.0.47 [INFO] [stderr] Checking regex v1.9.3 [INFO] [stderr] Checking pin-project v1.1.3 [INFO] [stderr] Checking flume v0.10.14 [INFO] [stderr] Checking libdeflater v0.12.0 [INFO] [stderr] Checking futures-executor v0.3.28 [INFO] [stderr] Checking futures v0.3.28 [INFO] [stderr] Checking docopt v1.1.1 [INFO] [stderr] Checking flate2 v1.0.27 [INFO] [stderr] Checking noodles-bgzf v0.24.0 [INFO] [stderr] Checking gzp v0.11.3 [INFO] [stderr] Checking noodles-csi v0.24.0 [INFO] [stderr] Checking noodles-sam v0.41.0 [INFO] [stderr] Checking noodles-gtf v0.16.0 [INFO] [stderr] Checking noodles-bam v0.44.0 [INFO] [stderr] Checking noodles v0.50.0 [INFO] [stderr] Checking mazab v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: field `id` is never read [INFO] [stdout] --> src/block_writer.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct DataBlock { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 11 | id: String, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Factor` [INFO] [stdout] --> src/factor.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Factor { [INFO] [stdout] 11 | | Factor { [INFO] [stdout] 12 | | levels: Vec::new(), [INFO] [stdout] 13 | | index: HashMap::new(), [INFO] [stdout] 14 | | } [INFO] [stdout] 15 | | } [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] 9 + impl Default for Factor { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `levels` [INFO] [stdout] --> src/factor.rs:20:18 [INFO] [stdout] | [INFO] [stdout] 20 | for i in 0..levels.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] 20 - for i in 0..levels.len() { [INFO] [stdout] 20 + for (i, ) in levels.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: slow zero-filling initialization [INFO] [stdout] --> src/pairer.rs:26:25 [INFO] [stdout] | [INFO] [stdout] 26 | let mut flags = Vec::new(); [INFO] [stdout] | _________________________^ [INFO] [stdout] 27 | | flags.resize(1 << 16, 0); [INFO] [stdout] | |________________________________^ help: consider replacing this with: `vec![0; 1 << 16]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stdout] = note: `#[warn(clippy::slow_vector_initialization)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/pairer.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | while let Some(rec_res) = self.src.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for rec_res in self.src.by_ref()` [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 boolean expression can be simplified [INFO] [stdout] --> src/formatter.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 23 | if pair.0.flags().is_first_segment() != !pair.1.flags().is_first_segment() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `pair.0.flags().is_first_segment() == pair.1.flags().is_first_segment()` [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 can be `std::io::Error::other(_)` [INFO] [stdout] --> src/block_writer.rs:59:25 [INFO] [stdout] | [INFO] [stdout] 59 | None => Err(std::io::Error::new( [INFO] [stdout] | _________________________^ [INFO] [stdout] 60 | | std::io::ErrorKind::Other, [INFO] [stdout] 61 | | "already joined", [INFO] [stdout] 62 | | )), [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] 59 ~ None => Err(std::io::Error::other( [INFO] [stdout] 60 ~ "already joined", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/block_writer.rs:66:30 [INFO] [stdout] | [INFO] [stdout] 66 | .map_err(|_| std::io::Error::new(std::io::ErrorKind::Other, "join 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] 66 - .map_err(|_| std::io::Error::new(std::io::ErrorKind::Other, "join failed")), [INFO] [stdout] 66 + .map_err(|_| std::io::Error::other("join failed")), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Compression` which implements the `Copy` trait [INFO] [stdout] --> src/block_writer.rs:85:51 [INFO] [stdout] | [INFO] [stdout] 85 | let mut gz = GzEncoder::new(blocks.0, compression.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*compression` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Compression` which implements the `Copy` trait [INFO] [stdout] --> src/block_writer.rs:93:51 [INFO] [stdout] | [INFO] [stdout] 93 | let mut gz = GzEncoder::new(blocks.1, compression.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*compression` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/main.rs:20:15 [INFO] [stdout] | [INFO] [stdout] 20 | const USAGE: &'static str = " [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/main.rs:20:15 [INFO] [stdout] | [INFO] [stdout] 20 | const USAGE: &'static str = " [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/main.rs:40:17 [INFO] [stdout] | [INFO] [stdout] 40 | std::io::Error::new(std::io::ErrorKind::Other, "invalid compression specifier") [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] 40 - std::io::Error::new(std::io::ErrorKind::Other, "invalid compression specifier") [INFO] [stdout] 40 + std::io::Error::other("invalid compression specifier") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/main.rs:45:21 [INFO] [stdout] | [INFO] [stdout] 45 | Err(std::io::Error::new( [INFO] [stdout] | _____________________^ [INFO] [stdout] 46 | | std::io::ErrorKind::Other, [INFO] [stdout] 47 | | "compression level must be 0-9", [INFO] [stdout] 48 | | )) [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] 45 ~ Err(std::io::Error::other( [INFO] [stdout] 46 ~ "compression level must be 0-9", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/main.rs:126:6 [INFO] [stdout] | [INFO] [stdout] 126 | ) -> std::io::Result, Box)>>> { [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: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/main.rs:129:8 [INFO] [stdout] | [INFO] [stdout] 129 | Ok(Arc::new(Mutex::new((w1, w2)))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc, Box)>>` is not `Send` and `Sync` as `Mutex<(Box, Box)>` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `Mutex<(Box, Box)>` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] = note: `#[warn(clippy::arc_with_non_send_sync)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/main.rs:136:23 [INFO] [stdout] | [INFO] [stdout] 136 | pub fn make_chan() -> ( [INFO] [stdout] | _______________________^ [INFO] [stdout] 137 | | Option>, [INFO] [stdout] 138 | | Receiver<(usize, Remainder)>, [INFO] [stdout] 139 | | ) { [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] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `flags` [INFO] [stdout] --> src/main.rs:146:14 [INFO] [stdout] | [INFO] [stdout] 146 | for i in 0..flags.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] 146 - for i in 0..flags.len() { [INFO] [stdout] 146 + for (i, ) in flags.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/main.rs:182:5 [INFO] [stdout] | [INFO] [stdout] 182 | while let Some(res_pair) = shuffler.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for res_pair in shuffler.by_ref()` [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: slow zero-filling initialization [INFO] [stdout] --> src/main.rs:278:21 [INFO] [stdout] | [INFO] [stdout] 278 | let mut flags = Vec::new(); [INFO] [stdout] | _____________________^ [INFO] [stdout] 279 | | flags.resize(1 << 16, 0); [INFO] [stdout] | |____________________________^ help: consider replacing this with: `vec![0; 1 << 16]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stdout] = note: `#[warn(clippy::slow_vector_initialization)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: slow zero-filling initialization [INFO] [stdout] --> src/main.rs:311:38 [INFO] [stdout] | [INFO] [stdout] 311 | let mut unpaired_flags = Vec::new(); [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 312 | | unpaired_flags.resize(1 << 16, 0); [INFO] [stdout] | |_____________________________________________^ help: consider replacing this with: `vec![0; 1 << 16]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/main.rs:343:26 [INFO] [stdout] | [INFO] [stdout] 343 | let compression = if args.get_str("-C") != "" && args.get_str("-C") != "none" { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!args.get_str("-C").is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/main.rs:40:17 [INFO] [stdout] | [INFO] [stdout] 40 | std::io::Error::new(std::io::ErrorKind::Other, "invalid compression specifier") [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] 40 - std::io::Error::new(std::io::ErrorKind::Other, "invalid compression specifier") [INFO] [stdout] 40 + std::io::Error::other("invalid compression specifier") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/main.rs:45:21 [INFO] [stdout] | [INFO] [stdout] 45 | Err(std::io::Error::new( [INFO] [stdout] | _____________________^ [INFO] [stdout] 46 | | std::io::ErrorKind::Other, [INFO] [stdout] 47 | | "compression level must be 0-9", [INFO] [stdout] 48 | | )) [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] 45 ~ Err(std::io::Error::other( [INFO] [stdout] 46 ~ "compression level must be 0-9", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `id` is never read [INFO] [stdout] --> src/block_writer.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct DataBlock { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 11 | id: String, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/main.rs:126:6 [INFO] [stdout] | [INFO] [stdout] 126 | ) -> std::io::Result, Box)>>> { [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: you should consider adding a `Default` implementation for `Factor` [INFO] [stdout] --> src/factor.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Factor { [INFO] [stdout] 11 | | Factor { [INFO] [stdout] 12 | | levels: Vec::new(), [INFO] [stdout] 13 | | index: HashMap::new(), [INFO] [stdout] 14 | | } [INFO] [stdout] 15 | | } [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] 9 + impl Default for Factor { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `levels` [INFO] [stdout] --> src/factor.rs:20:18 [INFO] [stdout] | [INFO] [stdout] 20 | for i in 0..levels.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] 20 - for i in 0..levels.len() { [INFO] [stdout] 20 + for (i, ) in levels.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/main.rs:129:8 [INFO] [stdout] | [INFO] [stdout] 129 | Ok(Arc::new(Mutex::new((w1, w2)))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc, Box)>>` is not `Send` and `Sync` as `Mutex<(Box, Box)>` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `Mutex<(Box, Box)>` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] = note: `#[warn(clippy::arc_with_non_send_sync)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/main.rs:136:23 [INFO] [stdout] | [INFO] [stdout] 136 | pub fn make_chan() -> ( [INFO] [stdout] | _______________________^ [INFO] [stdout] 137 | | Option>, [INFO] [stdout] 138 | | Receiver<(usize, Remainder)>, [INFO] [stdout] 139 | | ) { [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] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `flags` [INFO] [stdout] --> src/main.rs:146:14 [INFO] [stdout] | [INFO] [stdout] 146 | for i in 0..flags.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] 146 - for i in 0..flags.len() { [INFO] [stdout] 146 + for (i, ) in flags.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/main.rs:182:5 [INFO] [stdout] | [INFO] [stdout] 182 | while let Some(res_pair) = shuffler.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for res_pair in shuffler.by_ref()` [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: slow zero-filling initialization [INFO] [stdout] --> src/main.rs:278:21 [INFO] [stdout] | [INFO] [stdout] 278 | let mut flags = Vec::new(); [INFO] [stdout] | _____________________^ [INFO] [stdout] 279 | | flags.resize(1 << 16, 0); [INFO] [stdout] | |____________________________^ help: consider replacing this with: `vec![0; 1 << 16]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stdout] = note: `#[warn(clippy::slow_vector_initialization)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: slow zero-filling initialization [INFO] [stdout] --> src/main.rs:311:38 [INFO] [stdout] | [INFO] [stdout] 311 | let mut unpaired_flags = Vec::new(); [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 312 | | unpaired_flags.resize(1 << 16, 0); [INFO] [stdout] | |_____________________________________________^ help: consider replacing this with: `vec![0; 1 << 16]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/main.rs:343:26 [INFO] [stdout] | [INFO] [stdout] 343 | let compression = if args.get_str("-C") != "" && args.get_str("-C") != "none" { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!args.get_str("-C").is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: slow zero-filling initialization [INFO] [stdout] --> src/pairer.rs:26:25 [INFO] [stdout] | [INFO] [stdout] 26 | let mut flags = Vec::new(); [INFO] [stdout] | _________________________^ [INFO] [stdout] 27 | | flags.resize(1 << 16, 0); [INFO] [stdout] | |________________________________^ help: consider replacing this with: `vec![0; 1 << 16]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stdout] = note: `#[warn(clippy::slow_vector_initialization)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/pairer.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | while let Some(rec_res) = self.src.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for rec_res in self.src.by_ref()` [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 boolean expression can be simplified [INFO] [stdout] --> src/formatter.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 23 | if pair.0.flags().is_first_segment() != !pair.1.flags().is_first_segment() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `pair.0.flags().is_first_segment() == pair.1.flags().is_first_segment()` [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 can be `std::io::Error::other(_)` [INFO] [stdout] --> src/block_writer.rs:59:25 [INFO] [stdout] | [INFO] [stdout] 59 | None => Err(std::io::Error::new( [INFO] [stdout] | _________________________^ [INFO] [stdout] 60 | | std::io::ErrorKind::Other, [INFO] [stdout] 61 | | "already joined", [INFO] [stdout] 62 | | )), [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] 59 ~ None => Err(std::io::Error::other( [INFO] [stdout] 60 ~ "already joined", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/block_writer.rs:66:30 [INFO] [stdout] | [INFO] [stdout] 66 | .map_err(|_| std::io::Error::new(std::io::ErrorKind::Other, "join 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] 66 - .map_err(|_| std::io::Error::new(std::io::ErrorKind::Other, "join failed")), [INFO] [stdout] 66 + .map_err(|_| std::io::Error::other("join failed")), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Compression` which implements the `Copy` trait [INFO] [stdout] --> src/block_writer.rs:85:51 [INFO] [stdout] | [INFO] [stdout] 85 | let mut gz = GzEncoder::new(blocks.0, compression.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*compression` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Compression` which implements the `Copy` trait [INFO] [stdout] --> src/block_writer.rs:93:51 [INFO] [stdout] | [INFO] [stdout] 93 | let mut gz = GzEncoder::new(blocks.1, compression.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*compression` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 05s [INFO] running `Command { std: "docker" "inspect" "881ae4e8e477eb347db802009368476a6b0e9a5ebd1424a45788965b4530d661", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "881ae4e8e477eb347db802009368476a6b0e9a5ebd1424a45788965b4530d661", kill_on_drop: false }` [INFO] [stdout] 881ae4e8e477eb347db802009368476a6b0e9a5ebd1424a45788965b4530d661