[INFO] crate nock 0.4.0 is already in cache [INFO] extracting crate nock 0.4.0 into work/ex/clippy-test-run/sources/stable/reg/nock/0.4.0 [INFO] extracting crate nock 0.4.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/nock/0.4.0 [INFO] validating manifest of nock-0.4.0 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 nock-0.4.0 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 nock-0.4.0 [INFO] finished frobbing nock-0.4.0 [INFO] frobbed toml for nock-0.4.0 written to work/ex/clippy-test-run/sources/stable/reg/nock/0.4.0/Cargo.toml [INFO] started frobbing nock-0.4.0 [INFO] finished frobbing nock-0.4.0 [INFO] frobbed toml for nock-0.4.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/nock/0.4.0/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 nock-0.4.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/nock/0.4.0:/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] 17d78fd873476b4260c5ef9d2ea2cfd3aceb199144c9189cd4e944202fe6d47c [INFO] running `"docker" "start" "-a" "17d78fd873476b4260c5ef9d2ea2cfd3aceb199144c9189cd4e944202fe6d47c"` [INFO] [stderr] Checking nock v0.4.0 (/opt/crater/workdir) [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/lib.rs:433:21 [INFO] [stderr] | [INFO] [stderr] 433 | let u = try!(U::from_noun(b)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/lib.rs:433:21 [INFO] [stderr] | [INFO] [stderr] 433 | let u = try!(U::from_noun(b)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:195:25 [INFO] [stderr] | [INFO] [stderr] 195 | ret [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:194:35 [INFO] [stderr] | [INFO] [stderr] 194 | let ret = f(Shape::Cell(a, b)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:326:32 [INFO] [stderr] | [INFO] [stderr] 326 | let ret = (c >> 31) ^ (c & 0x7fffffff); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x7fff_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:336:32 [INFO] [stderr] | [INFO] [stderr] 336 | let ret = (c >> 31) ^ (c & 0x7fffffff); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x7fff_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: unreachable expression [INFO] [stderr] --> src/nock.rs:93:25 [INFO] [stderr] | [INFO] [stderr] 93 | / return match p.get() { [INFO] [stderr] 94 | | Shape::Cell(ref a, ref b) => { [INFO] [stderr] 95 | | if a == b { [INFO] [stderr] 96 | | // Yes. [INFO] [stderr] ... | [INFO] [stderr] 103 | | _ => return Err(NockError(format!("same"))), [INFO] [stderr] 104 | | }; [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [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/digit_slice.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | fn as_digits<'a>(&'a self) -> &'a [u8]; [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/digit_slice.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / fn as_digits<'a>(&'a self) -> &'a [u8] { [INFO] [stderr] 26 | | let n_bytes = (self.bits() + 7) / 8; [INFO] [stderr] 27 | | [INFO] [stderr] 28 | | unsafe { [INFO] [stderr] ... | [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | } [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: transmute from a reference to a reference [INFO] [stderr] --> src/digit_slice.rs:29:23 [INFO] [stderr] | [INFO] [stderr] 29 | let ptr = mem::transmute::<&BigUint, &Vec>(self) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(self as *const num::BigUint as *const std::vec::Vec)` [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] error: casting from `*mut u8` to a more-strictly-aligned pointer (`*mut u32`) [INFO] [stderr] --> src/digit_slice.rs:46:23 [INFO] [stderr] | [INFO] [stderr] 46 | let ptr = v.as_mut_ptr() as *mut BigDigit; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::cast_ptr_alignment)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [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/digit_slice.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | / fn as_digits<'a>(&'a self) -> &'a[u8] { [INFO] [stderr] 66 | | let n_bytes = (mem::size_of::<$t>() * 8 - self.leading_zeros() as usize + 7) / 8; [INFO] [stderr] 67 | | [INFO] [stderr] 68 | | unsafe { [INFO] [stderr] ... | [INFO] [stderr] 71 | | } [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] ... [INFO] [stderr] 91 | primitive_impl!(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#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/digit_slice.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | let ptr: *const u8 = mem::transmute(self); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self as *const u8` [INFO] [stderr] ... [INFO] [stderr] 91 | primitive_impl!(u8); [INFO] [stderr] | -------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [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/digit_slice.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | / fn as_digits<'a>(&'a self) -> &'a[u8] { [INFO] [stderr] 66 | | let n_bytes = (mem::size_of::<$t>() * 8 - self.leading_zeros() as usize + 7) / 8; [INFO] [stderr] 67 | | [INFO] [stderr] 68 | | unsafe { [INFO] [stderr] ... | [INFO] [stderr] 71 | | } [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] ... [INFO] [stderr] 92 | primitive_impl!(u16); [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#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/digit_slice.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | let ptr: *const u8 = mem::transmute(self); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self as *const u16 as *const u8` [INFO] [stderr] ... [INFO] [stderr] 92 | primitive_impl!(u16); [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#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/digit_slice.rs:83:28 [INFO] [stderr] | [INFO] [stderr] 83 | ret |= digits[i] as $t << (i * 8); [INFO] [stderr] | ^^^^^^^^^ help: try: `u16::from(digits[i])` [INFO] [stderr] ... [INFO] [stderr] 92 | primitive_impl!(u16); [INFO] [stderr] | --------------------- in this macro invocation [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/digit_slice.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | / fn as_digits<'a>(&'a self) -> &'a[u8] { [INFO] [stderr] 66 | | let n_bytes = (mem::size_of::<$t>() * 8 - self.leading_zeros() as usize + 7) / 8; [INFO] [stderr] 67 | | [INFO] [stderr] 68 | | unsafe { [INFO] [stderr] ... | [INFO] [stderr] 71 | | } [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] ... [INFO] [stderr] 93 | primitive_impl!(u32); [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#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/digit_slice.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | let ptr: *const u8 = mem::transmute(self); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self as *const u32 as *const u8` [INFO] [stderr] ... [INFO] [stderr] 93 | primitive_impl!(u32); [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#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/digit_slice.rs:83:28 [INFO] [stderr] | [INFO] [stderr] 83 | ret |= digits[i] as $t << (i * 8); [INFO] [stderr] | ^^^^^^^^^ help: try: `u32::from(digits[i])` [INFO] [stderr] ... [INFO] [stderr] 93 | primitive_impl!(u32); [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#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/digit_slice.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | / fn as_digits<'a>(&'a self) -> &'a[u8] { [INFO] [stderr] 66 | | let n_bytes = (mem::size_of::<$t>() * 8 - self.leading_zeros() as usize + 7) / 8; [INFO] [stderr] 67 | | [INFO] [stderr] 68 | | unsafe { [INFO] [stderr] ... | [INFO] [stderr] 71 | | } [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] ... [INFO] [stderr] 94 | primitive_impl!(u64); [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#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/digit_slice.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | let ptr: *const u8 = mem::transmute(self); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self as *const u64 as *const u8` [INFO] [stderr] ... [INFO] [stderr] 94 | primitive_impl!(u64); [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#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/digit_slice.rs:83:28 [INFO] [stderr] | [INFO] [stderr] 83 | ret |= digits[i] as $t << (i * 8); [INFO] [stderr] | ^^^^^^^^^ help: try: `u64::from(digits[i])` [INFO] [stderr] ... [INFO] [stderr] 94 | primitive_impl!(u64); [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#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/digit_slice.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | / fn as_digits<'a>(&'a self) -> &'a[u8] { [INFO] [stderr] 66 | | let n_bytes = (mem::size_of::<$t>() * 8 - self.leading_zeros() as usize + 7) / 8; [INFO] [stderr] 67 | | [INFO] [stderr] 68 | | unsafe { [INFO] [stderr] ... | [INFO] [stderr] 71 | | } [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] ... [INFO] [stderr] 95 | primitive_impl!(usize); [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#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/digit_slice.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | let ptr: *const u8 = mem::transmute(self); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self as *const usize as *const u8` [INFO] [stderr] ... [INFO] [stderr] 95 | primitive_impl!(usize); [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#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/digit_slice.rs:103:8 [INFO] [stderr] | [INFO] [stderr] 103 | if data.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `data.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: useless use of `format!` [INFO] [stderr] --> src/nock.rs:61:55 [INFO] [stderr] | [INFO] [stderr] 61 | _ => return Err(NockError(format!("fire"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"fire".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:85:48 [INFO] [stderr] | [INFO] [stderr] 85 | _ => Err(NockError(format!("bump"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"bump".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:103:55 [INFO] [stderr] | [INFO] [stderr] 103 | _ => return Err(NockError(format!("same"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"same".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:119:62 [INFO] [stderr] | [INFO] [stderr] 119 | return Err(NockError(format!("if"))); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `"if".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:122:59 [INFO] [stderr] | [INFO] [stderr] 122 | _ => return Err(NockError(format!("if"))), [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `"if".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:126:50 [INFO] [stderr] | [INFO] [stderr] 126 | return Err(NockError(format!("if"))); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `"if".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:140:55 [INFO] [stderr] | [INFO] [stderr] 140 | _ => return Err(NockError(format!("compose"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"compose".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:154:55 [INFO] [stderr] | [INFO] [stderr] 154 | _ => return Err(NockError(format!("push"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"push".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:175:55 [INFO] [stderr] | [INFO] [stderr] 175 | _ => return Err(NockError(format!("call"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"call".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:187:55 [INFO] [stderr] | [INFO] [stderr] 187 | _ => return Err(NockError(format!("hint"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"hint".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:205:50 [INFO] [stderr] | [INFO] [stderr] 205 | return Err(NockError(format!("autocons"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"autocons".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:210:38 [INFO] [stderr] | [INFO] [stderr] 210 | return Err(NockError(format!("nock"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"nock".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:227:38 [INFO] [stderr] | [INFO] [stderr] 227 | return Err(NockError(format!("axis"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"axis".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:243:28 [INFO] [stderr] | [INFO] [stderr] 243 | _ => Err(NockError(format!("axis"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"axis".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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/lib.rs:99:5 [INFO] [stderr] | [INFO] [stderr] 99 | / pub fn get<'a>(&'a self) -> NounShape<'a> { [INFO] [stderr] 100 | | match self.value { [INFO] [stderr] 101 | | Inner::Atom(ref v) => Shape::Atom(&v), [INFO] [stderr] 102 | | Inner::Cell(ref a, ref b) => Shape::Cell(&*a, &*b), [INFO] [stderr] 103 | | } [INFO] [stderr] 104 | | } [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/lib.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | / pub fn get_122<'a>(&'a self) -> Option<(&'a Noun, &'a Noun, &'a Noun)> { [INFO] [stderr] 113 | | if let Shape::Cell(ref a, ref b) = self.get() { [INFO] [stderr] 114 | | if let Shape::Cell(ref b, ref c) = b.get() { [INFO] [stderr] 115 | | return Some((a, b, c)); [INFO] [stderr] ... | [INFO] [stderr] 118 | | None [INFO] [stderr] 119 | | } [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/lib.rs:186:13 [INFO] [stderr] | [INFO] [stderr] 186 | / if memo.contains_key(&key) { [INFO] [stderr] 187 | | memo.get(&key).unwrap().clone() [INFO] [stderr] 188 | | } else { [INFO] [stderr] 189 | | let ret = match noun.get() { [INFO] [stderr] ... | [INFO] [stderr] 199 | | ret [INFO] [stderr] 200 | | } [INFO] [stderr] | |_____________^ help: consider using: `memo.entry(key)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/lib.rs:221:21 [INFO] [stderr] | [INFO] [stderr] 221 | let alpha = "abcdefghijklmnopqrstuvwxyz".as_bytes(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"abcdefghijklmnopqrstuvwxyz"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/lib.rs:298:1 [INFO] [stderr] | [INFO] [stderr] 298 | / impl hash::Hash for Noun { [INFO] [stderr] 299 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 300 | | self.hash.hash(state); [INFO] [stderr] 301 | | } [INFO] [stderr] 302 | | } [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:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | #[derive(Clone, PartialEq, Eq)] [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:323:18 [INFO] [stderr] | [INFO] [stderr] 323 | c = _fnv(*i as u32 ^ c); [INFO] [stderr] | ^^^^^^^^^ help: try: `u32::from(*i)` [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: useless use of `format!` [INFO] [stderr] --> src/lib.rs:384:32 [INFO] [stderr] | [INFO] [stderr] 384 | _ => Err(NockError(format!("FromNoun Rc> not an atom"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun Rc> not an atom".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:402:44 [INFO] [stderr] | [INFO] [stderr] 402 | .map_err(|_| NockError(format!("FromNoun FromDigits"))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun FromDigits".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:404:32 [INFO] [stderr] | [INFO] [stderr] 404 | _ => Err(NockError(format!("FromNoun FromDigits not an atom"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun FromDigits not an atom".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:436:32 [INFO] [stderr] | [INFO] [stderr] 436 | _ => Err(NockError(format!("FromNoun (T, U) not a cell"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun (T, U) not a cell".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:463:32 [INFO] [stderr] | [INFO] [stderr] 463 | _ => Err(NockError(format!("FromNoun (T, U, V) not a tuple"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun (T, U, V) not a tuple".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:484:44 [INFO] [stderr] | [INFO] [stderr] 484 | .map_err(|_| NockError(format!("FromNoun String"))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun String".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:486:32 [INFO] [stderr] | [INFO] [stderr] 486 | _ => Err(NockError(format!("FromNoun String not an atom"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun String not an atom".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:528:38 [INFO] [stderr] | [INFO] [stderr] 528 | return Err(NockError(format!("FromNoun Vec"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun Vec".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib.rs:589:19 [INFO] [stderr] | [INFO] [stderr] 589 | match input.peek().map(|&x| x) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `input.peek().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lib.rs:601:13 [INFO] [stderr] | [INFO] [stderr] 601 | / loop { [INFO] [stderr] 602 | | if let Some(&c) = input.peek() { [INFO] [stderr] 603 | | if c.is_digit(10) { [INFO] [stderr] 604 | | input.next(); [INFO] [stderr] ... | [INFO] [stderr] 622 | | } [INFO] [stderr] 623 | | } [INFO] [stderr] | |_____________^ help: try: `while let Some(&c) = input.peek() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:625:16 [INFO] [stderr] | [INFO] [stderr] 625 | 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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib.rs:656:23 [INFO] [stderr] | [INFO] [stderr] 656 | match input.peek().map(|&x| x) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `input.peek().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib.rs:674:23 [INFO] [stderr] | [INFO] [stderr] 674 | match input.peek().map(|&x| x) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `input.peek().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `nock`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:195:25 [INFO] [stderr] | [INFO] [stderr] 195 | ret [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:194:35 [INFO] [stderr] | [INFO] [stderr] 194 | let ret = f(Shape::Cell(a, b)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:326:32 [INFO] [stderr] | [INFO] [stderr] 326 | let ret = (c >> 31) ^ (c & 0x7fffffff); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x7fff_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:336:32 [INFO] [stderr] | [INFO] [stderr] 336 | let ret = (c >> 31) ^ (c & 0x7fffffff); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x7fff_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:772:41 [INFO] [stderr] | [INFO] [stderr] 772 | parses("4294967295", Noun::from(4294967295u32)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `4_294_967_295u32` [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:773:41 [INFO] [stderr] | [INFO] [stderr] 773 | parses("4294967296", Noun::from(4294967296u64)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `4_294_967_296u64` [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:899:50 [INFO] [stderr] | [INFO] [stderr] 899 | assert_eq!(String::from_noun(&Noun::from(7303014u32)), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `7_303_014u32` [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: use of deprecated item 'std::hash::SipHasher': use `std::collections::hash_map::DefaultHasher` instead [INFO] [stderr] --> src/lib.rs:747:21 [INFO] [stderr] | [INFO] [stderr] 747 | let mut s = hash::SipHasher::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::hash::SipHasher::new': use `std::collections::hash_map::DefaultHasher` instead [INFO] [stderr] --> src/lib.rs:747:21 [INFO] [stderr] | [INFO] [stderr] 747 | let mut s = hash::SipHasher::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/nock.rs:93:25 [INFO] [stderr] | [INFO] [stderr] 93 | / return match p.get() { [INFO] [stderr] 94 | | Shape::Cell(ref a, ref b) => { [INFO] [stderr] 95 | | if a == b { [INFO] [stderr] 96 | | // Yes. [INFO] [stderr] ... | [INFO] [stderr] 103 | | _ => return Err(NockError(format!("same"))), [INFO] [stderr] 104 | | }; [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [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/digit_slice.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | fn as_digits<'a>(&'a self) -> &'a [u8]; [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/digit_slice.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / fn as_digits<'a>(&'a self) -> &'a [u8] { [INFO] [stderr] 26 | | let n_bytes = (self.bits() + 7) / 8; [INFO] [stderr] 27 | | [INFO] [stderr] 28 | | unsafe { [INFO] [stderr] ... | [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | } [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: transmute from a reference to a reference [INFO] [stderr] --> src/digit_slice.rs:29:23 [INFO] [stderr] | [INFO] [stderr] 29 | let ptr = mem::transmute::<&BigUint, &Vec>(self) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(self as *const num::BigUint as *const std::vec::Vec)` [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] error: casting from `*mut u8` to a more-strictly-aligned pointer (`*mut u32`) [INFO] [stderr] --> src/digit_slice.rs:46:23 [INFO] [stderr] | [INFO] [stderr] 46 | let ptr = v.as_mut_ptr() as *mut BigDigit; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::cast_ptr_alignment)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [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/digit_slice.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | / fn as_digits<'a>(&'a self) -> &'a[u8] { [INFO] [stderr] 66 | | let n_bytes = (mem::size_of::<$t>() * 8 - self.leading_zeros() as usize + 7) / 8; [INFO] [stderr] 67 | | [INFO] [stderr] 68 | | unsafe { [INFO] [stderr] ... | [INFO] [stderr] 71 | | } [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] ... [INFO] [stderr] 91 | primitive_impl!(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#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/digit_slice.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | let ptr: *const u8 = mem::transmute(self); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self as *const u8` [INFO] [stderr] ... [INFO] [stderr] 91 | primitive_impl!(u8); [INFO] [stderr] | -------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [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/digit_slice.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | / fn as_digits<'a>(&'a self) -> &'a[u8] { [INFO] [stderr] 66 | | let n_bytes = (mem::size_of::<$t>() * 8 - self.leading_zeros() as usize + 7) / 8; [INFO] [stderr] 67 | | [INFO] [stderr] 68 | | unsafe { [INFO] [stderr] ... | [INFO] [stderr] 71 | | } [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] ... [INFO] [stderr] 92 | primitive_impl!(u16); [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#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/digit_slice.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | let ptr: *const u8 = mem::transmute(self); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self as *const u16 as *const u8` [INFO] [stderr] ... [INFO] [stderr] 92 | primitive_impl!(u16); [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#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/digit_slice.rs:83:28 [INFO] [stderr] | [INFO] [stderr] 83 | ret |= digits[i] as $t << (i * 8); [INFO] [stderr] | ^^^^^^^^^ help: try: `u16::from(digits[i])` [INFO] [stderr] ... [INFO] [stderr] 92 | primitive_impl!(u16); [INFO] [stderr] | --------------------- in this macro invocation [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/digit_slice.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | / fn as_digits<'a>(&'a self) -> &'a[u8] { [INFO] [stderr] 66 | | let n_bytes = (mem::size_of::<$t>() * 8 - self.leading_zeros() as usize + 7) / 8; [INFO] [stderr] 67 | | [INFO] [stderr] 68 | | unsafe { [INFO] [stderr] ... | [INFO] [stderr] 71 | | } [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] ... [INFO] [stderr] 93 | primitive_impl!(u32); [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#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/digit_slice.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | let ptr: *const u8 = mem::transmute(self); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self as *const u32 as *const u8` [INFO] [stderr] ... [INFO] [stderr] 93 | primitive_impl!(u32); [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#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/digit_slice.rs:83:28 [INFO] [stderr] | [INFO] [stderr] 83 | ret |= digits[i] as $t << (i * 8); [INFO] [stderr] | ^^^^^^^^^ help: try: `u32::from(digits[i])` [INFO] [stderr] ... [INFO] [stderr] 93 | primitive_impl!(u32); [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#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/digit_slice.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | / fn as_digits<'a>(&'a self) -> &'a[u8] { [INFO] [stderr] 66 | | let n_bytes = (mem::size_of::<$t>() * 8 - self.leading_zeros() as usize + 7) / 8; [INFO] [stderr] 67 | | [INFO] [stderr] 68 | | unsafe { [INFO] [stderr] ... | [INFO] [stderr] 71 | | } [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] ... [INFO] [stderr] 94 | primitive_impl!(u64); [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#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/digit_slice.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | let ptr: *const u8 = mem::transmute(self); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self as *const u64 as *const u8` [INFO] [stderr] ... [INFO] [stderr] 94 | primitive_impl!(u64); [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#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/digit_slice.rs:83:28 [INFO] [stderr] | [INFO] [stderr] 83 | ret |= digits[i] as $t << (i * 8); [INFO] [stderr] | ^^^^^^^^^ help: try: `u64::from(digits[i])` [INFO] [stderr] ... [INFO] [stderr] 94 | primitive_impl!(u64); [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#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/digit_slice.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | / fn as_digits<'a>(&'a self) -> &'a[u8] { [INFO] [stderr] 66 | | let n_bytes = (mem::size_of::<$t>() * 8 - self.leading_zeros() as usize + 7) / 8; [INFO] [stderr] 67 | | [INFO] [stderr] 68 | | unsafe { [INFO] [stderr] ... | [INFO] [stderr] 71 | | } [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] ... [INFO] [stderr] 95 | primitive_impl!(usize); [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#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/digit_slice.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | let ptr: *const u8 = mem::transmute(self); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self as *const usize as *const u8` [INFO] [stderr] ... [INFO] [stderr] 95 | primitive_impl!(usize); [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#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/digit_slice.rs:103:8 [INFO] [stderr] | [INFO] [stderr] 103 | if data.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `data.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: useless use of `vec!` [INFO] [stderr] --> src/digit_slice.rs:152:27 [INFO] [stderr] | [INFO] [stderr] 152 | assert_eq!(0, msb(&vec![])); [INFO] [stderr] | ^^^^^^^ help: you can use a slice directly: `&[]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/digit_slice.rs:153:27 [INFO] [stderr] | [INFO] [stderr] 153 | assert_eq!(1, msb(&vec![1])); [INFO] [stderr] | ^^^^^^^^ help: you can use a slice directly: `&[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/digit_slice.rs:154:27 [INFO] [stderr] | [INFO] [stderr] 154 | assert_eq!(4, msb(&vec![15])); [INFO] [stderr] | ^^^^^^^^^ help: you can use a slice directly: `&[15]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/digit_slice.rs:155:27 [INFO] [stderr] | [INFO] [stderr] 155 | assert_eq!(5, msb(&vec![16])); [INFO] [stderr] | ^^^^^^^^^ help: you can use a slice directly: `&[16]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/digit_slice.rs:156:28 [INFO] [stderr] | [INFO] [stderr] 156 | assert_eq!(13, msb(&vec![123, 16])); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: you can use a slice directly: `&[123, 16]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:61:55 [INFO] [stderr] | [INFO] [stderr] 61 | _ => return Err(NockError(format!("fire"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"fire".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:85:48 [INFO] [stderr] | [INFO] [stderr] 85 | _ => Err(NockError(format!("bump"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"bump".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:103:55 [INFO] [stderr] | [INFO] [stderr] 103 | _ => return Err(NockError(format!("same"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"same".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:119:62 [INFO] [stderr] | [INFO] [stderr] 119 | return Err(NockError(format!("if"))); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `"if".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:122:59 [INFO] [stderr] | [INFO] [stderr] 122 | _ => return Err(NockError(format!("if"))), [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `"if".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:126:50 [INFO] [stderr] | [INFO] [stderr] 126 | return Err(NockError(format!("if"))); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `"if".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:140:55 [INFO] [stderr] | [INFO] [stderr] 140 | _ => return Err(NockError(format!("compose"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"compose".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:154:55 [INFO] [stderr] | [INFO] [stderr] 154 | _ => return Err(NockError(format!("push"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"push".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:175:55 [INFO] [stderr] | [INFO] [stderr] 175 | _ => return Err(NockError(format!("call"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"call".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:187:55 [INFO] [stderr] | [INFO] [stderr] 187 | _ => return Err(NockError(format!("hint"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"hint".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:205:50 [INFO] [stderr] | [INFO] [stderr] 205 | return Err(NockError(format!("autocons"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"autocons".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:210:38 [INFO] [stderr] | [INFO] [stderr] 210 | return Err(NockError(format!("nock"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"nock".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:227:38 [INFO] [stderr] | [INFO] [stderr] 227 | return Err(NockError(format!("axis"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"axis".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/nock.rs:243:28 [INFO] [stderr] | [INFO] [stderr] 243 | _ => Err(NockError(format!("axis"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"axis".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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/lib.rs:99:5 [INFO] [stderr] | [INFO] [stderr] 99 | / pub fn get<'a>(&'a self) -> NounShape<'a> { [INFO] [stderr] 100 | | match self.value { [INFO] [stderr] 101 | | Inner::Atom(ref v) => Shape::Atom(&v), [INFO] [stderr] 102 | | Inner::Cell(ref a, ref b) => Shape::Cell(&*a, &*b), [INFO] [stderr] 103 | | } [INFO] [stderr] 104 | | } [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/lib.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | / pub fn get_122<'a>(&'a self) -> Option<(&'a Noun, &'a Noun, &'a Noun)> { [INFO] [stderr] 113 | | if let Shape::Cell(ref a, ref b) = self.get() { [INFO] [stderr] 114 | | if let Shape::Cell(ref b, ref c) = b.get() { [INFO] [stderr] 115 | | return Some((a, b, c)); [INFO] [stderr] ... | [INFO] [stderr] 118 | | None [INFO] [stderr] 119 | | } [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/lib.rs:186:13 [INFO] [stderr] | [INFO] [stderr] 186 | / if memo.contains_key(&key) { [INFO] [stderr] 187 | | memo.get(&key).unwrap().clone() [INFO] [stderr] 188 | | } else { [INFO] [stderr] 189 | | let ret = match noun.get() { [INFO] [stderr] ... | [INFO] [stderr] 199 | | ret [INFO] [stderr] 200 | | } [INFO] [stderr] | |_____________^ help: consider using: `memo.entry(key)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/lib.rs:221:21 [INFO] [stderr] | [INFO] [stderr] 221 | let alpha = "abcdefghijklmnopqrstuvwxyz".as_bytes(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"abcdefghijklmnopqrstuvwxyz"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/lib.rs:298:1 [INFO] [stderr] | [INFO] [stderr] 298 | / impl hash::Hash for Noun { [INFO] [stderr] 299 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 300 | | self.hash.hash(state); [INFO] [stderr] 301 | | } [INFO] [stderr] 302 | | } [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:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | #[derive(Clone, PartialEq, Eq)] [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:323:18 [INFO] [stderr] | [INFO] [stderr] 323 | c = _fnv(*i as u32 ^ c); [INFO] [stderr] | ^^^^^^^^^ help: try: `u32::from(*i)` [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: useless use of `format!` [INFO] [stderr] --> src/lib.rs:384:32 [INFO] [stderr] | [INFO] [stderr] 384 | _ => Err(NockError(format!("FromNoun Rc> not an atom"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun Rc> not an atom".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:402:44 [INFO] [stderr] | [INFO] [stderr] 402 | .map_err(|_| NockError(format!("FromNoun FromDigits"))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun FromDigits".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:404:32 [INFO] [stderr] | [INFO] [stderr] 404 | _ => Err(NockError(format!("FromNoun FromDigits not an atom"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun FromDigits not an atom".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:436:32 [INFO] [stderr] | [INFO] [stderr] 436 | _ => Err(NockError(format!("FromNoun (T, U) not a cell"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun (T, U) not a cell".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:463:32 [INFO] [stderr] | [INFO] [stderr] 463 | _ => Err(NockError(format!("FromNoun (T, U, V) not a tuple"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun (T, U, V) not a tuple".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:484:44 [INFO] [stderr] | [INFO] [stderr] 484 | .map_err(|_| NockError(format!("FromNoun String"))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun String".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:486:32 [INFO] [stderr] | [INFO] [stderr] 486 | _ => Err(NockError(format!("FromNoun String not an atom"))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun String not an atom".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:528:38 [INFO] [stderr] | [INFO] [stderr] 528 | return Err(NockError(format!("FromNoun Vec"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"FromNoun Vec".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib.rs:589:19 [INFO] [stderr] | [INFO] [stderr] 589 | match input.peek().map(|&x| x) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `input.peek().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lib.rs:601:13 [INFO] [stderr] | [INFO] [stderr] 601 | / loop { [INFO] [stderr] 602 | | if let Some(&c) = input.peek() { [INFO] [stderr] 603 | | if c.is_digit(10) { [INFO] [stderr] 604 | | input.next(); [INFO] [stderr] ... | [INFO] [stderr] 622 | | } [INFO] [stderr] 623 | | } [INFO] [stderr] | |_____________^ help: try: `while let Some(&c) = input.peek() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:625:16 [INFO] [stderr] | [INFO] [stderr] 625 | 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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib.rs:656:23 [INFO] [stderr] | [INFO] [stderr] 656 | match input.peek().map(|&x| x) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `input.peek().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib.rs:674:23 [INFO] [stderr] | [INFO] [stderr] 674 | match input.peek().map(|&x| x) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `input.peek().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/lib.rs:727:20 [INFO] [stderr] | [INFO] [stderr] 727 | assert_eq!(input.parse::().ok().expect("Parsing failed"), output); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:732:13 [INFO] [stderr] | [INFO] [stderr] 732 | Err(_) => panic!("Parsing failed"), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/lib.rs:741:34 [INFO] [stderr] | [INFO] [stderr] 741 | assert_eq!(format!("{}", VM.nock_on(s, f).ok().expect("Eval failed")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `nock`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "17d78fd873476b4260c5ef9d2ea2cfd3aceb199144c9189cd4e944202fe6d47c"` [INFO] running `"docker" "rm" "-f" "17d78fd873476b4260c5ef9d2ea2cfd3aceb199144c9189cd4e944202fe6d47c"` [INFO] [stdout] 17d78fd873476b4260c5ef9d2ea2cfd3aceb199144c9189cd4e944202fe6d47c