[INFO] fetching crate bigqueue 0.0.2... [INFO] linting bigqueue-0.0.2 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate bigqueue 0.0.2 into /workspace/builds/worker-4-tc1/source [INFO] started tweaking crates.io crate bigqueue 0.0.2 [INFO] finished tweaking crates.io crate bigqueue 0.0.2 [INFO] tweaked toml for crates.io crate bigqueue 0.0.2 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate bigqueue 0.0.2 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] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 69 packages to latest compatible versions [INFO] [stderr] Adding criterion v0.2.11 (available: v0.8.2) [INFO] [stderr] Adding lru v0.1.17 (available: v0.16.3) [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 csv-core v0.1.13 [INFO] [stderr] Downloaded rand_xoshiro v0.1.0 [INFO] [stderr] Downloaded memmap v0.7.0 [INFO] [stderr] Downloaded criterion v0.2.11 [INFO] [stderr] Downloaded cast v0.2.7 [INFO] [stderr] Downloaded lru v0.1.17 [INFO] [stderr] Downloaded failure_derive v0.1.8 [INFO] [stderr] Downloaded hashbrown v0.5.0 [INFO] [stderr] Downloaded criterion-plot v0.3.1 [INFO] [stderr] Downloaded csv v1.4.0 [INFO] [stderr] Downloaded itertools v0.8.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 0e774df7ebecafc5e810462e2741e62eec7a524795c53a4d184c80f66bd9e708 [INFO] running `Command { std: "docker" "start" "-a" "0e774df7ebecafc5e810462e2741e62eec7a524795c53a4d184c80f66bd9e708", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0e774df7ebecafc5e810462e2741e62eec7a524795c53a4d184c80f66bd9e708", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0e774df7ebecafc5e810462e2741e62eec7a524795c53a4d184c80f66bd9e708", kill_on_drop: false }` [INFO] [stdout] 0e774df7ebecafc5e810462e2741e62eec7a524795c53a4d184c80f66bd9e708 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 03471b59cf21c2b81fb59cb223ecf036a68b7dc5beed0ee0f15f41e97b546b41 [INFO] running `Command { std: "docker" "start" "-a" "03471b59cf21c2b81fb59cb223ecf036a68b7dc5beed0ee0f15f41e97b546b41", kill_on_drop: false }` [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling semver v1.0.27 [INFO] [stderr] Compiling object v0.37.3 [INFO] [stderr] Compiling failure_derive v0.1.8 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Checking adler2 v2.0.1 [INFO] [stderr] Checking rand_core v0.4.2 [INFO] [stderr] Checking gimli v0.32.3 [INFO] [stderr] Compiling rayon-core v1.13.0 [INFO] [stderr] Checking rustc-demangle v0.1.27 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Checking csv-core v0.1.13 [INFO] [stderr] Checking same-file v1.0.6 [INFO] [stderr] Checking rand_core v0.3.1 [INFO] [stderr] Checking hashbrown v0.5.0 [INFO] [stderr] Checking clap v2.34.0 [INFO] [stderr] Checking itertools v0.8.2 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Checking rand_xoshiro v0.1.0 [INFO] [stderr] Checking walkdir v2.5.0 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Checking rand_os v0.1.3 [INFO] [stderr] Checking memmap v0.7.0 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Compiling cast v0.2.7 [INFO] [stderr] Checking lru v0.1.17 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Checking criterion-plot v0.3.1 [INFO] [stderr] Compiling synstructure v0.12.6 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Checking addr2line v0.25.1 [INFO] [stderr] Checking serde_json v1.0.149 [INFO] [stderr] Checking csv v1.4.0 [INFO] [stderr] Checking tinytemplate v1.2.1 [INFO] [stderr] Checking backtrace v0.3.76 [INFO] [stderr] Checking failure v0.1.8 [INFO] [stderr] Checking bigqueue v0.0.2 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/bigqueue.rs:234:26 [INFO] [stdout] | [INFO] [stdout] 234 | let m = unsafe { (&mut (*self.q_head.get()).mmap) }; [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 234 - let m = unsafe { (&mut (*self.q_head.get()).mmap) }; [INFO] [stdout] 234 + let m = unsafe { &mut (*self.q_head.get()).mmap }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/bigqueue.rs:239:26 [INFO] [stdout] | [INFO] [stdout] 239 | let m = unsafe { (&mut (*self.q_tail.get())) }; [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 239 - let m = unsafe { (&mut (*self.q_tail.get())) }; [INFO] [stdout] 239 + let m = unsafe { &mut (*self.q_tail.get()) }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> src/bigqueue.rs:357:41 [INFO] [stdout] | [INFO] [stdout] 357 | fn read_length(&mut self) -> Option<(usize)> { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 357 - fn read_length(&mut self) -> Option<(usize)> { [INFO] [stdout] 357 + fn read_length(&mut self) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/bigqueue.rs:522:17 [INFO] [stdout] | [INFO] [stdout] 522 | () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lib.rs:123:18 [INFO] [stdout] | [INFO] [stdout] 123 | Sender { inner: inner } [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lib.rs:133:20 [INFO] [stdout] | [INFO] [stdout] 133 | Receiver { inner: inner } [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `num_arenas` [INFO] [stdout] --> src/bigqueue.rs:53:13 [INFO] [stdout] | [INFO] [stdout] 53 | let num_arenas = t_aid + 1 - h_aid; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_arenas` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tail` is never read [INFO] [stdout] --> src/bigqueue.rs:59:55 [INFO] [stdout] | [INFO] [stdout] 59 | let mut tail: Option>> = None; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `head` is never read [INFO] [stdout] --> src/bigqueue.rs:60:55 [INFO] [stdout] | [INFO] [stdout] 60 | let mut head: Option>> = None; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_bytes` is never used [INFO] [stdout] --> src/lib.rs:212:4 [INFO] [stdout] | [INFO] [stdout] 212 | fn read_bytes(mmap: &MmapMut, offset: usize, length: u64) -> Option> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `delete_arena_backed_file` is never used [INFO] [stdout] --> src/bigqueue.rs:302:8 [INFO] [stdout] | [INFO] [stdout] 214 | impl BigQueue { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 302 | fn delete_arena_backed_file(&self, aid: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `file` is never read [INFO] [stdout] --> src/bigqueue.rs:431:5 [INFO] [stdout] | [INFO] [stdout] 430 | pub struct Index { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 431 | file: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `flush` is never used [INFO] [stdout] --> src/bigqueue.rs:518:12 [INFO] [stdout] | [INFO] [stdout] 477 | impl Arena { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 518 | pub fn flush(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/bigqueue.rs:41:18 [INFO] [stdout] | [INFO] [stdout] 41 | .expect(&format!("fail to read directory {}", _dir)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("fail to read directory {}", _dir))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/bigqueue.rs:62:70 [INFO] [stdout] | [INFO] [stdout] 62 | let t_arena = BigQueue::open_a_arena(_dir, &q_config, t_aid).expect(&format!("error to memmap data file {}", t_aid)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("error to memmap data file {}", t_aid))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/bigqueue.rs:67:74 [INFO] [stdout] | [INFO] [stdout] 67 | let h_arena = BigQueue::open_a_arena(_dir, &q_config, h_aid).expect(&format!("error to memmap data file {}", h_aid)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("error to memmap data file {}", h_aid))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:119:9 [INFO] [stdout] | [INFO] [stdout] 119 | return Ok(result); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 119 - return Ok(result); [INFO] [stdout] 119 + Ok(result) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:141:9 [INFO] [stdout] | [INFO] [stdout] 141 | return Ok(result); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 141 - return Ok(result); [INFO] [stdout] 141 + Ok(result) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bigqueue.rs:161:17 [INFO] [stdout] | [INFO] [stdout] 161 | head_aid = head_aid + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `head_aid += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bigqueue.rs:191:24 [INFO] [stdout] | [INFO] [stdout] 191 | if ( [INFO] [stdout] | ________________________^ [INFO] [stdout] 192 | | self.tail_aid >= self.head_aid && index_usize < self.head_aid) [INFO] [stdout] 193 | | || [INFO] [stdout] ... | [INFO] [stdout] 198 | | ) { [INFO] [stdout] | |_________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 191 - if ( [INFO] [stdout] 192 - self.tail_aid >= self.head_aid && index_usize < self.head_aid) [INFO] [stdout] 193 - || [INFO] [stdout] 194 - ( [INFO] [stdout] 195 - self.tail_aid < self.head_aid [INFO] [stdout] 196 - && (index_usize > self.tail_aid && index_usize < self.head_aid [INFO] [stdout] 197 - ) [INFO] [stdout] 198 - ) { [INFO] [stdout] 191 + if !(index_usize >= self.head_aid || self.tail_aid < self.head_aid && index_usize <= self.tail_aid) { [INFO] [stdout] | [INFO] [stdout] 191 - if ( [INFO] [stdout] 192 - self.tail_aid >= self.head_aid && index_usize < self.head_aid) [INFO] [stdout] 193 - || [INFO] [stdout] 194 - ( [INFO] [stdout] 195 - self.tail_aid < self.head_aid [INFO] [stdout] 196 - && (index_usize > self.tail_aid && index_usize < self.head_aid [INFO] [stdout] 197 - ) [INFO] [stdout] 198 - ) { [INFO] [stdout] 191 + if (index_usize > self.tail_aid || self.tail_aid >= self.head_aid) && index_usize < self.head_aid { [INFO] [stdout] | [INFO] [stdout] 191 - if ( [INFO] [stdout] 192 - self.tail_aid >= self.head_aid && index_usize < self.head_aid) [INFO] [stdout] 193 - || [INFO] [stdout] 194 - ( [INFO] [stdout] 195 - self.tail_aid < self.head_aid [INFO] [stdout] 196 - && (index_usize > self.tail_aid && index_usize < self.head_aid [INFO] [stdout] 197 - ) [INFO] [stdout] 198 - ) { [INFO] [stdout] 191 + if self.tail_aid >= self.head_aid && index_usize < self.head_aid || index_usize < self.head_aid && index_usize > self.tail_aid { [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/bigqueue.rs:180:9 [INFO] [stdout] | [INFO] [stdout] 180 | / for entry in read_dir_res { [INFO] [stdout] 181 | | if let Ok(entry) = entry { [INFO] [stdout] 182 | | let path = entry.path(); [INFO] [stdout] 183 | | let ext = path.clone().into_os_string().into_string().unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 202 | | }; [INFO] [stdout] 203 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/bigqueue.rs:181:13 [INFO] [stdout] | [INFO] [stdout] 181 | / if let Ok(entry) = entry { [INFO] [stdout] 182 | | let path = entry.path(); [INFO] [stdout] 183 | | let ext = path.clone().into_os_string().into_string().unwrap(); [INFO] [stdout] 184 | | if ext.ends_with(".dat") { [INFO] [stdout] ... | [INFO] [stdout] 202 | | }; [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] 180 ~ for entry in read_dir_res.flatten() { [INFO] [stdout] 181 + let path = entry.path(); [INFO] [stdout] 182 + let ext = path.clone().into_os_string().into_string().unwrap(); [INFO] [stdout] 183 + if ext.ends_with(".dat") { [INFO] [stdout] 184 + let part: Vec<&str> = ext.split("_").collect(); [INFO] [stdout] 185 + if part.len() != 2 { [INFO] [stdout] 186 + continue; [INFO] [stdout] 187 + } [INFO] [stdout] 188 + let part: Vec<&str> = part[1].split(".").collect(); [INFO] [stdout] 189 + let index_usize = part[0].parse::().unwrap(); [INFO] [stdout] 190 + if ( [INFO] [stdout] 191 + self.tail_aid >= self.head_aid && index_usize < self.head_aid) [INFO] [stdout] 192 + || [INFO] [stdout] 193 + ( [INFO] [stdout] 194 + self.tail_aid < self.head_aid [INFO] [stdout] 195 + && (index_usize > self.tail_aid && index_usize < self.head_aid [INFO] [stdout] 196 + ) [INFO] [stdout] 197 + ) { [INFO] [stdout] 198 + if let Ok(_) = fs::remove_file(path) {} [INFO] [stdout] 199 + } [INFO] [stdout] 200 + } [INFO] [stdout] 201 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/bigqueue.rs:199:32 [INFO] [stdout] | [INFO] [stdout] 199 | if let Ok(_) = fs::remove_file(path) {} [INFO] [stdout] | -------^^^^^------------------------ help: try: `if fs::remove_file(path).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:218:9 [INFO] [stdout] | [INFO] [stdout] 218 | return Arena::new(data_path, config.arena_size); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 218 - return Arena::new(data_path, config.arena_size); [INFO] [stdout] 218 + Arena::new(data_path, config.arena_size) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:235:9 [INFO] [stdout] | [INFO] [stdout] 235 | return m; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 235 - return m; [INFO] [stdout] 235 + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:240:9 [INFO] [stdout] | [INFO] [stdout] 240 | return m; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 240 - return m; [INFO] [stdout] 240 + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:290:9 [INFO] [stdout] | [INFO] [stdout] 290 | return Arena::new(data_path, self.config.arena_size); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 290 - return Arena::new(data_path, self.config.arena_size); [INFO] [stdout] 290 + Arena::new(data_path, self.config.arena_size) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:299:9 [INFO] [stdout] | [INFO] [stdout] 299 | return Arena::new(data_path, self.config.arena_size); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 299 - return Arena::new(data_path, self.config.arena_size); [INFO] [stdout] 299 + Arena::new(data_path, self.config.arena_size) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/bigqueue.rs:304:16 [INFO] [stdout] | [INFO] [stdout] 304 | if let Err(_) = fs::remove_file(file_path) { [INFO] [stdout] | -------^^^^^^----------------------------- help: try: `if fs::remove_file(file_path).is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bigqueue.rs:318:9 [INFO] [stdout] | [INFO] [stdout] 318 | i_offset = i_offset + 8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `i_offset += 8` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bigqueue.rs:337:17 [INFO] [stdout] | [INFO] [stdout] 337 | count = count + write_in.len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `count += write_in.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bigqueue.rs:389:21 [INFO] [stdout] | [INFO] [stdout] 389 | i_length = i_length - slice.len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `i_length -= slice.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/bigqueue.rs:415:5 [INFO] [stdout] | [INFO] [stdout] 415 | / for entry in read_dir_res { [INFO] [stdout] 416 | | if let Ok(entry) = entry { [INFO] [stdout] 417 | | let path = entry.path(); [INFO] [stdout] 418 | | let ext = path.clone().into_os_string().into_string().unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 422 | | }; [INFO] [stdout] 423 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/bigqueue.rs:416:9 [INFO] [stdout] | [INFO] [stdout] 416 | / if let Ok(entry) = entry { [INFO] [stdout] 417 | | let path = entry.path(); [INFO] [stdout] 418 | | let ext = path.clone().into_os_string().into_string().unwrap(); [INFO] [stdout] 419 | | if ext.ends_with(".dat") { [INFO] [stdout] ... | [INFO] [stdout] 422 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 415 ~ for entry in read_dir_res.flatten() { [INFO] [stdout] 416 + let path = entry.path(); [INFO] [stdout] 417 + let ext = path.clone().into_os_string().into_string().unwrap(); [INFO] [stdout] 418 + if ext.ends_with(".dat") { [INFO] [stdout] 419 + fs::remove_file(path).expect("Failed to remove a file"); [INFO] [stdout] 420 + } [INFO] [stdout] 421 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:485:17 [INFO] [stdout] | [INFO] [stdout] 485 | return Err(Error::Io(e)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 485 - return Err(Error::Io(e)); [INFO] [stdout] 485 + Err(Error::Io(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/bigqueue.rs:482:14 [INFO] [stdout] | [INFO] [stdout] 482 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/bigqueue.rs:519:9 [INFO] [stdout] | [INFO] [stdout] 519 | / match self.mmap.flush() { [INFO] [stdout] 520 | | Ok(v) => v, [INFO] [stdout] 521 | | Err(_) => { [INFO] [stdout] 522 | | () [INFO] [stdout] 523 | | } [INFO] [stdout] 524 | | } [INFO] [stdout] | |_________^ help: try: `if let Ok(v) = self.mmap.flush() { v }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match can be simplified with `.unwrap_or_default()` [INFO] [stdout] --> src/bigqueue.rs:519:9 [INFO] [stdout] | [INFO] [stdout] 519 | / match self.mmap.flush() { [INFO] [stdout] 520 | | Ok(v) => v, [INFO] [stdout] 521 | | Err(_) => { [INFO] [stdout] 522 | | () [INFO] [stdout] 523 | | } [INFO] [stdout] 524 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.mmap.flush().unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Config` [INFO] [stdout] --> src/lib.rs:173:5 [INFO] [stdout] | [INFO] [stdout] 173 | / pub fn new() -> Config { [INFO] [stdout] 174 | | Config { [INFO] [stdout] 175 | | arena_size: DEFAULT_ARENA_SIZE, [INFO] [stdout] 176 | | max_in_mem_arenas: MIN_MAX_IN_MEM_ARENAS, [INFO] [stdout] 177 | | } [INFO] [stdout] 178 | | } [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] 172 + impl Default for Config { [INFO] [stdout] 173 + fn default() -> Self { [INFO] [stdout] 174 + Self::new() [INFO] [stdout] 175 + } [INFO] [stdout] 176 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/lib.rs:183:28 [INFO] [stdout] | [INFO] [stdout] 183 | let r = Range { start: offset as usize, end: (offset + 8) as usize }; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/lib.rs:183:50 [INFO] [stdout] | [INFO] [stdout] 183 | let r = Range { start: offset as usize, end: (offset + 8) as usize }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `(offset + 8)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/lib.rs:194:41 [INFO] [stdout] | [INFO] [stdout] 194 | let r = Range { start: offset, end: (offset + bytes_length) as usize }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(offset + bytes_length)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/lib.rs:141:10 [INFO] [stdout] | [INFO] [stdout] 141 | #[derive(Fail, Debug)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Fail` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_Fail_FOR_Error` [INFO] [stdout] 142 | pub enum Error { [INFO] [stdout] | ----- `Error` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/lib.rs:141:10 [INFO] [stdout] | [INFO] [stdout] 141 | #[derive(Fail, Debug)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Display` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_core_fmt_Display_FOR_Error` [INFO] [stdout] 142 | pub enum Error { [INFO] [stdout] | ----- `Error` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:147:9 [INFO] [stdout] | [INFO] [stdout] 147 | self.write_bytes(n_offset, bytes); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 147 | let _ = self.write_bytes(n_offset, bytes); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:162:17 [INFO] [stdout] | [INFO] [stdout] 162 | self.flip_head_page_to(head_aid); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 162 | let _ = self.flip_head_page_to(head_aid); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:222:9 [INFO] [stdout] | [INFO] [stdout] 222 | self.index.set_head(aid, offset); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 222 | let _ = self.index.set_head(aid, offset); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:228:9 [INFO] [stdout] | [INFO] [stdout] 228 | self.index.set_tail(aid, offset); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 228 | let _ = self.index.set_tail(aid, offset); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:317:9 [INFO] [stdout] | [INFO] [stdout] 317 | self.get_tail().write_u64_at(i_offset, length); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 317 | let _ = self.get_tail().write_u64_at(i_offset, length); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:361:13 [INFO] [stdout] | [INFO] [stdout] 361 | self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 361 | let _ = self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:367:17 [INFO] [stdout] | [INFO] [stdout] 367 | self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 367 | let _ = self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:391:21 [INFO] [stdout] | [INFO] [stdout] 391 | self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 391 | let _ = self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:400:25 [INFO] [stdout] | [INFO] [stdout] 400 | self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 400 | let _ = self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking criterion v0.2.11 [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/bigqueue.rs:234:26 [INFO] [stdout] | [INFO] [stdout] 234 | let m = unsafe { (&mut (*self.q_head.get()).mmap) }; [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 234 - let m = unsafe { (&mut (*self.q_head.get()).mmap) }; [INFO] [stdout] 234 + let m = unsafe { &mut (*self.q_head.get()).mmap }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/bigqueue.rs:239:26 [INFO] [stdout] | [INFO] [stdout] 239 | let m = unsafe { (&mut (*self.q_tail.get())) }; [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 239 - let m = unsafe { (&mut (*self.q_tail.get())) }; [INFO] [stdout] 239 + let m = unsafe { &mut (*self.q_tail.get()) }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> src/bigqueue.rs:357:41 [INFO] [stdout] | [INFO] [stdout] 357 | fn read_length(&mut self) -> Option<(usize)> { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 357 - fn read_length(&mut self) -> Option<(usize)> { [INFO] [stdout] 357 + fn read_length(&mut self) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/bigqueue.rs:522:17 [INFO] [stdout] | [INFO] [stdout] 522 | () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lib.rs:123:18 [INFO] [stdout] | [INFO] [stdout] 123 | Sender { inner: inner } [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lib.rs:133:20 [INFO] [stdout] | [INFO] [stdout] 133 | Receiver { inner: inner } [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `num_arenas` [INFO] [stdout] --> src/bigqueue.rs:53:13 [INFO] [stdout] | [INFO] [stdout] 53 | let num_arenas = t_aid + 1 - h_aid; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_arenas` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tail` is never read [INFO] [stdout] --> src/bigqueue.rs:59:55 [INFO] [stdout] | [INFO] [stdout] 59 | let mut tail: Option>> = None; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `head` is never read [INFO] [stdout] --> src/bigqueue.rs:60:55 [INFO] [stdout] | [INFO] [stdout] 60 | let mut head: Option>> = None; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_bytes` is never used [INFO] [stdout] --> src/lib.rs:212:4 [INFO] [stdout] | [INFO] [stdout] 212 | fn read_bytes(mmap: &MmapMut, offset: usize, length: u64) -> Option> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `delete_arena_backed_file` is never used [INFO] [stdout] --> src/bigqueue.rs:302:8 [INFO] [stdout] | [INFO] [stdout] 214 | impl BigQueue { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 302 | fn delete_arena_backed_file(&self, aid: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `file` is never read [INFO] [stdout] --> src/bigqueue.rs:431:5 [INFO] [stdout] | [INFO] [stdout] 430 | pub struct Index { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 431 | file: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/bigqueue.rs:41:18 [INFO] [stdout] | [INFO] [stdout] 41 | .expect(&format!("fail to read directory {}", _dir)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("fail to read directory {}", _dir))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/bigqueue.rs:62:70 [INFO] [stdout] | [INFO] [stdout] 62 | let t_arena = BigQueue::open_a_arena(_dir, &q_config, t_aid).expect(&format!("error to memmap data file {}", t_aid)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("error to memmap data file {}", t_aid))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/bigqueue.rs:67:74 [INFO] [stdout] | [INFO] [stdout] 67 | let h_arena = BigQueue::open_a_arena(_dir, &q_config, h_aid).expect(&format!("error to memmap data file {}", h_aid)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("error to memmap data file {}", h_aid))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:119:9 [INFO] [stdout] | [INFO] [stdout] 119 | return Ok(result); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 119 - return Ok(result); [INFO] [stdout] 119 + Ok(result) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:141:9 [INFO] [stdout] | [INFO] [stdout] 141 | return Ok(result); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 141 - return Ok(result); [INFO] [stdout] 141 + Ok(result) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bigqueue.rs:161:17 [INFO] [stdout] | [INFO] [stdout] 161 | head_aid = head_aid + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `head_aid += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bigqueue.rs:191:24 [INFO] [stdout] | [INFO] [stdout] 191 | if ( [INFO] [stdout] | ________________________^ [INFO] [stdout] 192 | | self.tail_aid >= self.head_aid && index_usize < self.head_aid) [INFO] [stdout] 193 | | || [INFO] [stdout] ... | [INFO] [stdout] 198 | | ) { [INFO] [stdout] | |_________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 191 - if ( [INFO] [stdout] 192 - self.tail_aid >= self.head_aid && index_usize < self.head_aid) [INFO] [stdout] 193 - || [INFO] [stdout] 194 - ( [INFO] [stdout] 195 - self.tail_aid < self.head_aid [INFO] [stdout] 196 - && (index_usize > self.tail_aid && index_usize < self.head_aid [INFO] [stdout] 197 - ) [INFO] [stdout] 198 - ) { [INFO] [stdout] 191 + if !(index_usize >= self.head_aid || self.tail_aid < self.head_aid && index_usize <= self.tail_aid) { [INFO] [stdout] | [INFO] [stdout] 191 - if ( [INFO] [stdout] 192 - self.tail_aid >= self.head_aid && index_usize < self.head_aid) [INFO] [stdout] 193 - || [INFO] [stdout] 194 - ( [INFO] [stdout] 195 - self.tail_aid < self.head_aid [INFO] [stdout] 196 - && (index_usize > self.tail_aid && index_usize < self.head_aid [INFO] [stdout] 197 - ) [INFO] [stdout] 198 - ) { [INFO] [stdout] 191 + if (index_usize > self.tail_aid || self.tail_aid >= self.head_aid) && index_usize < self.head_aid { [INFO] [stdout] | [INFO] [stdout] 191 - if ( [INFO] [stdout] 192 - self.tail_aid >= self.head_aid && index_usize < self.head_aid) [INFO] [stdout] 193 - || [INFO] [stdout] 194 - ( [INFO] [stdout] 195 - self.tail_aid < self.head_aid [INFO] [stdout] 196 - && (index_usize > self.tail_aid && index_usize < self.head_aid [INFO] [stdout] 197 - ) [INFO] [stdout] 198 - ) { [INFO] [stdout] 191 + if self.tail_aid >= self.head_aid && index_usize < self.head_aid || index_usize < self.head_aid && index_usize > self.tail_aid { [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/bigqueue.rs:180:9 [INFO] [stdout] | [INFO] [stdout] 180 | / for entry in read_dir_res { [INFO] [stdout] 181 | | if let Ok(entry) = entry { [INFO] [stdout] 182 | | let path = entry.path(); [INFO] [stdout] 183 | | let ext = path.clone().into_os_string().into_string().unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 202 | | }; [INFO] [stdout] 203 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/bigqueue.rs:181:13 [INFO] [stdout] | [INFO] [stdout] 181 | / if let Ok(entry) = entry { [INFO] [stdout] 182 | | let path = entry.path(); [INFO] [stdout] 183 | | let ext = path.clone().into_os_string().into_string().unwrap(); [INFO] [stdout] 184 | | if ext.ends_with(".dat") { [INFO] [stdout] ... | [INFO] [stdout] 202 | | }; [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] 180 ~ for entry in read_dir_res.flatten() { [INFO] [stdout] 181 + let path = entry.path(); [INFO] [stdout] 182 + let ext = path.clone().into_os_string().into_string().unwrap(); [INFO] [stdout] 183 + if ext.ends_with(".dat") { [INFO] [stdout] 184 + let part: Vec<&str> = ext.split("_").collect(); [INFO] [stdout] 185 + if part.len() != 2 { [INFO] [stdout] 186 + continue; [INFO] [stdout] 187 + } [INFO] [stdout] 188 + let part: Vec<&str> = part[1].split(".").collect(); [INFO] [stdout] 189 + let index_usize = part[0].parse::().unwrap(); [INFO] [stdout] 190 + if ( [INFO] [stdout] 191 + self.tail_aid >= self.head_aid && index_usize < self.head_aid) [INFO] [stdout] 192 + || [INFO] [stdout] 193 + ( [INFO] [stdout] 194 + self.tail_aid < self.head_aid [INFO] [stdout] 195 + && (index_usize > self.tail_aid && index_usize < self.head_aid [INFO] [stdout] 196 + ) [INFO] [stdout] 197 + ) { [INFO] [stdout] 198 + if let Ok(_) = fs::remove_file(path) {} [INFO] [stdout] 199 + } [INFO] [stdout] 200 + } [INFO] [stdout] 201 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/bigqueue.rs:199:32 [INFO] [stdout] | [INFO] [stdout] 199 | if let Ok(_) = fs::remove_file(path) {} [INFO] [stdout] | -------^^^^^------------------------ help: try: `if fs::remove_file(path).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:218:9 [INFO] [stdout] | [INFO] [stdout] 218 | return Arena::new(data_path, config.arena_size); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 218 - return Arena::new(data_path, config.arena_size); [INFO] [stdout] 218 + Arena::new(data_path, config.arena_size) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:235:9 [INFO] [stdout] | [INFO] [stdout] 235 | return m; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 235 - return m; [INFO] [stdout] 235 + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:240:9 [INFO] [stdout] | [INFO] [stdout] 240 | return m; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 240 - return m; [INFO] [stdout] 240 + m [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:290:9 [INFO] [stdout] | [INFO] [stdout] 290 | return Arena::new(data_path, self.config.arena_size); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 290 - return Arena::new(data_path, self.config.arena_size); [INFO] [stdout] 290 + Arena::new(data_path, self.config.arena_size) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:299:9 [INFO] [stdout] | [INFO] [stdout] 299 | return Arena::new(data_path, self.config.arena_size); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 299 - return Arena::new(data_path, self.config.arena_size); [INFO] [stdout] 299 + Arena::new(data_path, self.config.arena_size) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/bigqueue.rs:304:16 [INFO] [stdout] | [INFO] [stdout] 304 | if let Err(_) = fs::remove_file(file_path) { [INFO] [stdout] | -------^^^^^^----------------------------- help: try: `if fs::remove_file(file_path).is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bigqueue.rs:318:9 [INFO] [stdout] | [INFO] [stdout] 318 | i_offset = i_offset + 8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `i_offset += 8` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bigqueue.rs:337:17 [INFO] [stdout] | [INFO] [stdout] 337 | count = count + write_in.len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `count += write_in.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/bigqueue.rs:389:21 [INFO] [stdout] | [INFO] [stdout] 389 | i_length = i_length - slice.len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `i_length -= slice.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/bigqueue.rs:415:5 [INFO] [stdout] | [INFO] [stdout] 415 | / for entry in read_dir_res { [INFO] [stdout] 416 | | if let Ok(entry) = entry { [INFO] [stdout] 417 | | let path = entry.path(); [INFO] [stdout] 418 | | let ext = path.clone().into_os_string().into_string().unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 422 | | }; [INFO] [stdout] 423 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/bigqueue.rs:416:9 [INFO] [stdout] | [INFO] [stdout] 416 | / if let Ok(entry) = entry { [INFO] [stdout] 417 | | let path = entry.path(); [INFO] [stdout] 418 | | let ext = path.clone().into_os_string().into_string().unwrap(); [INFO] [stdout] 419 | | if ext.ends_with(".dat") { [INFO] [stdout] ... | [INFO] [stdout] 422 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 415 ~ for entry in read_dir_res.flatten() { [INFO] [stdout] 416 + let path = entry.path(); [INFO] [stdout] 417 + let ext = path.clone().into_os_string().into_string().unwrap(); [INFO] [stdout] 418 + if ext.ends_with(".dat") { [INFO] [stdout] 419 + fs::remove_file(path).expect("Failed to remove a file"); [INFO] [stdout] 420 + } [INFO] [stdout] 421 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/bigqueue.rs:485:17 [INFO] [stdout] | [INFO] [stdout] 485 | return Err(Error::Io(e)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 485 - return Err(Error::Io(e)); [INFO] [stdout] 485 + Err(Error::Io(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/bigqueue.rs:482:14 [INFO] [stdout] | [INFO] [stdout] 482 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/bigqueue.rs:519:9 [INFO] [stdout] | [INFO] [stdout] 519 | / match self.mmap.flush() { [INFO] [stdout] 520 | | Ok(v) => v, [INFO] [stdout] 521 | | Err(_) => { [INFO] [stdout] 522 | | () [INFO] [stdout] 523 | | } [INFO] [stdout] 524 | | } [INFO] [stdout] | |_________^ help: try: `if let Ok(v) = self.mmap.flush() { v }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match can be simplified with `.unwrap_or_default()` [INFO] [stdout] --> src/bigqueue.rs:519:9 [INFO] [stdout] | [INFO] [stdout] 519 | / match self.mmap.flush() { [INFO] [stdout] 520 | | Ok(v) => v, [INFO] [stdout] 521 | | Err(_) => { [INFO] [stdout] 522 | | () [INFO] [stdout] 523 | | } [INFO] [stdout] 524 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.mmap.flush().unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Config` [INFO] [stdout] --> src/lib.rs:173:5 [INFO] [stdout] | [INFO] [stdout] 173 | / pub fn new() -> Config { [INFO] [stdout] 174 | | Config { [INFO] [stdout] 175 | | arena_size: DEFAULT_ARENA_SIZE, [INFO] [stdout] 176 | | max_in_mem_arenas: MIN_MAX_IN_MEM_ARENAS, [INFO] [stdout] 177 | | } [INFO] [stdout] 178 | | } [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] 172 + impl Default for Config { [INFO] [stdout] 173 + fn default() -> Self { [INFO] [stdout] 174 + Self::new() [INFO] [stdout] 175 + } [INFO] [stdout] 176 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/lib.rs:183:28 [INFO] [stdout] | [INFO] [stdout] 183 | let r = Range { start: offset as usize, end: (offset + 8) as usize }; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/lib.rs:183:50 [INFO] [stdout] | [INFO] [stdout] 183 | let r = Range { start: offset as usize, end: (offset + 8) as usize }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `(offset + 8)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/lib.rs:194:41 [INFO] [stdout] | [INFO] [stdout] 194 | let r = Range { start: offset, end: (offset + bytes_length) as usize }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(offset + bytes_length)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/lib.rs:141:10 [INFO] [stdout] | [INFO] [stdout] 141 | #[derive(Fail, Debug)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Fail` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_Fail_FOR_Error` [INFO] [stdout] 142 | pub enum Error { [INFO] [stdout] | ----- `Error` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/lib.rs:141:10 [INFO] [stdout] | [INFO] [stdout] 141 | #[derive(Fail, Debug)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Display` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_core_fmt_Display_FOR_Error` [INFO] [stdout] 142 | pub enum Error { [INFO] [stdout] | ----- `Error` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:147:9 [INFO] [stdout] | [INFO] [stdout] 147 | self.write_bytes(n_offset, bytes); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 147 | let _ = self.write_bytes(n_offset, bytes); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:162:17 [INFO] [stdout] | [INFO] [stdout] 162 | self.flip_head_page_to(head_aid); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 162 | let _ = self.flip_head_page_to(head_aid); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:222:9 [INFO] [stdout] | [INFO] [stdout] 222 | self.index.set_head(aid, offset); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 222 | let _ = self.index.set_head(aid, offset); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:228:9 [INFO] [stdout] | [INFO] [stdout] 228 | self.index.set_tail(aid, offset); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 228 | let _ = self.index.set_tail(aid, offset); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:317:9 [INFO] [stdout] | [INFO] [stdout] 317 | self.get_tail().write_u64_at(i_offset, length); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 317 | let _ = self.get_tail().write_u64_at(i_offset, length); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:361:13 [INFO] [stdout] | [INFO] [stdout] 361 | self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 361 | let _ = self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:367:17 [INFO] [stdout] | [INFO] [stdout] 367 | self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 367 | let _ = self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:391:21 [INFO] [stdout] | [INFO] [stdout] 391 | self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 391 | let _ = self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:400:25 [INFO] [stdout] | [INFO] [stdout] 400 | self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 400 | let _ = self.flip_head_page_to(self.head_aid + 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:547:9 [INFO] [stdout] | [INFO] [stdout] 547 | qi.set_head(1, 3); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 547 | let _ = qi.set_head(1, 3); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:548:9 [INFO] [stdout] | [INFO] [stdout] 548 | qi.set_tail(1, 4); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 548 | let _ = qi.set_tail(1, 4); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:569:9 [INFO] [stdout] | [INFO] [stdout] 569 | t.write_u64_at(0, 100u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 569 | let _ = t.write_u64_at(0, 100u64); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/bigqueue.rs:570:9 [INFO] [stdout] | [INFO] [stdout] 570 | t.write_u64_at(8, 10u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 570 | let _ = t.write_u64_at(8, 10u64); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.92s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: criterion v0.2.11 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` [INFO] running `Command { std: "docker" "inspect" "03471b59cf21c2b81fb59cb223ecf036a68b7dc5beed0ee0f15f41e97b546b41", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "03471b59cf21c2b81fb59cb223ecf036a68b7dc5beed0ee0f15f41e97b546b41", kill_on_drop: false }` [INFO] [stdout] 03471b59cf21c2b81fb59cb223ecf036a68b7dc5beed0ee0f15f41e97b546b41