[INFO] updating cached repository asypost/ip2region-rust [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/asypost/ip2region-rust [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/asypost/ip2region-rust" "work/ex/clippy-test-run/sources/stable/gh/asypost/ip2region-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/asypost/ip2region-rust'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/asypost/ip2region-rust" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/asypost/ip2region-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/asypost/ip2region-rust'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 67378fce72a2340407ef4d762d13b9199b85b230 [INFO] sha for GitHub repo asypost/ip2region-rust: 67378fce72a2340407ef4d762d13b9199b85b230 [INFO] validating manifest of asypost/ip2region-rust 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 asypost/ip2region-rust 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 asypost/ip2region-rust [INFO] finished frobbing asypost/ip2region-rust [INFO] frobbed toml for asypost/ip2region-rust written to work/ex/clippy-test-run/sources/stable/gh/asypost/ip2region-rust/Cargo.toml [INFO] started frobbing asypost/ip2region-rust [INFO] finished frobbing asypost/ip2region-rust [INFO] frobbed toml for asypost/ip2region-rust written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/asypost/ip2region-rust/Cargo.toml [INFO] crate asypost/ip2region-rust has a lockfile. skipping [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 asypost/ip2region-rust 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/gh/asypost/ip2region-rust:/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] d12df6788d20fefc6fc63c053e6cf815706806442b8944b4b7ed7872185af0ae [INFO] running `"docker" "start" "-a" "d12df6788d20fefc6fc63c053e6cf815706806442b8944b4b7ed7872185af0ae"` [INFO] [stderr] Checking ip2region v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib/into_u32.rs:13:9 [INFO] [stderr] | [INFO] [stderr] 13 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib/into_u32.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib/ip2region.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | return (self.index_end - self.index_start) / (Self::INDEX_BLOCK_LENGTH as u32) + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(self.index_end - self.index_start) / (Self::INDEX_BLOCK_LENGTH as u32) + 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/lib/ip2region.rs:49:31 [INFO] [stderr] | [INFO] [stderr] 49 | let middle: u32 = ((end + start)) >> 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib/ip2region.rs:71:31 [INFO] [stderr] | [INFO] [stderr] 71 | data_ptr = data_ptr & 0x00FFFFFF; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x00FF_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: manual implementation of an assign operation [INFO] [stderr] --> src/lib/into_u32.rs:11:13 [INFO] [stderr] | [INFO] [stderr] 11 | result = result | (self.octets()[i] as u32) << (((3-i) * 8) as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result |= (self.octets()[i] as u32) << (((3-i) * 8) as u32)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib/into_u32.rs:11:31 [INFO] [stderr] | [INFO] [stderr] 11 | result = result | (self.octets()[i] as u32) << (((3-i) * 8) as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.octets()[i])` [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: manual implementation of an assign operation [INFO] [stderr] --> src/lib/into_u32.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | result = result | (self[i] as u32) << ((i * 8) as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result |= (self[i] as u32) << ((i * 8) as u32)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib/into_u32.rs:21:31 [INFO] [stderr] | [INFO] [stderr] 21 | result = result | (self[i] as u32) << ((i * 8) as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(self[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: manual implementation of an assign operation [INFO] [stderr] --> src/lib/ip2region.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | index_start = index_start | (super_block[i] as u32) << rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `index_start |= (super_block[i] as u32) << rhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib/ip2region.rs:25:41 [INFO] [stderr] | [INFO] [stderr] 25 | index_start = index_start | (super_block[i] as u32) << rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(super_block[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: manual implementation of an assign operation [INFO] [stderr] --> src/lib/ip2region.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | index_end = index_end | (super_block[i + 4] as u32) << rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `index_end |= (super_block[i + 4] as u32) << rhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib/ip2region.rs:29:37 [INFO] [stderr] | [INFO] [stderr] 29 | index_end = index_end | (super_block[i + 4] as u32) << rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(super_block[i + 4])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib/ip2region.rs:39:54 [INFO] [stderr] | [INFO] [stderr] 39 | return (self.index_end - self.index_start) / (Self::INDEX_BLOCK_LENGTH as u32) + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(Self::INDEX_BLOCK_LENGTH)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib/ip2region.rs:42:38 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn get_region(&mut self, ip: &Ipv4Addr) -> io::Result { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Ipv4Addr` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib/ip2region.rs:51:17 [INFO] [stderr] | [INFO] [stderr] 51 | self.index_start as u64 + middle as u64 * Self::INDEX_BLOCK_LENGTH as u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.index_start)` [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/lib/ip2region.rs:51:43 [INFO] [stderr] | [INFO] [stderr] 51 | self.index_start as u64 + middle as u64 * Self::INDEX_BLOCK_LENGTH as u64, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(middle)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib/ip2region.rs:51:59 [INFO] [stderr] | [INFO] [stderr] 51 | self.index_start as u64 + middle as u64 * Self::INDEX_BLOCK_LENGTH as u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(Self::INDEX_BLOCK_LENGTH)` [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: manual implementation of an assign operation [INFO] [stderr] --> src/lib/ip2region.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | data_ptr = data_ptr & 0x00FFFFFF; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data_ptr &= 0x00FFFFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib/ip2region.rs:72:40 [INFO] [stderr] | [INFO] [stderr] 72 | self.file.seek(SeekFrom::Start(data_ptr as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(data_ptr)` [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: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib/mod.rs:17:45 [INFO] [stderr] | [INFO] [stderr] 17 | match Ip2Region::new(CStr::from_ptr(db_file).to_str().unwrap()){ [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::not_unsafe_ptr_arg_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib/mod.rs:30:27 [INFO] [stderr] | [INFO] [stderr] 30 | Box::from_raw(ptr); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib/mod.rs:41:33 [INFO] [stderr] | [INFO] [stderr] 41 | let ip = CStr::from_ptr(ip).to_string_lossy().into_owned(); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib/mod.rs:44:39 [INFO] [stderr] | [INFO] [stderr] 44 | let ip2region = &mut *ip2region; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib/mod.rs:62:27 [INFO] [stderr] | [INFO] [stderr] 62 | CString::from_raw(region); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ip2region`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib/into_u32.rs:13:9 [INFO] [stderr] | [INFO] [stderr] 13 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib/into_u32.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib/ip2region.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | return (self.index_end - self.index_start) / (Self::INDEX_BLOCK_LENGTH as u32) + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(self.index_end - self.index_start) / (Self::INDEX_BLOCK_LENGTH as u32) + 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/lib/ip2region.rs:49:31 [INFO] [stderr] | [INFO] [stderr] 49 | let middle: u32 = ((end + start)) >> 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib/ip2region.rs:71:31 [INFO] [stderr] | [INFO] [stderr] 71 | data_ptr = data_ptr & 0x00FFFFFF; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x00FF_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: manual implementation of an assign operation [INFO] [stderr] --> src/lib/into_u32.rs:11:13 [INFO] [stderr] | [INFO] [stderr] 11 | result = result | (self.octets()[i] as u32) << (((3-i) * 8) as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result |= (self.octets()[i] as u32) << (((3-i) * 8) as u32)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib/into_u32.rs:11:31 [INFO] [stderr] | [INFO] [stderr] 11 | result = result | (self.octets()[i] as u32) << (((3-i) * 8) as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.octets()[i])` [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: manual implementation of an assign operation [INFO] [stderr] --> src/lib/into_u32.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | result = result | (self[i] as u32) << ((i * 8) as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result |= (self[i] as u32) << ((i * 8) as u32)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib/into_u32.rs:21:31 [INFO] [stderr] | [INFO] [stderr] 21 | result = result | (self[i] as u32) << ((i * 8) as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(self[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: manual implementation of an assign operation [INFO] [stderr] --> src/lib/ip2region.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | index_start = index_start | (super_block[i] as u32) << rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `index_start |= (super_block[i] as u32) << rhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib/ip2region.rs:25:41 [INFO] [stderr] | [INFO] [stderr] 25 | index_start = index_start | (super_block[i] as u32) << rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(super_block[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: manual implementation of an assign operation [INFO] [stderr] --> src/lib/ip2region.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | index_end = index_end | (super_block[i + 4] as u32) << rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `index_end |= (super_block[i + 4] as u32) << rhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib/ip2region.rs:29:37 [INFO] [stderr] | [INFO] [stderr] 29 | index_end = index_end | (super_block[i + 4] as u32) << rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(super_block[i + 4])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib/ip2region.rs:39:54 [INFO] [stderr] | [INFO] [stderr] 39 | return (self.index_end - self.index_start) / (Self::INDEX_BLOCK_LENGTH as u32) + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(Self::INDEX_BLOCK_LENGTH)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib/ip2region.rs:42:38 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn get_region(&mut self, ip: &Ipv4Addr) -> io::Result { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Ipv4Addr` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib/ip2region.rs:51:17 [INFO] [stderr] | [INFO] [stderr] 51 | self.index_start as u64 + middle as u64 * Self::INDEX_BLOCK_LENGTH as u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.index_start)` [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/lib/ip2region.rs:51:43 [INFO] [stderr] | [INFO] [stderr] 51 | self.index_start as u64 + middle as u64 * Self::INDEX_BLOCK_LENGTH as u64, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(middle)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib/ip2region.rs:51:59 [INFO] [stderr] | [INFO] [stderr] 51 | self.index_start as u64 + middle as u64 * Self::INDEX_BLOCK_LENGTH as u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(Self::INDEX_BLOCK_LENGTH)` [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: manual implementation of an assign operation [INFO] [stderr] --> src/lib/ip2region.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | data_ptr = data_ptr & 0x00FFFFFF; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data_ptr &= 0x00FFFFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib/ip2region.rs:72:40 [INFO] [stderr] | [INFO] [stderr] 72 | self.file.seek(SeekFrom::Start(data_ptr as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(data_ptr)` [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: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib/mod.rs:17:45 [INFO] [stderr] | [INFO] [stderr] 17 | match Ip2Region::new(CStr::from_ptr(db_file).to_str().unwrap()){ [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::not_unsafe_ptr_arg_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib/mod.rs:30:27 [INFO] [stderr] | [INFO] [stderr] 30 | Box::from_raw(ptr); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib/mod.rs:41:33 [INFO] [stderr] | [INFO] [stderr] 41 | let ip = CStr::from_ptr(ip).to_string_lossy().into_owned(); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib/mod.rs:44:39 [INFO] [stderr] | [INFO] [stderr] 44 | let ip2region = &mut *ip2region; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib/mod.rs:62:27 [INFO] [stderr] | [INFO] [stderr] 62 | CString::from_raw(region); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ip2region`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "d12df6788d20fefc6fc63c053e6cf815706806442b8944b4b7ed7872185af0ae"` [INFO] running `"docker" "rm" "-f" "d12df6788d20fefc6fc63c053e6cf815706806442b8944b4b7ed7872185af0ae"` [INFO] [stdout] d12df6788d20fefc6fc63c053e6cf815706806442b8944b4b7ed7872185af0ae