[INFO] crate stfu8 0.2.4 is already in cache [INFO] extracting crate stfu8 0.2.4 into work/ex/clippy-test-run/sources/stable/reg/stfu8/0.2.4 [INFO] extracting crate stfu8 0.2.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/stfu8/0.2.4 [INFO] validating manifest of stfu8-0.2.4 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 stfu8-0.2.4 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 stfu8-0.2.4 [INFO] finished frobbing stfu8-0.2.4 [INFO] frobbed toml for stfu8-0.2.4 written to work/ex/clippy-test-run/sources/stable/reg/stfu8/0.2.4/Cargo.toml [INFO] started frobbing stfu8-0.2.4 [INFO] finished frobbing stfu8-0.2.4 [INFO] frobbed toml for stfu8-0.2.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/stfu8/0.2.4/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 stfu8-0.2.4 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/stfu8/0.2.4:/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] 7474a4278ccf17794cd47e3a5a622b9bc604478368b532f12be6e1bb975cd367 [INFO] running `"docker" "start" "-a" "7474a4278ccf17794cd47e3a5a622b9bc604478368b532f12be6e1bb975cd367"` [INFO] [stderr] Checking pretty_assertions v0.4.1 [INFO] [stderr] Checking proptest v0.3.4 [INFO] [stderr] Checking stfu8 v0.2.4 (/opt/crater/workdir) [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/helpers.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | v[0] as u32 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(v[0])` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/helpers.rs:40:20 [INFO] [stderr] | [INFO] [stderr] 40 | let lead = v[0] as i64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(v[0])` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/helpers.rs:41:21 [INFO] [stderr] | [INFO] [stderr] 41 | let trail = v[1] as i64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(v[1])` [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/decode.rs:50:1 [INFO] [stderr] | [INFO] [stderr] 50 | / pub(crate) fn decode_generic<'a, F>( [INFO] [stderr] 51 | | mut push_val: F, [INFO] [stderr] 52 | | s: &'a str [INFO] [stderr] 53 | | ) [INFO] [stderr] ... | [INFO] [stderr] 107 | | Ok(()) [INFO] [stderr] 108 | | } [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/decode.rs:72:22 [INFO] [stderr] | [INFO] [stderr] 72 | "\\t" => b'\t' as u32, [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(b'\t')` [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/decode.rs:73:22 [INFO] [stderr] | [INFO] [stderr] 73 | "\\n" => b'\n' as u32, [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(b'\n')` [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/decode.rs:74:22 [INFO] [stderr] | [INFO] [stderr] 74 | "\\r" => b'\r' as u32, [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(b'\r')` [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/decode.rs:75:22 [INFO] [stderr] | [INFO] [stderr] 75 | "\\\\" =>b'\\' 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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/decode.rs:76:22 [INFO] [stderr] | [INFO] [stderr] 76 | "\\x" => from_hex2(&mat.as_str().as_bytes()[2..]) as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(from_hex2(&mat.as_str().as_bytes()[2..]))` [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/decode.rs:80:26 [INFO] [stderr] | [INFO] [stderr] 80 | let d0 = from_hex2(&hex6[0..2]) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(from_hex2(&hex6[0..2]))` [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/decode.rs:81:26 [INFO] [stderr] | [INFO] [stderr] 81 | let d1 = from_hex2(&hex6[2..4]) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(from_hex2(&hex6[2..4]))` [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/decode.rs:82:26 [INFO] [stderr] | [INFO] [stderr] 82 | let d2 = from_hex2(&hex6[4..]) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(from_hex2(&hex6[4..]))` [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: the function has a cyclomatic complexity of 49 [INFO] [stderr] --> src/encode_u8.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | / pub(crate) fn encode(encoder: &super::Encoder, v: &[u8]) -> String { [INFO] [stderr] 22 | | let mut index = 0; [INFO] [stderr] 23 | | let len = v.len(); [INFO] [stderr] 24 | | let mut out = String::with_capacity(len + len / 8); [INFO] [stderr] ... | [INFO] [stderr] 133 | | out [INFO] [stderr] 134 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 94 | if next!() & !CONT_MASK != TAG_CONT_U8 { [INFO] [stderr] | ------- in this macro invocation [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 95 | escape_them!(); //orig: err!(Some(1)) [INFO] [stderr] | --------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 99 | match (first, next!()) { [INFO] [stderr] | ------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 104 | _ => escape_them!(), // orig: err!(Some(1)) [INFO] [stderr] | -------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 106 | if next!() & !CONT_MASK != TAG_CONT_U8 { [INFO] [stderr] | ------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 107 | escape_them!(); //orig: err!(Some(2)) [INFO] [stderr] | --------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 111 | match (first, next!()) { [INFO] [stderr] | ------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 113 | _ => escape_them!(), //orig: err!(Some(1)) [INFO] [stderr] | -------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 115 | if next!() & !CONT_MASK != TAG_CONT_U8 { [INFO] [stderr] | ------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 116 | escape_them!(); //orig: err!(Some(2)) [INFO] [stderr] | --------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 118 | if next!() & !CONT_MASK != TAG_CONT_U8 { [INFO] [stderr] | ------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 119 | escape_them!(); //orig: err!(Some(3)) [INFO] [stderr] | --------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 122 | _ => escape_them!(), //orig: err!(Some(1)) [INFO] [stderr] | -------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:58:45 [INFO] [stderr] | [INFO] [stderr] 58 | out.push_str(&str::from_utf8(&v[old_offset..(index+1)]).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 125 | write_them!(); [INFO] [stderr] | -------------- in this macro invocation [INFO] [stderr] | [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:214:30 [INFO] [stderr] | [INFO] [stderr] 214 | if val > u8::MAX as u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(u8::MAX)` [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:276:30 [INFO] [stderr] | [INFO] [stderr] 276 | if val > u16::MAX as u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(u16::MAX)` [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: lint name `zero_width_space` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> tests/sanity.rs:2:10 [INFO] [stderr] | [INFO] [stderr] 2 | #![allow(zero_width_space)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change it to: `clippy::zero_width_space` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(renamed_and_removed_lints)] on by default [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> tests/fuzz.rs:78:59 [INFO] [stderr] | [INFO] [stderr] 78 | fn fuzz_u16_binary(ref v in proptest::collection::vec(0..(u32::from(u16::MAX) + 1), 0..300)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=u32::from(u16::MAX)` [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: an inclusive range would be more readable [INFO] [stderr] --> tests/fuzz.rs:88:62 [INFO] [stderr] | [INFO] [stderr] 88 | fn fuzz_u32_illformed(ref v in proptest::collection::vec(LEAD_MIN..(TRAIL_MAX+1), 0..300)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use: `LEAD_MIN..=TRAIL_MAX` [INFO] [stderr] | [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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/helpers.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | v[0] as u32 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(v[0])` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/helpers.rs:40:20 [INFO] [stderr] | [INFO] [stderr] 40 | let lead = v[0] as i64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(v[0])` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/helpers.rs:41:21 [INFO] [stderr] | [INFO] [stderr] 41 | let trail = v[1] as i64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(v[1])` [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] error: zero-width space detected [INFO] [stderr] --> src/helpers.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | / fn sanity_utf_conversion() { [INFO] [stderr] 99 | | assert_conversions("foo bar", false); [INFO] [stderr] 100 | | assert_conversions("foo bar", false); [INFO] [stderr] 101 | | assert_conversions("¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­", false); [INFO] [stderr] ... | [INFO] [stderr] 121 | | ); [INFO] [stderr] 122 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::zero_width_space)] on by default [INFO] [stderr] = help: Consider replacing the string with: [INFO] [stderr] "fn sanity_utf_conversion() { [INFO] [stderr] assert_conversions("foo bar", false); [INFO] [stderr] assert_conversions("foo bar", false); [INFO] [stderr] assert_conversions("¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­", false); [INFO] [stderr] assert_conversions(" ʰ ʱ ʲ ʳ ʴ ʵ ʶ ʷ ʸ ʹ ʺ ʻ", false); [INFO] [stderr] assert_conversions("܀ ܁ ܂ ܃ ܄ ܅ ܆ ܇ ܈ ܉ ܊ ܋ ܌ ܍ ܏", false); [INFO] [stderr] assert_conversions("Ꭰ Ꭱ Ꭲ Ꭳ Ꭴ Ꭵ Ꭶ Ꭷ Ꭸ Ꭹ", false); [INFO] [stderr] assert_conversions("ἀ ἁ ἂ ἃ ἄ ἅ ἆ ἇ Ἀ Ἁ", false); [INFO] [stderr] assert_conversions( [INFO] [stderr] "                       \u{200B} ‌ ‍ ‎ ‏ ‐ ", [INFO] [stderr] false, [INFO] [stderr] ); [INFO] [stderr] assert_conversions("‑ ‒ – — ― ‖ ‗ ‘ ’ ‚ ‛ “", false); [INFO] [stderr] assert_conversions(" ⃐ ⃑ ⃒ ⃓ ⃔ ⃕ ⃖ ⃗ ⃘ ⃙ ⃚ ⃛ ⃜ ⃝ ⃞ ⃟ ⃠ ⃡ ⃢ ⃣ ⃤ ⃥ ⃦ ⃧ ⃨ ⃩ ⃪ ", false); [INFO] [stderr] assert_conversions( [INFO] [stderr] "⟰ ⟱ ⟲ ⟳ ⟴ ⟵ ⟶ ⟷ ⟸ ⟹ ⟺ ⟻ ⟼ ⟽ ⟾ ⟿", [INFO] [stderr] false, [INFO] [stderr] ); [INFO] [stderr] [INFO] [stderr] // suplimentary codes: [INFO] [stderr] assert_conversions( [INFO] [stderr] "𠜎 𠜎 𠜱 𠜱 𠝹 𠝹 𠱓 𠱓 𠱸 𠱸 𠲖 𠲖 𠳏 𠳏 𠳕 𠳕 𠴕 𠴕 𠵼 𠵼 𠵿 𠵿 𠸎 𠸎 𠸏 𠸏", [INFO] [stderr] true, [INFO] [stderr] ); [INFO] [stderr] }" [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_width_space [INFO] [stderr] [INFO] [stderr] error: zero-width space detected [INFO] [stderr] --> src/helpers.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | "                       ​ ‌ ‍ ‎ ‏ ‐ ", [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider replacing the string with: [INFO] [stderr] ""                       \u{200B} ‌ ‍ ‎ ‏ ‐ "" [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_width_space [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/decode.rs:50:1 [INFO] [stderr] | [INFO] [stderr] 50 | / pub(crate) fn decode_generic<'a, F>( [INFO] [stderr] 51 | | mut push_val: F, [INFO] [stderr] 52 | | s: &'a str [INFO] [stderr] 53 | | ) [INFO] [stderr] ... | [INFO] [stderr] 107 | | Ok(()) [INFO] [stderr] 108 | | } [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/decode.rs:72:22 [INFO] [stderr] | [INFO] [stderr] 72 | "\\t" => b'\t' as u32, [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(b'\t')` [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/decode.rs:73:22 [INFO] [stderr] | [INFO] [stderr] 73 | "\\n" => b'\n' as u32, [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(b'\n')` [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/decode.rs:74:22 [INFO] [stderr] | [INFO] [stderr] 74 | "\\r" => b'\r' as u32, [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(b'\r')` [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/decode.rs:75:22 [INFO] [stderr] | [INFO] [stderr] 75 | "\\\\" =>b'\\' 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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/decode.rs:76:22 [INFO] [stderr] | [INFO] [stderr] 76 | "\\x" => from_hex2(&mat.as_str().as_bytes()[2..]) as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(from_hex2(&mat.as_str().as_bytes()[2..]))` [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/decode.rs:80:26 [INFO] [stderr] | [INFO] [stderr] 80 | let d0 = from_hex2(&hex6[0..2]) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(from_hex2(&hex6[0..2]))` [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/decode.rs:81:26 [INFO] [stderr] | [INFO] [stderr] 81 | let d1 = from_hex2(&hex6[2..4]) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(from_hex2(&hex6[2..4]))` [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/decode.rs:82:26 [INFO] [stderr] | [INFO] [stderr] 82 | let d2 = from_hex2(&hex6[4..]) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(from_hex2(&hex6[4..]))` [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: the function has a cyclomatic complexity of 49 [INFO] [stderr] --> src/encode_u8.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | / pub(crate) fn encode(encoder: &super::Encoder, v: &[u8]) -> String { [INFO] [stderr] 22 | | let mut index = 0; [INFO] [stderr] 23 | | let len = v.len(); [INFO] [stderr] 24 | | let mut out = String::with_capacity(len + len / 8); [INFO] [stderr] ... | [INFO] [stderr] 133 | | out [INFO] [stderr] 134 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 94 | if next!() & !CONT_MASK != TAG_CONT_U8 { [INFO] [stderr] | ------- in this macro invocation [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 95 | escape_them!(); //orig: err!(Some(1)) [INFO] [stderr] | --------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 99 | match (first, next!()) { [INFO] [stderr] | ------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 104 | _ => escape_them!(), // orig: err!(Some(1)) [INFO] [stderr] | -------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 106 | if next!() & !CONT_MASK != TAG_CONT_U8 { [INFO] [stderr] | ------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 107 | escape_them!(); //orig: err!(Some(2)) [INFO] [stderr] | --------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 111 | match (first, next!()) { [INFO] [stderr] | ------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 113 | _ => escape_them!(), //orig: err!(Some(1)) [INFO] [stderr] | -------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 115 | if next!() & !CONT_MASK != TAG_CONT_U8 { [INFO] [stderr] | ------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 116 | escape_them!(); //orig: err!(Some(2)) [INFO] [stderr] | --------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 118 | if next!() & !CONT_MASK != TAG_CONT_U8 { [INFO] [stderr] | ------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 119 | escape_them!(); //orig: err!(Some(3)) [INFO] [stderr] | --------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for i in old_offset..(index+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 122 | _ => escape_them!(), //orig: err!(Some(1)) [INFO] [stderr] | -------------- in this macro invocation [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/encode_u8.rs:58:45 [INFO] [stderr] | [INFO] [stderr] 58 | out.push_str(&str::from_utf8(&v[old_offset..(index+1)]).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `old_offset..=index` [INFO] [stderr] ... [INFO] [stderr] 125 | write_them!(); [INFO] [stderr] | -------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: zero-width space detected [INFO] [stderr] --> src/encode_u8.rs:162:1 [INFO] [stderr] | [INFO] [stderr] 162 | / fn sanity_encode() { [INFO] [stderr] 163 | | fn enc(s: &str) -> String { [INFO] [stderr] 164 | | let out = encode(&super::Encoder::new(), s.as_bytes()); [INFO] [stderr] 165 | | // validation, we may use from_utf8_unchecked in the future [INFO] [stderr] ... | [INFO] [stderr] 192 | | ); [INFO] [stderr] 193 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: Consider replacing the string with: [INFO] [stderr] "fn sanity_encode() { [INFO] [stderr] fn enc(s: &str) -> String { [INFO] [stderr] let out = encode(&super::Encoder::new(), s.as_bytes()); [INFO] [stderr] // validation, we may use from_utf8_unchecked in the future [INFO] [stderr] let _ = ::std::str::from_utf8(&out.as_bytes()).unwrap(); [INFO] [stderr] out [INFO] [stderr] } [INFO] [stderr] fn assert_enc(s: &str) { [INFO] [stderr] assert_eq!(enc(s), s); [INFO] [stderr] } [INFO] [stderr] assert_enc("foo bar"); [INFO] [stderr] assert_enc("¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­"); [INFO] [stderr] assert_enc(" ʰ ʱ ʲ ʳ ʴ ʵ ʶ ʷ ʸ ʹ ʺ ʻ"); [INFO] [stderr] assert_enc("܀ ܁ ܂ ܃ ܄ ܅ ܆ ܇ ܈ ܉ ܊ ܋ ܌ ܍ ܏"); [INFO] [stderr] assert_enc("Ꭰ Ꭱ Ꭲ Ꭳ Ꭴ Ꭵ Ꭶ Ꭷ Ꭸ Ꭹ"); [INFO] [stderr] assert_enc("ἀ ἁ ἂ ἃ ἄ ἅ ἆ ἇ Ἀ Ἁ"); [INFO] [stderr] assert_enc("                       \u{200B} ‌ ‍ ‎ ‏ ‐ "); [INFO] [stderr] assert_enc("‑ ‒ – — ― ‖ ‗ ‘ ’ ‚ ‛ “");; [INFO] [stderr] assert_enc(" ⃐ ⃑ ⃒ ⃓ ⃔ ⃕ ⃖ ⃗ ⃘ ⃙ ⃚ ⃛ ⃜ ⃝ ⃞ ⃟ ⃠ ⃡ ⃢ ⃣ ⃤ ⃥ ⃦ ⃧ ⃨ ⃩ ⃪ "); [INFO] [stderr] [INFO] [stderr] // Test that `\` gets escaped [INFO] [stderr] assert_eq!( [INFO] [stderr] /**/ enc("¡ ¢ £ ¤ \\¥ ¦ § ¨ © ª « \\¬ ­"), [INFO] [stderr] /* */ r"¡ ¢ £ ¤ \\¥ ¦ § ¨ © ª « \\¬ ­" [INFO] [stderr] ); [INFO] [stderr] [INFO] [stderr] // Test that newlines gets escaped [INFO] [stderr] assert_eq!( [INFO] [stderr] /**/ enc("Ā ā Ă \nă Ą ą Ć\n ć Ĉ ĉ\n"), [INFO] [stderr] /* */ r"Ā ā Ă \nă Ą ą Ć\n ć Ĉ ĉ\n", [INFO] [stderr] ); [INFO] [stderr] }" [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_width_space [INFO] [stderr] [INFO] [stderr] error: zero-width space detected [INFO] [stderr] --> src/encode_u8.rs:178:16 [INFO] [stderr] | [INFO] [stderr] 178 | assert_enc("                       ​ ‌ ‍ ‎ ‏ ‐ "); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider replacing the string with: [INFO] [stderr] ""                       \u{200B} ‌ ‍ ‎ ‏ ‐ "" [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_width_space [INFO] [stderr] [INFO] [stderr] error: zero-width space detected [INFO] [stderr] --> src/encode_u16.rs:79:1 [INFO] [stderr] | [INFO] [stderr] 79 | / fn sanity_encode() { [INFO] [stderr] 80 | | fn enc(s: &str) -> String { [INFO] [stderr] 81 | | let utf16: Vec = s.encode_utf16().collect(); [INFO] [stderr] 82 | | println!("utf16: {:?}", utf16); [INFO] [stderr] ... | [INFO] [stderr] 112 | | ); [INFO] [stderr] 113 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: Consider replacing the string with: [INFO] [stderr] "fn sanity_encode() { [INFO] [stderr] fn enc(s: &str) -> String { [INFO] [stderr] let utf16: Vec = s.encode_utf16().collect(); [INFO] [stderr] println!("utf16: {:?}", utf16); [INFO] [stderr] let out = encode(&super::Encoder::new(), &utf16); [INFO] [stderr] // validation, we may use from_utf8_unchecked in the future [INFO] [stderr] let _ = ::std::str::from_utf8(&out.as_bytes()).unwrap(); [INFO] [stderr] out [INFO] [stderr] } [INFO] [stderr] fn assert_enc(s: &str) { [INFO] [stderr] assert_eq!(enc(s), s); [INFO] [stderr] } [INFO] [stderr] assert_enc("foo bar"); [INFO] [stderr] assert_enc("foo bar"); [INFO] [stderr] assert_enc("¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­"); [INFO] [stderr] assert_enc(" ʰ ʱ ʲ ʳ ʴ ʵ ʶ ʷ ʸ ʹ ʺ ʻ"); [INFO] [stderr] assert_enc("܀ ܁ ܂ ܃ ܄ ܅ ܆ ܇ ܈ ܉ ܊ ܋ ܌ ܍ ܏"); [INFO] [stderr] assert_enc("Ꭰ Ꭱ Ꭲ Ꭳ Ꭴ Ꭵ Ꭶ Ꭷ Ꭸ Ꭹ"); [INFO] [stderr] assert_enc("ἀ ἁ ἂ ἃ ἄ ἅ ἆ ἇ Ἀ Ἁ"); [INFO] [stderr] assert_enc("                       \u{200B} ‌ ‍ ‎ ‏ ‐ "); [INFO] [stderr] assert_enc("‑ ‒ – — ― ‖ ‗ ‘ ’ ‚ ‛ “");; [INFO] [stderr] assert_enc(" ⃐ ⃑ ⃒ ⃓ ⃔ ⃕ ⃖ ⃗ ⃘ ⃙ ⃚ ⃛ ⃜ ⃝ ⃞ ⃟ ⃠ ⃡ ⃢ ⃣ ⃤ ⃥ ⃦ ⃧ ⃨ ⃩ ⃪ "); [INFO] [stderr] [INFO] [stderr] // Test that `\` gets escaped [INFO] [stderr] assert_eq!( [INFO] [stderr] /**/ enc("¡ ¢ £ ¤ \\¥ ¦ § ¨ © ª « \\¬ ­"), [INFO] [stderr] /* */ r"¡ ¢ £ ¤ \\¥ ¦ § ¨ © ª « \\¬ ­" [INFO] [stderr] ); [INFO] [stderr] [INFO] [stderr] // Test that newlines gets escaped [INFO] [stderr] assert_eq!( [INFO] [stderr] /**/ enc("Ā ā Ă \nă Ą ą Ć\n ć Ĉ ĉ\n"), [INFO] [stderr] /* */ r"Ā ā Ă \nă Ą ą Ć\n ć Ĉ ĉ\n", [INFO] [stderr] ); [INFO] [stderr] }" [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_width_space [INFO] [stderr] [INFO] [stderr] error: zero-width space detected [INFO] [stderr] --> src/encode_u16.rs:98:16 [INFO] [stderr] | [INFO] [stderr] 98 | assert_enc("                       ​ ‌ ‍ ‎ ‏ ‐ "); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider replacing the string with: [INFO] [stderr] ""                       \u{200B} ‌ ‍ ‎ ‏ ‐ "" [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_width_space [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:214:30 [INFO] [stderr] | [INFO] [stderr] 214 | if val > u8::MAX as u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(u8::MAX)` [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:276:30 [INFO] [stderr] | [INFO] [stderr] 276 | if val > u16::MAX as u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(u16::MAX)` [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] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `stfu8`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: lint name `zero_width_space` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> tests/sanity.rs:2:10 [INFO] [stderr] | [INFO] [stderr] 2 | #![allow(zero_width_space)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change it to: `clippy::zero_width_space` [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "7474a4278ccf17794cd47e3a5a622b9bc604478368b532f12be6e1bb975cd367"` [INFO] running `"docker" "rm" "-f" "7474a4278ccf17794cd47e3a5a622b9bc604478368b532f12be6e1bb975cd367"` [INFO] [stdout] 7474a4278ccf17794cd47e3a5a622b9bc604478368b532f12be6e1bb975cd367