[INFO] crate toolshed 0.7.0 is already in cache [INFO] extracting crate toolshed 0.7.0 into work/ex/clippy-test-run/sources/stable/reg/toolshed/0.7.0 [INFO] extracting crate toolshed 0.7.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/toolshed/0.7.0 [INFO] validating manifest of toolshed-0.7.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 toolshed-0.7.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 toolshed-0.7.0 [INFO] finished frobbing toolshed-0.7.0 [INFO] frobbed toml for toolshed-0.7.0 written to work/ex/clippy-test-run/sources/stable/reg/toolshed/0.7.0/Cargo.toml [INFO] started frobbing toolshed-0.7.0 [INFO] finished frobbing toolshed-0.7.0 [INFO] frobbed toml for toolshed-0.7.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/toolshed/0.7.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 toolshed-0.7.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/toolshed/0.7.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] b13904909665ac6e2048f9a3041c4b0bde6dc7bb06a8a8166ca3466f90496260 [INFO] running `"docker" "start" "-a" "b13904909665ac6e2048f9a3041c4b0bde6dc7bb06a8a8166ca3466f90496260"` [INFO] [stderr] Checking toolshed v0.7.0 (/opt/crater/workdir) [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/bloom.rs:122:14 [INFO] [stderr] | [INFO] [stderr] 122 | 0 => 0x0001000000000000, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0001_0000_0000_0000` [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/bloom.rs:124:14 [INFO] [stderr] | [INFO] [stderr] 124 | 1 => 0x0002000000000000 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0002_0000_0000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/bloom.rs:127:14 [INFO] [stderr] | [INFO] [stderr] 127 | 2 => 0x0004000000000000 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0004_0000_0000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/bloom.rs:131:14 [INFO] [stderr] | [INFO] [stderr] 131 | n => 0x0001000000000000 << n % 16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `0x0001000000000000 << (n % 16)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/bloom.rs:131:14 [INFO] [stderr] | [INFO] [stderr] 131 | n => 0x0001000000000000 << n % 16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0001_0000_0000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/arena.rs:357:32 [INFO] [stderr] | [INFO] [stderr] 357 | assert_eq!(arena.alloc(0x8000000u64), &0x8000000u64); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `0x0800_0000u64` [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/arena.rs:357:48 [INFO] [stderr] | [INFO] [stderr] 357 | assert_eq!(arena.alloc(0x8000000u64), &0x8000000u64); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `0x0800_0000u64` [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/arena.rs:400:32 [INFO] [stderr] | [INFO] [stderr] 400 | assert_eq!(arena.alloc(0x8000000u64), &0x8000000u64); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `0x0800_0000u64` [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/arena.rs:400:48 [INFO] [stderr] | [INFO] [stderr] 400 | assert_eq!(arena.alloc(0x8000000u64), &0x8000000u64); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `0x0800_0000u64` [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/bloom.rs:122:14 [INFO] [stderr] | [INFO] [stderr] 122 | 0 => 0x0001000000000000, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0001_0000_0000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/bloom.rs:124:14 [INFO] [stderr] | [INFO] [stderr] 124 | 1 => 0x0002000000000000 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0002_0000_0000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/bloom.rs:127:14 [INFO] [stderr] | [INFO] [stderr] 127 | 2 => 0x0004000000000000 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0004_0000_0000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/bloom.rs:131:14 [INFO] [stderr] | [INFO] [stderr] 131 | n => 0x0001000000000000 << n % 16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `0x0001000000000000 << (n % 16)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/bloom.rs:131:14 [INFO] [stderr] | [INFO] [stderr] 131 | n => 0x0001000000000000 << n % 16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0001_0000_0000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/cell.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn get_mut<'a>(&'a mut self) -> &'a mut T { [INFO] [stderr] 48 | | // We can just cast the pointer from `CopyCell` to `T` because of [INFO] [stderr] 49 | | // #[repr(transparent)] [INFO] [stderr] 50 | | unsafe { [INFO] [stderr] 51 | | &mut *(self as *mut CopyCell as *mut T) [INFO] [stderr] 52 | | } [INFO] [stderr] 53 | | } [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: you should consider adding a `Default` implementation for `map::BloomMap<'arena, K, V>` [INFO] [stderr] --> src/map.rs:203:5 [INFO] [stderr] | [INFO] [stderr] 203 | / pub fn new() -> Self { [INFO] [stderr] 204 | | BloomMap { [INFO] [stderr] 205 | | filter: CopyCell::new(0), [INFO] [stderr] 206 | | inner: Map::new(), [INFO] [stderr] 207 | | } [INFO] [stderr] 208 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 196 | impl Default for map::BloomMap<'arena, K, V> { [INFO] [stderr] 197 | fn default() -> Self { [INFO] [stderr] 198 | Self::new() [INFO] [stderr] 199 | } [INFO] [stderr] 200 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `set::BloomSet<'arena, I>` [INFO] [stderr] --> src/set.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | / pub fn new() -> Self { [INFO] [stderr] 94 | | BloomSet { [INFO] [stderr] 95 | | map: BloomMap::new(), [INFO] [stderr] 96 | | } [INFO] [stderr] 97 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 87 | impl Default for set::BloomSet<'arena, I> { [INFO] [stderr] 88 | fn default() -> Self { [INFO] [stderr] 89 | Self::new() [INFO] [stderr] 90 | } [INFO] [stderr] 91 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/list.rs:119:20 [INFO] [stderr] | [INFO] [stderr] 119 | pub fn prepend(&self, arena: &'arena Arena, value: T) -> &'arena T { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/list.rs:134:18 [INFO] [stderr] | [INFO] [stderr] 134 | pub fn shift(&self) -> Option<&'arena T> { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `list::GrowableList<'arena, T>` [INFO] [stderr] --> src/list.rs:224:5 [INFO] [stderr] | [INFO] [stderr] 224 | / pub fn new() -> Self { [INFO] [stderr] 225 | | GrowableList { [INFO] [stderr] 226 | | first: CopyCell::new(None), [INFO] [stderr] 227 | | last: CopyCell::new(None), [INFO] [stderr] 228 | | } [INFO] [stderr] 229 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 218 | impl Default for list::GrowableList<'arena, T> { [INFO] [stderr] 219 | fn default() -> Self { [INFO] [stderr] 220 | Self::new() [INFO] [stderr] 221 | } [INFO] [stderr] 222 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: defining a method called `as_ref` on this type; consider implementing the `std::convert::AsRef` trait or choosing a less ambiguous name [INFO] [stderr] --> src/arena.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | / pub unsafe fn as_ref(&self) -> &'arena T { [INFO] [stderr] 51 | | &*(&self.pointer.value as *const T) [INFO] [stderr] 52 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/arena.rs:58:30 [INFO] [stderr] | [INFO] [stderr] 58 | pub unsafe fn as_mut_ref(self) -> &'arena mut T { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `arena::Arena` [INFO] [stderr] --> src/arena.rs:154:5 [INFO] [stderr] | [INFO] [stderr] 154 | / pub fn new() -> Self { [INFO] [stderr] 155 | | let mut store = vec![Vec::with_capacity(ARENA_BLOCK)]; [INFO] [stderr] 156 | | let ptr = store[0].as_mut_ptr(); [INFO] [stderr] 157 | | [INFO] [stderr] ... | [INFO] [stderr] 162 | | } [INFO] [stderr] 163 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 152 | impl Default for arena::Arena { [INFO] [stderr] 153 | fn default() -> Self { [INFO] [stderr] 154 | Self::new() [INFO] [stderr] 155 | } [INFO] [stderr] 156 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: mutable borrow from immutable input(s) [INFO] [stderr] --> src/arena.rs:167:70 [INFO] [stderr] | [INFO] [stderr] 167 | pub fn alloc<'arena, T: Sized + Copy>(&'arena self, value: T) -> &'arena mut T { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::mut_from_ref)] on by default [INFO] [stderr] note: immutable borrow here [INFO] [stderr] --> src/arena.rs:167:43 [INFO] [stderr] | [INFO] [stderr] 167 | pub fn alloc<'arena, T: Sized + Copy>(&'arena self, value: T) -> &'arena mut T { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mut_from_ref [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/arena.rs:167:5 [INFO] [stderr] | [INFO] [stderr] 167 | / pub fn alloc<'arena, T: Sized + Copy>(&'arena self, value: T) -> &'arena mut T { [INFO] [stderr] 168 | | self.alloc_uninitialized().init(value) [INFO] [stderr] 169 | | } [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/arena.rs:173:5 [INFO] [stderr] | [INFO] [stderr] 173 | / pub fn alloc_uninitialized<'arena, T: Sized + Copy>(&'arena self) -> Uninitialized<'arena, T> { [INFO] [stderr] 174 | | Uninitialized { [INFO] [stderr] 175 | | pointer: unsafe { &mut *(self.require(size_of::()) as *mut MaybeUninit) }, [INFO] [stderr] 176 | | } [INFO] [stderr] 177 | | } [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/arena.rs:260:5 [INFO] [stderr] | [INFO] [stderr] 260 | / pub fn alloc_string<'arena>(&'arena self, val: String) -> &'arena str { [INFO] [stderr] 261 | | let len = val.len(); [INFO] [stderr] 262 | | let ptr = self.alloc_byte_vec(val.into_bytes()); [INFO] [stderr] 263 | | [INFO] [stderr] ... | [INFO] [stderr] 269 | | } [INFO] [stderr] 270 | | } [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: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/bloom.rs:125:14 [INFO] [stderr] | [INFO] [stderr] 125 | | BYTE_MASKS_A[s[0] as usize] as u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(BYTE_MASKS_A[s[0] as usize])` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/bloom.rs:128:14 [INFO] [stderr] | [INFO] [stderr] 128 | | BYTE_MASKS_A[s[0] as usize] as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(BYTE_MASKS_A[s[0] as usize])` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/bloom.rs:129:14 [INFO] [stderr] | [INFO] [stderr] 129 | | BYTE_MASKS_B[s[1] as usize] as u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(BYTE_MASKS_B[s[1] as usize])` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/bloom.rs:133:14 [INFO] [stderr] | [INFO] [stderr] 133 | | BYTE_MASKS_B[s[1] as usize] as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(BYTE_MASKS_B[s[1] as usize])` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/bloom.rs:134:14 [INFO] [stderr] | [INFO] [stderr] 134 | | BYTE_MASKS_A[s[0] as usize] as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(BYTE_MASKS_A[s[0] as usize])` [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 previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `toolshed`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [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/cell.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn get_mut<'a>(&'a mut self) -> &'a mut T { [INFO] [stderr] 48 | | // We can just cast the pointer from `CopyCell` to `T` because of [INFO] [stderr] 49 | | // #[repr(transparent)] [INFO] [stderr] 50 | | unsafe { [INFO] [stderr] 51 | | &mut *(self as *mut CopyCell as *mut T) [INFO] [stderr] 52 | | } [INFO] [stderr] 53 | | } [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: you should consider adding a `Default` implementation for `map::BloomMap<'arena, K, V>` [INFO] [stderr] --> src/map.rs:203:5 [INFO] [stderr] | [INFO] [stderr] 203 | / pub fn new() -> Self { [INFO] [stderr] 204 | | BloomMap { [INFO] [stderr] 205 | | filter: CopyCell::new(0), [INFO] [stderr] 206 | | inner: Map::new(), [INFO] [stderr] 207 | | } [INFO] [stderr] 208 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 196 | impl Default for map::BloomMap<'arena, K, V> { [INFO] [stderr] 197 | fn default() -> Self { [INFO] [stderr] 198 | Self::new() [INFO] [stderr] 199 | } [INFO] [stderr] 200 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `set::BloomSet<'arena, I>` [INFO] [stderr] --> src/set.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | / pub fn new() -> Self { [INFO] [stderr] 94 | | BloomSet { [INFO] [stderr] 95 | | map: BloomMap::new(), [INFO] [stderr] 96 | | } [INFO] [stderr] 97 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 87 | impl Default for set::BloomSet<'arena, I> { [INFO] [stderr] 88 | fn default() -> Self { [INFO] [stderr] 89 | Self::new() [INFO] [stderr] 90 | } [INFO] [stderr] 91 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/list.rs:119:20 [INFO] [stderr] | [INFO] [stderr] 119 | pub fn prepend(&self, arena: &'arena Arena, value: T) -> &'arena T { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/list.rs:134:18 [INFO] [stderr] | [INFO] [stderr] 134 | pub fn shift(&self) -> Option<&'arena T> { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `list::GrowableList<'arena, T>` [INFO] [stderr] --> src/list.rs:224:5 [INFO] [stderr] | [INFO] [stderr] 224 | / pub fn new() -> Self { [INFO] [stderr] 225 | | GrowableList { [INFO] [stderr] 226 | | first: CopyCell::new(None), [INFO] [stderr] 227 | | last: CopyCell::new(None), [INFO] [stderr] 228 | | } [INFO] [stderr] 229 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 218 | impl Default for list::GrowableList<'arena, T> { [INFO] [stderr] 219 | fn default() -> Self { [INFO] [stderr] 220 | Self::new() [INFO] [stderr] 221 | } [INFO] [stderr] 222 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a value that implements Copy. Dropping a copy leaves the original intact. [INFO] [stderr] --> src/list.rs:453:13 [INFO] [stderr] | [INFO] [stderr] 453 | drop(list); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::drop_copy)] on by default [INFO] [stderr] note: argument has type list::List<'_, usize> [INFO] [stderr] --> src/list.rs:453:18 [INFO] [stderr] | [INFO] [stderr] 453 | drop(list); [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_copy [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a value that implements Copy. Dropping a copy leaves the original intact. [INFO] [stderr] --> src/list.rs:464:13 [INFO] [stderr] | [INFO] [stderr] 464 | drop(list); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: argument has type list::List<'_, usize> [INFO] [stderr] --> src/list.rs:464:18 [INFO] [stderr] | [INFO] [stderr] 464 | drop(list); [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_copy [INFO] [stderr] [INFO] [stderr] warning: defining a method called `as_ref` on this type; consider implementing the `std::convert::AsRef` trait or choosing a less ambiguous name [INFO] [stderr] --> src/arena.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | / pub unsafe fn as_ref(&self) -> &'arena T { [INFO] [stderr] 51 | | &*(&self.pointer.value as *const T) [INFO] [stderr] 52 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/arena.rs:58:30 [INFO] [stderr] | [INFO] [stderr] 58 | pub unsafe fn as_mut_ref(self) -> &'arena mut T { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `arena::Arena` [INFO] [stderr] --> src/arena.rs:154:5 [INFO] [stderr] | [INFO] [stderr] 154 | / pub fn new() -> Self { [INFO] [stderr] 155 | | let mut store = vec![Vec::with_capacity(ARENA_BLOCK)]; [INFO] [stderr] 156 | | let ptr = store[0].as_mut_ptr(); [INFO] [stderr] 157 | | [INFO] [stderr] ... | [INFO] [stderr] 162 | | } [INFO] [stderr] 163 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 152 | impl Default for arena::Arena { [INFO] [stderr] 153 | fn default() -> Self { [INFO] [stderr] 154 | Self::new() [INFO] [stderr] 155 | } [INFO] [stderr] 156 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: mutable borrow from immutable input(s) [INFO] [stderr] --> src/arena.rs:167:70 [INFO] [stderr] | [INFO] [stderr] 167 | pub fn alloc<'arena, T: Sized + Copy>(&'arena self, value: T) -> &'arena mut T { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::mut_from_ref)] on by default [INFO] [stderr] note: immutable borrow here [INFO] [stderr] --> src/arena.rs:167:43 [INFO] [stderr] | [INFO] [stderr] 167 | pub fn alloc<'arena, T: Sized + Copy>(&'arena self, value: T) -> &'arena mut T { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mut_from_ref [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/arena.rs:167:5 [INFO] [stderr] | [INFO] [stderr] 167 | / pub fn alloc<'arena, T: Sized + Copy>(&'arena self, value: T) -> &'arena mut T { [INFO] [stderr] 168 | | self.alloc_uninitialized().init(value) [INFO] [stderr] 169 | | } [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/arena.rs:173:5 [INFO] [stderr] | [INFO] [stderr] 173 | / pub fn alloc_uninitialized<'arena, T: Sized + Copy>(&'arena self) -> Uninitialized<'arena, T> { [INFO] [stderr] 174 | | Uninitialized { [INFO] [stderr] 175 | | pointer: unsafe { &mut *(self.require(size_of::()) as *mut MaybeUninit) }, [INFO] [stderr] 176 | | } [INFO] [stderr] 177 | | } [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/arena.rs:260:5 [INFO] [stderr] | [INFO] [stderr] 260 | / pub fn alloc_string<'arena>(&'arena self, val: String) -> &'arena str { [INFO] [stderr] 261 | | let len = val.len(); [INFO] [stderr] 262 | | let ptr = self.alloc_byte_vec(val.into_bytes()); [INFO] [stderr] 263 | | [INFO] [stderr] ... | [INFO] [stderr] 269 | | } [INFO] [stderr] 270 | | } [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: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/bloom.rs:125:14 [INFO] [stderr] | [INFO] [stderr] 125 | | BYTE_MASKS_A[s[0] as usize] as u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(BYTE_MASKS_A[s[0] as usize])` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/bloom.rs:128:14 [INFO] [stderr] | [INFO] [stderr] 128 | | BYTE_MASKS_A[s[0] as usize] as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(BYTE_MASKS_A[s[0] as usize])` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/bloom.rs:129:14 [INFO] [stderr] | [INFO] [stderr] 129 | | BYTE_MASKS_B[s[1] as usize] as u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(BYTE_MASKS_B[s[1] as usize])` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/bloom.rs:133:14 [INFO] [stderr] | [INFO] [stderr] 133 | | BYTE_MASKS_B[s[1] as usize] as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(BYTE_MASKS_B[s[1] as usize])` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/bloom.rs:134:14 [INFO] [stderr] | [INFO] [stderr] 134 | | BYTE_MASKS_A[s[0] as usize] as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(BYTE_MASKS_A[s[0] as usize])` [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 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `toolshed`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "b13904909665ac6e2048f9a3041c4b0bde6dc7bb06a8a8166ca3466f90496260"` [INFO] running `"docker" "rm" "-f" "b13904909665ac6e2048f9a3041c4b0bde6dc7bb06a8a8166ca3466f90496260"` [INFO] [stdout] b13904909665ac6e2048f9a3041c4b0bde6dc7bb06a8a8166ca3466f90496260