[INFO] crate wtf8 0.0.3 is already in cache [INFO] extracting crate wtf8 0.0.3 into work/ex/clippy-test-run/sources/stable/reg/wtf8/0.0.3 [INFO] extracting crate wtf8 0.0.3 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/wtf8/0.0.3 [INFO] validating manifest of wtf8-0.0.3 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 wtf8-0.0.3 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 wtf8-0.0.3 [INFO] finished frobbing wtf8-0.0.3 [INFO] frobbed toml for wtf8-0.0.3 written to work/ex/clippy-test-run/sources/stable/reg/wtf8/0.0.3/Cargo.toml [INFO] started frobbing wtf8-0.0.3 [INFO] finished frobbing wtf8-0.0.3 [INFO] frobbed toml for wtf8-0.0.3 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/wtf8/0.0.3/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 wtf8-0.0.3 against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/wtf8/0.0.3:/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 -Dclippy::into_iter_on_array" "-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] 4782b63bb351633cb0ce3ec314968537bfbb5f3712c4a529cae626152cdcc896 [INFO] running `"docker" "start" "-a" "4782b63bb351633cb0ce3ec314968537bfbb5f3712c4a529cae626152cdcc896"` [INFO] [stderr] Checking wtf8 v0.0.3 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:80:21 [INFO] [stderr] | [INFO] [stderr] 80 | CodePoint { value: value } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/lib.rs:89:48 [INFO] [stderr] | [INFO] [stderr] 89 | 0 ... 0x10FFFF => Some(CodePoint { value: value }), [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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:80:21 [INFO] [stderr] | [INFO] [stderr] 80 | CodePoint { value: value } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/lib.rs:89:48 [INFO] [stderr] | [INFO] [stderr] 89 | 0 ... 0x10FFFF => Some(CodePoint { value: value }), [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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: long literal lacking separators [INFO] [stderr] --> src/lib.rs:89:19 [INFO] [stderr] | [INFO] [stderr] 89 | 0 ... 0x10FFFF => Some(CodePoint { value: value }), [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:89:19 [INFO] [stderr] | [INFO] [stderr] 89 | 0 ... 0x10FFFF => Some(CodePoint { value: value }), [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:767:37 [INFO] [stderr] | [INFO] [stderr] 767 | assert!(CodePoint::from_u32(0x10FFFF).is_some()); [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:768:37 [INFO] [stderr] | [INFO] [stderr] 768 | assert!(CodePoint::from_u32(0x110000).is_none()); [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0011_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:776:22 [INFO] [stderr] | [INFO] [stderr] 776 | assert_eq!(c(0x10FFFF).to_u32(), 0x10FFFF); [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:776:42 [INFO] [stderr] | [INFO] [stderr] 776 | assert_eq!(c(0x10FFFF).to_u32(), 0x10FFFF); [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/not_quite_std.rs:83:60 [INFO] [stderr] | [INFO] [stderr] 83 | Some(&next_byte) if next_byte < 128 => return Some(next_byte as u32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(next_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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/not_quite_std.rs:97:38 [INFO] [stderr] | [INFO] [stderr] 97 | let y_z = utf8_acc_cont_byte((y & CONT_MASK) as u32, z); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(y & CONT_MASK)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/not_quite_std.rs:111:51 [INFO] [stderr] | [INFO] [stderr] 111 | fn utf8_first_byte(byte: u8, width: u32) -> u32 { (byte & (0x7F >> width)) as u32 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(byte & (0x7F >> width))` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/not_quite_std.rs:115:63 [INFO] [stderr] | [INFO] [stderr] 115 | fn utf8_acc_cont_byte(ch: u32, byte: u8) -> u32 { (ch << 6) | (byte & CONT_MASK) as u32 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(byte & CONT_MASK)` [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 `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/not_quite_std.rs:140:13 [INFO] [stderr] | [INFO] [stderr] 140 | string.bytes.as_mut_ptr().offset(cur_len as isize), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `string.bytes.as_mut_ptr().add(cur_len)` [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: transmute from a reference to a reference [INFO] [stderr] --> src/not_quite_std.rs:162:5 [INFO] [stderr] | [INFO] [stderr] 162 | / mem::transmute(slice::from_raw_parts( [INFO] [stderr] 163 | | s.bytes.as_ptr().offset(begin as isize), [INFO] [stderr] 164 | | end - begin, [INFO] [stderr] 165 | | )) [INFO] [stderr] | |______^ [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] help: try [INFO] [stderr] | [INFO] [stderr] 162 | &*(slice::from_raw_parts( [INFO] [stderr] 163 | s.bytes.as_ptr().offset(begin as isize), [INFO] [stderr] 164 | end - begin, [INFO] [stderr] 165 | ) as *const [u8] as *const Wtf8) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/not_quite_std.rs:163:9 [INFO] [stderr] | [INFO] [stderr] 163 | s.bytes.as_ptr().offset(begin as isize), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `s.bytes.as_ptr().add(begin)` [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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/not_quite_std.rs:226:55 [INFO] [stderr] | [INFO] [stderr] 226 | Some(Ok(unsafe { char::from_u32_unchecked(u as u32) })) [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(u)` [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/not_quite_std.rs:244:22 [INFO] [stderr] | [INFO] [stderr] 244 | let c = (((u - 0xD800) as u32) << 10 | (u2 - 0xDC00) as u32) + 0x1_0000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(u - 0xD800)` [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/not_quite_std.rs:244:52 [INFO] [stderr] | [INFO] [stderr] 244 | let c = (((u - 0xD800) as u32) << 10 | (u2 - 0xDC00) as u32) + 0x1_0000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(u2 - 0xDC00)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:104:19 [INFO] [stderr] | [INFO] [stderr] 104 | pub fn to_u32(&self) -> u32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:112:20 [INFO] [stderr] | [INFO] [stderr] 112 | pub fn to_char(&self) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `char` [INFO] [stderr] --> src/lib.rs:115:32 [INFO] [stderr] | [INFO] [stderr] 115 | _ => Some(unsafe { transmute(self.value) }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::char::from_u32(self.value).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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:124:26 [INFO] [stderr] | [INFO] [stderr] 124 | pub fn to_char_lossy(&self) -> char { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/lib.rs:143:18 [INFO] [stderr] | [INFO] [stderr] 143 | unsafe { transmute(&*self.bytes) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(&*self.bytes as *const [u8] as *const Wtf8)` [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 should consider deriving a `Default` implementation for `Wtf8Buf` [INFO] [stderr] --> src/lib.rs:161:5 [INFO] [stderr] | [INFO] [stderr] 161 | / pub fn new() -> Wtf8Buf { [INFO] [stderr] 162 | | Wtf8Buf { bytes: Vec::new() } [INFO] [stderr] 163 | | } [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] 135 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/lib.rs:187:5 [INFO] [stderr] | [INFO] [stderr] 187 | / pub fn from_str(str: &str) -> Wtf8Buf { [INFO] [stderr] 188 | | Wtf8Buf { bytes: str.as_bytes().to_vec() } [INFO] [stderr] 189 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:202:77 [INFO] [stderr] | [INFO] [stderr] 202 | let code_point = unsafe { CodePoint::from_u32_unchecked(s as u32) }; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(s)` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / match code_point.to_u32() { [INFO] [stderr] 287 | | trail @ 0xDC00...0xDFFF => { [INFO] [stderr] 288 | | match (&*self).final_lead_surrogate() { [INFO] [stderr] 289 | | Some(lead) => { [INFO] [stderr] ... | [INFO] [stderr] 298 | | _ => {} [INFO] [stderr] 299 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 286 | if let trail @ 0xDC00...0xDFFF = code_point.to_u32() { [INFO] [stderr] 287 | match (&*self).final_lead_surrogate() { [INFO] [stderr] 288 | Some(lead) => { [INFO] [stderr] 289 | let len_without_lead_surrogate = self.len() - 3; [INFO] [stderr] 290 | self.bytes.truncate(len_without_lead_surrogate); [INFO] [stderr] 291 | self.push_char(decode_surrogate_pair(lead, trail as u16)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:288:17 [INFO] [stderr] | [INFO] [stderr] 288 | / match (&*self).final_lead_surrogate() { [INFO] [stderr] 289 | | Some(lead) => { [INFO] [stderr] 290 | | let len_without_lead_surrogate = self.len() - 3; [INFO] [stderr] 291 | | self.bytes.truncate(len_without_lead_surrogate); [INFO] [stderr] ... | [INFO] [stderr] 295 | | _ => {} [INFO] [stderr] 296 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 288 | if let Some(lead) = (&*self).final_lead_surrogate() { [INFO] [stderr] 289 | let len_without_lead_surrogate = self.len() - 3; [INFO] [stderr] 290 | self.bytes.truncate(len_without_lead_surrogate); [INFO] [stderr] 291 | self.push_char(decode_surrogate_pair(lead, trail as u16)); [INFO] [stderr] 292 | return [INFO] [stderr] 293 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `Wtf8` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/lib.rs:446:1 [INFO] [stderr] | [INFO] [stderr] 446 | / impl Wtf8 { [INFO] [stderr] 447 | | /// Create a WTF-8 slice from a UTF-8 `&str` slice. [INFO] [stderr] 448 | | /// [INFO] [stderr] 449 | | /// Since WTF-8 is a superset of UTF-8, this always succeeds. [INFO] [stderr] ... | [INFO] [stderr] 647 | | } [INFO] [stderr] 648 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/lib.rs:451:5 [INFO] [stderr] | [INFO] [stderr] 451 | / pub fn from_str(value: &str) -> &Wtf8 { [INFO] [stderr] 452 | | unsafe { transmute(value.as_bytes()) } [INFO] [stderr] 453 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/lib.rs:452:18 [INFO] [stderr] | [INFO] [stderr] 452 | unsafe { transmute(value.as_bytes()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(value.as_bytes() as *const [u8] as *const Wtf8)` [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:654:15 [INFO] [stderr] | [INFO] [stderr] 654 | 0xD800 | (second_byte as u16 & 0x3F) << 6 | third_byte as u16 & 0x3F [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(second_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/lib.rs:654:49 [INFO] [stderr] | [INFO] [stderr] 654 | 0xD800 | (second_byte as u16 & 0x3F) << 6 | third_byte as u16 & 0x3F [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(third_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/lib.rs:659:35 [INFO] [stderr] | [INFO] [stderr] 659 | let code_point = 0x10000 + (((lead as u32 - 0xD800) << 10) | (trail as u32 - 0xDC00)); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(lead)` [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/lib.rs:659:67 [INFO] [stderr] | [INFO] [stderr] 659 | let code_point = 0x10000 + (((lead as u32 - 0xD800) << 10) | (trail as u32 - 0xDC00)); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(trail)` [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: transmute from a `u32` to a `char` [INFO] [stderr] --> src/lib.rs:660:14 [INFO] [stderr] | [INFO] [stderr] 660 | unsafe { transmute(code_point) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::char::from_u32(code_point).unwrap()` [INFO] [stderr] | [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] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/lib.rs:734:1 [INFO] [stderr] | [INFO] [stderr] 734 | / impl hash::Hash for CodePoint { [INFO] [stderr] 735 | | #[inline] [INFO] [stderr] 736 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 737 | | self.value.hash(state) [INFO] [stderr] 738 | | } [INFO] [stderr] 739 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::derive_hash_xor_eq)] on by default [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/lib.rs:56:14 [INFO] [stderr] | [INFO] [stderr] 56 | #[derive(Eq, PartialEq, Ord, PartialOrd, Clone)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/lib.rs:741:1 [INFO] [stderr] | [INFO] [stderr] 741 | / impl hash::Hash for Wtf8Buf { [INFO] [stderr] 742 | | #[inline] [INFO] [stderr] 743 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 744 | | Wtf8::hash(self, state) [INFO] [stderr] 745 | | } [INFO] [stderr] 746 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/lib.rs:134:14 [INFO] [stderr] | [INFO] [stderr] 134 | #[derive(Eq, PartialEq, Ord, PartialOrd, Clone)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `wtf8`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/not_quite_std.rs:83:60 [INFO] [stderr] | [INFO] [stderr] 83 | Some(&next_byte) if next_byte < 128 => return Some(next_byte as u32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(next_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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/not_quite_std.rs:97:38 [INFO] [stderr] | [INFO] [stderr] 97 | let y_z = utf8_acc_cont_byte((y & CONT_MASK) as u32, z); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(y & CONT_MASK)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/not_quite_std.rs:111:51 [INFO] [stderr] | [INFO] [stderr] 111 | fn utf8_first_byte(byte: u8, width: u32) -> u32 { (byte & (0x7F >> width)) as u32 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(byte & (0x7F >> width))` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/not_quite_std.rs:115:63 [INFO] [stderr] | [INFO] [stderr] 115 | fn utf8_acc_cont_byte(ch: u32, byte: u8) -> u32 { (ch << 6) | (byte & CONT_MASK) as u32 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(byte & CONT_MASK)` [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 `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/not_quite_std.rs:140:13 [INFO] [stderr] | [INFO] [stderr] 140 | string.bytes.as_mut_ptr().offset(cur_len as isize), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `string.bytes.as_mut_ptr().add(cur_len)` [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: transmute from a reference to a reference [INFO] [stderr] --> src/not_quite_std.rs:162:5 [INFO] [stderr] | [INFO] [stderr] 162 | / mem::transmute(slice::from_raw_parts( [INFO] [stderr] 163 | | s.bytes.as_ptr().offset(begin as isize), [INFO] [stderr] 164 | | end - begin, [INFO] [stderr] 165 | | )) [INFO] [stderr] | |______^ [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] help: try [INFO] [stderr] | [INFO] [stderr] 162 | &*(slice::from_raw_parts( [INFO] [stderr] 163 | s.bytes.as_ptr().offset(begin as isize), [INFO] [stderr] 164 | end - begin, [INFO] [stderr] 165 | ) as *const [u8] as *const Wtf8) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/not_quite_std.rs:163:9 [INFO] [stderr] | [INFO] [stderr] 163 | s.bytes.as_ptr().offset(begin as isize), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `s.bytes.as_ptr().add(begin)` [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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/not_quite_std.rs:226:55 [INFO] [stderr] | [INFO] [stderr] 226 | Some(Ok(unsafe { char::from_u32_unchecked(u as u32) })) [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(u)` [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/not_quite_std.rs:244:22 [INFO] [stderr] | [INFO] [stderr] 244 | let c = (((u - 0xD800) as u32) << 10 | (u2 - 0xDC00) as u32) + 0x1_0000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(u - 0xD800)` [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/not_quite_std.rs:244:52 [INFO] [stderr] | [INFO] [stderr] 244 | let c = (((u - 0xD800) as u32) << 10 | (u2 - 0xDC00) as u32) + 0x1_0000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(u2 - 0xDC00)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:104:19 [INFO] [stderr] | [INFO] [stderr] 104 | pub fn to_u32(&self) -> u32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:112:20 [INFO] [stderr] | [INFO] [stderr] 112 | pub fn to_char(&self) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `char` [INFO] [stderr] --> src/lib.rs:115:32 [INFO] [stderr] | [INFO] [stderr] 115 | _ => Some(unsafe { transmute(self.value) }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::char::from_u32(self.value).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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:124:26 [INFO] [stderr] | [INFO] [stderr] 124 | pub fn to_char_lossy(&self) -> char { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/lib.rs:143:18 [INFO] [stderr] | [INFO] [stderr] 143 | unsafe { transmute(&*self.bytes) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(&*self.bytes as *const [u8] as *const Wtf8)` [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 should consider deriving a `Default` implementation for `Wtf8Buf` [INFO] [stderr] --> src/lib.rs:161:5 [INFO] [stderr] | [INFO] [stderr] 161 | / pub fn new() -> Wtf8Buf { [INFO] [stderr] 162 | | Wtf8Buf { bytes: Vec::new() } [INFO] [stderr] 163 | | } [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] 135 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/lib.rs:187:5 [INFO] [stderr] | [INFO] [stderr] 187 | / pub fn from_str(str: &str) -> Wtf8Buf { [INFO] [stderr] 188 | | Wtf8Buf { bytes: str.as_bytes().to_vec() } [INFO] [stderr] 189 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:202:77 [INFO] [stderr] | [INFO] [stderr] 202 | let code_point = unsafe { CodePoint::from_u32_unchecked(s as u32) }; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(s)` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / match code_point.to_u32() { [INFO] [stderr] 287 | | trail @ 0xDC00...0xDFFF => { [INFO] [stderr] 288 | | match (&*self).final_lead_surrogate() { [INFO] [stderr] 289 | | Some(lead) => { [INFO] [stderr] ... | [INFO] [stderr] 298 | | _ => {} [INFO] [stderr] 299 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 286 | if let trail @ 0xDC00...0xDFFF = code_point.to_u32() { [INFO] [stderr] 287 | match (&*self).final_lead_surrogate() { [INFO] [stderr] 288 | Some(lead) => { [INFO] [stderr] 289 | let len_without_lead_surrogate = self.len() - 3; [INFO] [stderr] 290 | self.bytes.truncate(len_without_lead_surrogate); [INFO] [stderr] 291 | self.push_char(decode_surrogate_pair(lead, trail as u16)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:288:17 [INFO] [stderr] | [INFO] [stderr] 288 | / match (&*self).final_lead_surrogate() { [INFO] [stderr] 289 | | Some(lead) => { [INFO] [stderr] 290 | | let len_without_lead_surrogate = self.len() - 3; [INFO] [stderr] 291 | | self.bytes.truncate(len_without_lead_surrogate); [INFO] [stderr] ... | [INFO] [stderr] 295 | | _ => {} [INFO] [stderr] 296 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 288 | if let Some(lead) = (&*self).final_lead_surrogate() { [INFO] [stderr] 289 | let len_without_lead_surrogate = self.len() - 3; [INFO] [stderr] 290 | self.bytes.truncate(len_without_lead_surrogate); [INFO] [stderr] 291 | self.push_char(decode_surrogate_pair(lead, trail as u16)); [INFO] [stderr] 292 | return [INFO] [stderr] 293 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `Wtf8` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/lib.rs:446:1 [INFO] [stderr] | [INFO] [stderr] 446 | / impl Wtf8 { [INFO] [stderr] 447 | | /// Create a WTF-8 slice from a UTF-8 `&str` slice. [INFO] [stderr] 448 | | /// [INFO] [stderr] 449 | | /// Since WTF-8 is a superset of UTF-8, this always succeeds. [INFO] [stderr] ... | [INFO] [stderr] 647 | | } [INFO] [stderr] 648 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/lib.rs:451:5 [INFO] [stderr] | [INFO] [stderr] 451 | / pub fn from_str(value: &str) -> &Wtf8 { [INFO] [stderr] 452 | | unsafe { transmute(value.as_bytes()) } [INFO] [stderr] 453 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/lib.rs:452:18 [INFO] [stderr] | [INFO] [stderr] 452 | unsafe { transmute(value.as_bytes()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(value.as_bytes() as *const [u8] as *const Wtf8)` [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:654:15 [INFO] [stderr] | [INFO] [stderr] 654 | 0xD800 | (second_byte as u16 & 0x3F) << 6 | third_byte as u16 & 0x3F [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(second_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/lib.rs:654:49 [INFO] [stderr] | [INFO] [stderr] 654 | 0xD800 | (second_byte as u16 & 0x3F) << 6 | third_byte as u16 & 0x3F [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(third_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/lib.rs:659:35 [INFO] [stderr] | [INFO] [stderr] 659 | let code_point = 0x10000 + (((lead as u32 - 0xD800) << 10) | (trail as u32 - 0xDC00)); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(lead)` [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/lib.rs:659:67 [INFO] [stderr] | [INFO] [stderr] 659 | let code_point = 0x10000 + (((lead as u32 - 0xD800) << 10) | (trail as u32 - 0xDC00)); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(trail)` [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: transmute from a `u32` to a `char` [INFO] [stderr] --> src/lib.rs:660:14 [INFO] [stderr] | [INFO] [stderr] 660 | unsafe { transmute(code_point) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::char::from_u32(code_point).unwrap()` [INFO] [stderr] | [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] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/lib.rs:734:1 [INFO] [stderr] | [INFO] [stderr] 734 | / impl hash::Hash for CodePoint { [INFO] [stderr] 735 | | #[inline] [INFO] [stderr] 736 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 737 | | self.value.hash(state) [INFO] [stderr] 738 | | } [INFO] [stderr] 739 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::derive_hash_xor_eq)] on by default [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/lib.rs:56:14 [INFO] [stderr] | [INFO] [stderr] 56 | #[derive(Eq, PartialEq, Ord, PartialOrd, Clone)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/lib.rs:741:1 [INFO] [stderr] | [INFO] [stderr] 741 | / impl hash::Hash for Wtf8Buf { [INFO] [stderr] 742 | | #[inline] [INFO] [stderr] 743 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 744 | | Wtf8::hash(self, state) [INFO] [stderr] 745 | | } [INFO] [stderr] 746 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/lib.rs:134:14 [INFO] [stderr] | [INFO] [stderr] 134 | #[derive(Eq, PartialEq, Ord, PartialOrd, Clone)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/lib.rs:901:48 [INFO] [stderr] | [INFO] [stderr] 901 | fn w(value: &[u8]) -> &Wtf8 { unsafe { transmute(value) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&*(value as *const [u8] as *const Wtf8)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:995:25 [INFO] [stderr] | [INFO] [stderr] 995 | fn c(value: &u32) -> CodePoint { CodePoint::from_u32(*value).unwrap() } [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `wtf8`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "4782b63bb351633cb0ce3ec314968537bfbb5f3712c4a529cae626152cdcc896"` [INFO] running `"docker" "rm" "-f" "4782b63bb351633cb0ce3ec314968537bfbb5f3712c4a529cae626152cdcc896"` [INFO] [stdout] 4782b63bb351633cb0ce3ec314968537bfbb5f3712c4a529cae626152cdcc896