[INFO] crate tendril 0.4.1 is already in cache [INFO] extracting crate tendril 0.4.1 into work/ex/clippy-test-run/sources/stable/reg/tendril/0.4.1 [INFO] extracting crate tendril 0.4.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tendril/0.4.1 [INFO] validating manifest of tendril-0.4.1 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 tendril-0.4.1 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 tendril-0.4.1 [INFO] finished frobbing tendril-0.4.1 [INFO] frobbed toml for tendril-0.4.1 written to work/ex/clippy-test-run/sources/stable/reg/tendril/0.4.1/Cargo.toml [INFO] started frobbing tendril-0.4.1 [INFO] finished frobbing tendril-0.4.1 [INFO] frobbed toml for tendril-0.4.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tendril/0.4.1/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 tendril-0.4.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/tendril/0.4.1:/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] 58d3bacda97974d7af2d1128c01611fc3815d0ef88612dd59c8e97f51ae1b7d9 [INFO] running `"docker" "start" "-a" "58d3bacda97974d7af2d1128c01611fc3815d0ef88612dd59c8e97f51ae1b7d9"` [INFO] [stderr] Checking tendril v0.4.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/stream.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | inner_sink: inner_sink, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `inner_sink` [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/buf32.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | ptr: ptr, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ptr` [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/buf32.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | cap: cap, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cap` [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/tendril.rs:1013:13 [INFO] [stderr] | [INFO] [stderr] 1013 | cap: cap, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cap` [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/tendril.rs:1055:13 [INFO] [stderr] | [INFO] [stderr] 1055 | 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] error: redundant field names in struct initialization [INFO] [stderr] --> src/stream.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | inner_sink: inner_sink, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `inner_sink` [INFO] [stderr] | [INFO] [stderr] note: lint level defined here [INFO] [stderr] --> src/lib.rs:8:24 [INFO] [stderr] | [INFO] [stderr] 8 | #![cfg_attr(test, deny(warnings))] [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = note: #[deny(clippy::redundant_field_names)] implied by #[deny(warnings)] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] error: redundant field names in struct initialization [INFO] [stderr] --> src/buf32.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | ptr: ptr, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ptr` [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/buf32.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | cap: cap, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cap` [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/tendril.rs:1013:13 [INFO] [stderr] | [INFO] [stderr] 1013 | cap: cap, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cap` [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/tendril.rs:1055:13 [INFO] [stderr] | [INFO] [stderr] 1055 | 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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/fmt.rs:436:21 [INFO] [stderr] | [INFO] [stderr] 436 | const ERR: &'static str = "WTF8: internal error"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] error: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/fmt.rs:436:21 [INFO] [stderr] | [INFO] [stderr] 436 | const ERR: &'static str = "WTF8: internal error"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] note: lint level defined here [INFO] [stderr] --> src/lib.rs:8:24 [INFO] [stderr] | [INFO] [stderr] 8 | #![cfg_attr(test, deny(warnings))] [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = note: #[deny(clippy::const_static_lifetime)] implied by #[deny(warnings)] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `char` [INFO] [stderr] --> src/fmt.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | mem::transmute(n) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using: `std::char::from_u32(n).unwrap()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_int_to_char)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_char [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fmt.rs:76:40 [INFO] [stderr] | [INFO] [stderr] 76 | (i, from_u32_unchecked(b as u32)) [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(b)` [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: length comparison to zero [INFO] [stderr] --> src/fmt.rs:294:12 [INFO] [stderr] | [INFO] [stderr] 294 | if buf.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buf.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/fmt.rs:305:12 [INFO] [stderr] | [INFO] [stderr] 305 | if buf.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buf.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: transmute from a `&mut [u8]` to a `&mut str` [INFO] [stderr] --> src/fmt.rs:340:9 [INFO] [stderr] | [INFO] [stderr] 340 | mem::transmute(x) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using: `std::str::from_utf8_mut(x).unwrap()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_bytes_to_str)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_bytes_to_str [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/fmt.rs:408:12 [INFO] [stderr] | [INFO] [stderr] 408 | if buf.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buf.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: length comparison to zero [INFO] [stderr] --> src/fmt.rs:419:12 [INFO] [stderr] | [INFO] [stderr] 419 | if buf.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buf.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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fmt.rs:450:36 [INFO] [stderr] | [INFO] [stderr] 450 | let n = 0x10000 + ((hi as u32) << 10) + (lo as u32); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(hi)` [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/fmt.rs:450:57 [INFO] [stderr] | [INFO] [stderr] 450 | let n = 0x10000 + ((hi as u32) << 10) + (lo as u32); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(lo)` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/util.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | / pub unsafe fn unsafe_slice<'a>(buf: &'a [u8], start: usize, new_len: usize) -> &'a [u8] { [INFO] [stderr] 12 | | debug_assert!(start <= buf.len()); [INFO] [stderr] 13 | | debug_assert!(new_len <= (buf.len() - start)); [INFO] [stderr] 14 | | slice::from_raw_parts(buf.as_ptr().offset(start as isize), new_len) [INFO] [stderr] 15 | | } [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: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/util.rs:14:27 [INFO] [stderr] | [INFO] [stderr] 14 | slice::from_raw_parts(buf.as_ptr().offset(start as isize), new_len) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `buf.as_ptr().add(start)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_offset_with_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [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/util.rs:18:1 [INFO] [stderr] | [INFO] [stderr] 18 | / pub unsafe fn unsafe_slice_mut<'a>(buf: &'a mut [u8], start: usize, new_len: usize) -> &'a mut [u8] { [INFO] [stderr] 19 | | debug_assert!(start <= buf.len()); [INFO] [stderr] 20 | | debug_assert!(new_len <= (buf.len() - start)); [INFO] [stderr] 21 | | slice::from_raw_parts_mut(buf.as_mut_ptr().offset(start as isize), new_len) [INFO] [stderr] 22 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/util.rs:21:31 [INFO] [stderr] | [INFO] [stderr] 21 | slice::from_raw_parts_mut(buf.as_mut_ptr().offset(start as isize), new_len) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `buf.as_mut_ptr().add(start)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/buf32.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | (self.ptr as *mut u8).offset(mem::size_of::() as isize) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(self.ptr as *mut u8).add(mem::size_of::())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/tendril.rs:436:5 [INFO] [stderr] | [INFO] [stderr] 436 | / fn ne(&self, other: &Self) -> bool { [INFO] [stderr] 437 | | self.as_byte_slice() != other.as_byte_slice() [INFO] [stderr] 438 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::partialeq_ne_impl)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tendril.rs:603:9 [INFO] [stderr] | [INFO] [stderr] 603 | / match F::validate(x) { [INFO] [stderr] 604 | | true => Ok(unsafe { Tendril::from_byte_slice_without_validating(x) }), [INFO] [stderr] 605 | | false => Err(()), [INFO] [stderr] 606 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if F::validate(x) { Ok(unsafe { Tendril::from_byte_slice_without_validating(x) }) } else { Err(()) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/tendril.rs:612:18 [INFO] [stderr] | [INFO] [stderr] 612 | unsafe { mem::transmute(self) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&*(self as *const tendril::Tendril as *const tendril::Tendril)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/tendril.rs:641:18 [INFO] [stderr] | [INFO] [stderr] 641 | unsafe { mem::transmute(self) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&*(self as *const tendril::Tendril as *const tendril::Tendril)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tendril.rs:658:9 [INFO] [stderr] | [INFO] [stderr] 658 | / match Sub::revalidate_subset(self.as_byte_slice()) { [INFO] [stderr] 659 | | true => Ok(unsafe { mem::transmute(self) }), [INFO] [stderr] 660 | | false => Err(()), [INFO] [stderr] 661 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if Sub::revalidate_subset(self.as_byte_slice()) { Ok(unsafe { mem::transmute(self) }) } else { Err(()) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/tendril.rs:659:33 [INFO] [stderr] | [INFO] [stderr] 659 | true => Ok(unsafe { mem::transmute(self) }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&*(self as *const tendril::Tendril as *const tendril::Tendril)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tendril.rs:669:9 [INFO] [stderr] | [INFO] [stderr] 669 | / match Sub::revalidate_subset(self.as_byte_slice()) { [INFO] [stderr] 670 | | true => Ok(unsafe { mem::transmute(self) }), [INFO] [stderr] 671 | | false => Err(self), [INFO] [stderr] 672 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if Sub::revalidate_subset(self.as_byte_slice()) { Ok(unsafe { mem::transmute(self) }) } else { Err(self) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tendril.rs:681:9 [INFO] [stderr] | [INFO] [stderr] 681 | / match Other::validate(self.as_byte_slice()) { [INFO] [stderr] 682 | | true => Ok(unsafe { mem::transmute(self) }), [INFO] [stderr] 683 | | false => Err(()), [INFO] [stderr] 684 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if Other::validate(self.as_byte_slice()) { Ok(unsafe { mem::transmute(self) }) } else { Err(()) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/tendril.rs:682:33 [INFO] [stderr] | [INFO] [stderr] 682 | true => Ok(unsafe { mem::transmute(self) }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&*(self as *const tendril::Tendril as *const tendril::Tendril)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tendril.rs:697:9 [INFO] [stderr] | [INFO] [stderr] 697 | / match Other::validate(self.as_byte_slice()) { [INFO] [stderr] 698 | | true => Ok(unsafe { mem::transmute(self) }), [INFO] [stderr] 699 | | false => Err(self), [INFO] [stderr] 700 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if Other::validate(self.as_byte_slice()) { Ok(unsafe { mem::transmute(self) }) } else { Err(self) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tendril.rs:707:9 [INFO] [stderr] | [INFO] [stderr] 707 | / match F::validate(buf) { [INFO] [stderr] 708 | | true => unsafe { [INFO] [stderr] 709 | | self.push_bytes_without_validating(buf); [INFO] [stderr] 710 | | Ok(()) [INFO] [stderr] 711 | | }, [INFO] [stderr] 712 | | false => Err(()), [INFO] [stderr] 713 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 707 | if F::validate(buf) unsafe { [INFO] [stderr] 708 | self.push_bytes_without_validating(buf); [INFO] [stderr] 709 | Ok(()) [INFO] [stderr] 710 | } else { Err(()) } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/tendril.rs:850:9 [INFO] [stderr] | [INFO] [stderr] 850 | mem::transmute(self) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&*(self as *const tendril::Tendril as *const tendril::Tendril)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/tendril.rs:902:28 [INFO] [stderr] | [INFO] [stderr] 902 | let mut dest = owned.data_ptr().offset((owned.len as usize - drop_left) as isize); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `owned.data_ptr().add((owned.len as usize - drop_left))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tendril.rs:1005:29 [INFO] [stderr] | [INFO] [stderr] 1005 | let (cap, offset) = match shared { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 1006 | | true => ((*header).cap, self.aux.get()), [INFO] [stderr] 1007 | | false => (self.aux.get(), 0), [INFO] [stderr] 1008 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if shared { ((*header).cap, self.aux.get()) } else { (self.aux.get(), 0) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [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/tendril.rs:1063:5 [INFO] [stderr] | [INFO] [stderr] 1063 | / fn as_byte_slice<'a>(&'a self) -> &'a [u8] { [INFO] [stderr] 1064 | | unsafe { [INFO] [stderr] 1065 | | match self.ptr.get().get() { [INFO] [stderr] 1066 | | EMPTY_TAG => &[], [INFO] [stderr] ... | [INFO] [stderr] 1076 | | } [INFO] [stderr] 1077 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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/tendril.rs:1082:5 [INFO] [stderr] | [INFO] [stderr] 1082 | / fn as_mut_byte_slice<'a>(&'a mut self) -> &'a mut [u8] { [INFO] [stderr] 1083 | | unsafe { [INFO] [stderr] 1084 | | match self.ptr.get().get() { [INFO] [stderr] 1085 | | EMPTY_TAG => &mut [], [INFO] [stderr] ... | [INFO] [stderr] 1096 | | } [INFO] [stderr] 1097 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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/tendril.rs:1186:5 [INFO] [stderr] | [INFO] [stderr] 1186 | / pub fn pop_front_char<'a>(&'a mut self) -> Option { [INFO] [stderr] 1187 | | unsafe { [INFO] [stderr] 1188 | | let next_char; // first char in iterator [INFO] [stderr] 1189 | | let mut skip = 0; // number of bytes to skip, or 0 to clear [INFO] [stderr] ... | [INFO] [stderr] 1217 | | } [INFO] [stderr] 1218 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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/tendril.rs:1225:5 [INFO] [stderr] | [INFO] [stderr] 1225 | / pub fn pop_front_char_run<'a, C, R>(&'a mut self, mut classify: C) [INFO] [stderr] 1226 | | -> Option<(Tendril, R)> [INFO] [stderr] 1227 | | where C: FnMut(char) -> R, [INFO] [stderr] 1228 | | R: PartialEq, [INFO] [stderr] ... | [INFO] [stderr] 1251 | | } [INFO] [stderr] 1252 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/tendril.rs:1237:52 [INFO] [stderr] | [INFO] [stderr] 1237 | first_mismatch = chars.find(|&(_, ch)| &classify(ch) != &class); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 1237 | first_mismatch = chars.find(|&(_, ch)| classify(ch) != class); [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `tendril`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "58d3bacda97974d7af2d1128c01611fc3815d0ef88612dd59c8e97f51ae1b7d9"` [INFO] running `"docker" "rm" "-f" "58d3bacda97974d7af2d1128c01611fc3815d0ef88612dd59c8e97f51ae1b7d9"` [INFO] [stdout] 58d3bacda97974d7af2d1128c01611fc3815d0ef88612dd59c8e97f51ae1b7d9