[INFO] crate rdiff 0.1.2 is already in cache [INFO] extracting crate rdiff 0.1.2 into work/ex/clippy-test-run/sources/stable/reg/rdiff/0.1.2 [INFO] extracting crate rdiff 0.1.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rdiff/0.1.2 [INFO] validating manifest of rdiff-0.1.2 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of rdiff-0.1.2 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing rdiff-0.1.2 [INFO] finished frobbing rdiff-0.1.2 [INFO] frobbed toml for rdiff-0.1.2 written to work/ex/clippy-test-run/sources/stable/reg/rdiff/0.1.2/Cargo.toml [INFO] started frobbing rdiff-0.1.2 [INFO] finished frobbing rdiff-0.1.2 [INFO] frobbed toml for rdiff-0.1.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rdiff/0.1.2/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting rdiff-0.1.2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/rdiff/0.1.2:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] fc83c3a0a8487d476292976141e1272a4b7110ef78c09e3cc907990e8ba77d0a [INFO] running `"docker" "start" "-a" "fc83c3a0a8487d476292976141e1272a4b7110ef78c09e3cc907990e8ba77d0a"` [INFO] [stderr] Checking net2 v0.2.33 [INFO] [stderr] Checking inotify v0.2.3 [INFO] [stderr] Checking rdiff v0.1.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/window.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | front: front, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `front` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/window.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | back: back, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `back` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/window.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | block_size: block_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `block_size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/window.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | reader: reader, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reader` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hashing.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | a: a, [INFO] [stderr] | ^^^^ help: replace it with: `a` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hashing.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | b: b, [INFO] [stderr] | ^^^^ help: replace it with: `b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hashing.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | block_size: block_size [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `block_size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hashing.rs:103:13 [INFO] [stderr] | [INFO] [stderr] 103 | hashes: hashes, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `hashes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hashing.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | block_size: block_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `block_size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hashing.rs:113:13 [INFO] [stderr] | [INFO] [stderr] 113 | block_size: block_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `block_size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hashing.rs:301:13 [INFO] [stderr] | [INFO] [stderr] 301 | file_size: file_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `file_size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hashing.rs:302:13 [INFO] [stderr] | [INFO] [stderr] 302 | block_size: block_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `block_size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hashing.rs:303:13 [INFO] [stderr] | [INFO] [stderr] 303 | hashes: hashes [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `hashes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | position: position, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `position` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:113:13 [INFO] [stderr] | [INFO] [stderr] 113 | data: data [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:128:13 [INFO] [stderr] | [INFO] [stderr] 128 | position: position, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `position` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | len: len [INFO] [stderr] | ^^^^^^^^ help: replace it with: `len` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:262:13 [INFO] [stderr] | [INFO] [stderr] 262 | inserts: inserts, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `inserts` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:263:13 [INFO] [stderr] | [INFO] [stderr] 263 | deletes: deletes [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `deletes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:319:13 [INFO] [stderr] | [INFO] [stderr] 319 | data: data [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/window.rs:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | return Some(self.back[head_index]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(self.back[head_index])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hashing.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | return (self.b as u32) << 16 | self.a as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(self.b as u32) << 16 | self.a as u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hashing.rs:336:9 [INFO] [stderr] | [INFO] [stderr] 336 | return None [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] Checking miow v0.1.5 [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/window.rs:30:12 [INFO] [stderr] | [INFO] [stderr] 30 | if self.front.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.front.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/window.rs:35:16 [INFO] [stderr] | [INFO] [stderr] 35 | if self.back.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.back.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/window.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | / pub fn frame<'a>(&'a self) -> (&'a [u8], &'a [u8]) { [INFO] [stderr] 67 | | let front_offset = min(self.offset, self.front.len()); [INFO] [stderr] 68 | | let back_offset = min(self.offset, self.back.len()); [INFO] [stderr] 69 | | (&self.front[front_offset..], &self.back[..back_offset]) [INFO] [stderr] 70 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/hashing.rs:28:32 [INFO] [stderr] | [INFO] [stderr] 28 | a = a.wrapping_add(*byte as u16); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(*byte)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/hashing.rs:41:16 [INFO] [stderr] | [INFO] [stderr] 41 | return (self.b as u32) << 16 | self.a as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(self.b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/hashing.rs:41:40 [INFO] [stderr] | [INFO] [stderr] 41 | return (self.b as u32) << 16 | self.a as u32; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(self.a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/hashing.rs:48:38 [INFO] [stderr] | [INFO] [stderr] 48 | self.a = self.a.wrapping_sub(old_byte as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(old_byte)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/hashing.rs:49:39 [INFO] [stderr] | [INFO] [stderr] 49 | self.b = self.b.wrapping_sub(((old_byte as u16).wrapping_mul(self.block_size as u16)) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(old_byte)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/hashing.rs:51:42 [INFO] [stderr] | [INFO] [stderr] 51 | self.a = self.a.wrapping_add(new_byte as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(new_byte)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/hashing.rs:63:32 [INFO] [stderr] | [INFO] [stderr] 63 | a = a.wrapping_add(*byte as u16); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(*byte)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/hashing.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | (b as u32) << 16 | a as u32 [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/hashing.rs:67:28 [INFO] [stderr] | [INFO] [stderr] 67 | (b as u32) << 16 | a as u32 [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/hashing.rs:96:37 [INFO] [stderr] | [INFO] [stderr] 96 | hashes.entry(weak_hash).or_insert(Vec::new()).push((block_index, strong_hash)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::new)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: The function/method `check_match` doesn't need a mutable reference [INFO] [stderr] --> src/hashing.rs:151:97 [INFO] [stderr] | [INFO] [stderr] 151 | if let Some(other_block_index) = self.check_match(&weak_hasher, &mut strong_hasher, &mut window, &mut last_matching_block_index) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/hashing.rs:153:20 [INFO] [stderr] | [INFO] [stderr] 153 | if insert_buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!insert_buffer.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/hashing.rs:182:66 [INFO] [stderr] | [INFO] [stderr] 182 | new_hashes.entry(weak_hasher.get_hash()).or_insert(Vec::new()).push((current_block_index, strong_hash)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/hashing.rs:205:62 [INFO] [stderr] | [INFO] [stderr] 205 | new_hashes.entry(weak_hasher.get_hash()).or_insert(Vec::new()).push((current_block_index, strong_hash)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/hashing.rs:213:12 [INFO] [stderr] | [INFO] [stderr] 213 | if insert_buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!insert_buffer.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/hashing.rs:261:9 [INFO] [stderr] | [INFO] [stderr] 261 | try!(writer.write(&int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/hashing.rs:263:9 [INFO] [stderr] | [INFO] [stderr] 263 | try!(writer.write(&int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/hashing.rs:275:13 [INFO] [stderr] | [INFO] [stderr] 275 | try!(writer.write(&int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/hashing.rs:276:13 [INFO] [stderr] | [INFO] [stderr] 276 | try!(writer.write(strong)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/hashing.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | try!(reader.read(&mut int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: The function/method `::read_u32` doesn't need a mutable reference [INFO] [stderr] --> src/hashing.rs:287:49 [INFO] [stderr] | [INFO] [stderr] 287 | let file_size = NetworkEndian::read_u32(&mut int_buf) as usize; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/hashing.rs:288:9 [INFO] [stderr] | [INFO] [stderr] 288 | try!(reader.read(&mut int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: The function/method `::read_u32` doesn't need a mutable reference [INFO] [stderr] --> src/hashing.rs:289:50 [INFO] [stderr] | [INFO] [stderr] 289 | let block_size = NetworkEndian::read_u32(&mut int_buf) as usize; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/hashing.rs:295:13 [INFO] [stderr] | [INFO] [stderr] 295 | try!(reader.read(&mut int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: The function/method `::read_u32` doesn't need a mutable reference [INFO] [stderr] --> src/hashing.rs:296:53 [INFO] [stderr] | [INFO] [stderr] 296 | let weak_hash = NetworkEndian::read_u32(&mut int_buf); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/hashing.rs:297:13 [INFO] [stderr] | [INFO] [stderr] 297 | try!(reader.read(&mut strong_hash)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/hashing.rs:298:37 [INFO] [stderr] | [INFO] [stderr] 298 | hashes.entry(weak_hash).or_insert(Vec::new()).push((block_index, strong_hash)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: The function/method `hash_match` doesn't need a mutable reference [INFO] [stderr] --> src/hashing.rs:311:92 [INFO] [stderr] | [INFO] [stderr] 311 | if let Some(other_block_index) = self.hash_match(&weak_hasher, &mut strong_hasher, &mut window) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/string_diff.rs:76:1 [INFO] [stderr] | [INFO] [stderr] 76 | / fn hirschberg(old: &str, new: &str, old_rev: &str, new_rev: &str, scorer: &S, diff: &mut Diff, insert_index: &mut usize, delete_index: &mut usize) { [INFO] [stderr] 77 | | trace!("'{}' ({}) '{}' ({})", old, old_rev, new, new_rev); [INFO] [stderr] 78 | | // We're going to use these lengths over and over again, we might as well cache them. [INFO] [stderr] 79 | | let old_len = old.len(); [INFO] [stderr] ... | [INFO] [stderr] 154 | | [INFO] [stderr] 155 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/string_diff.rs:146:34 [INFO] [stderr] | [INFO] [stderr] 146 | .zip(0..new_len + 1).max().unwrap().1; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `0..=new_len` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `Diff` [INFO] [stderr] --> src/lib.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | / pub fn new() -> Diff { [INFO] [stderr] 93 | | Diff { [INFO] [stderr] 94 | | inserts: Vec::new(), [INFO] [stderr] 95 | | deletes: Vec::new() [INFO] [stderr] 96 | | } [INFO] [stderr] 97 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 73 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:159:32 [INFO] [stderr] | [INFO] [stderr] 159 | new_bytes.push(old_bytes.next().unwrap().clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `old_bytes.next().unwrap()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/lib.rs:165:32 [INFO] [stderr] | [INFO] [stderr] 165 | while let Some(byte) = old_bytes.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `for byte in old_bytes { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/lib.rs:180:32 [INFO] [stderr] | [INFO] [stderr] 180 | while let Some(byte) = old_bytes.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `for byte in old_bytes { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:196:32 [INFO] [stderr] | [INFO] [stderr] 196 | new_bytes.push(try!(old_bytes.next().unwrap()).clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] help: try removing the `clone` call [INFO] [stderr] | [INFO] [stderr] 196 | new_bytes.push(match $ expr { [INFO] [stderr] 197 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 198 | :: Err ( err ) => { [INFO] [stderr] 199 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 200 | $ crate :: convert :: From :: from ( err ) ) } }); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/lib.rs:202:32 [INFO] [stderr] | [INFO] [stderr] 202 | while let Some(byte) = old_bytes.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `for byte in old_bytes { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/lib.rs:217:32 [INFO] [stderr] | [INFO] [stderr] 217 | while let Some(byte) = old_bytes.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `for byte in old_bytes { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | try!(writer.write(&mut int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: The function/method `write` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:232:27 [INFO] [stderr] | [INFO] [stderr] 232 | try!(writer.write(&mut int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:237:9 [INFO] [stderr] | [INFO] [stderr] 237 | try!(writer.write(&mut int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: The function/method `write` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:237:27 [INFO] [stderr] | [INFO] [stderr] 237 | try!(writer.write(&mut int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:299:9 [INFO] [stderr] | [INFO] [stderr] 299 | try!(writer.write(&int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:301:9 [INFO] [stderr] | [INFO] [stderr] 301 | try!(writer.write(&int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:302:9 [INFO] [stderr] | [INFO] [stderr] 302 | try!(writer.write(&self.data)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: slow zero-filling initialization [INFO] [stderr] --> src/lib.rs:315:9 [INFO] [stderr] | [INFO] [stderr] 314 | let mut data = Vec::with_capacity(data_len); [INFO] [stderr] | ---------------------------- help: consider replace allocation with: `vec![0; data_len]` [INFO] [stderr] 315 | data.resize(data_len, 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::slow_vector_initialization)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:344:9 [INFO] [stderr] | [INFO] [stderr] 344 | try!(writer.write(&int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:346:9 [INFO] [stderr] | [INFO] [stderr] 346 | try!(writer.write(&int_buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: aborting due to 15 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rdiff`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "fc83c3a0a8487d476292976141e1272a4b7110ef78c09e3cc907990e8ba77d0a"` [INFO] running `"docker" "rm" "-f" "fc83c3a0a8487d476292976141e1272a4b7110ef78c09e3cc907990e8ba77d0a"` [INFO] [stdout] fc83c3a0a8487d476292976141e1272a4b7110ef78c09e3cc907990e8ba77d0a