[INFO] crate tdengine 0.1.2 is already in cache [INFO] extracting crate tdengine 0.1.2 into work/ex/clippy-test-run/sources/stable/reg/tdengine/0.1.2 [INFO] extracting crate tdengine 0.1.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tdengine/0.1.2 [INFO] validating manifest of tdengine-0.1.2 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 tdengine-0.1.2 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 tdengine-0.1.2 [INFO] removed path dependency td_clua_ext from tdengine-0.1.2 [INFO] finished frobbing tdengine-0.1.2 [INFO] frobbed toml for tdengine-0.1.2 written to work/ex/clippy-test-run/sources/stable/reg/tdengine/0.1.2/Cargo.toml [INFO] started frobbing tdengine-0.1.2 [INFO] removed path dependency td_clua_ext from tdengine-0.1.2 [INFO] finished frobbing tdengine-0.1.2 [INFO] frobbed toml for tdengine-0.1.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tdengine/0.1.2/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 tdengine-0.1.2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/tdengine/0.1.2:/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] 30c02265b7f4da1c281ff6146e08fbd44f5be6a0025b77395a9736fdddbe610e [INFO] running `"docker" "start" "-a" "30c02265b7f4da1c281ff6146e08fbd44f5be6a0025b77395a9736fdddbe610e"` [INFO] [stderr] Compiling sys-info v0.4.1 [INFO] [stderr] Compiling td_clua v0.1.2 [INFO] [stderr] Compiling td_clua_ext v0.1.0 [INFO] [stderr] Checking td_proto_rust v0.1.4 [INFO] [stderr] Checking net2 v0.2.33 [INFO] [stderr] Checking nix v0.5.1 [INFO] [stderr] Checking td_rthreadpool v0.1.2 [INFO] [stderr] Checking sha1 v0.1.1 [INFO] [stderr] Checking uuid v0.1.18 [INFO] [stderr] Checking td_rredis v0.1.2 [INFO] [stderr] Checking mysql v2.2.1 [INFO] [stderr] Checking url v0.2.38 [INFO] [stderr] Checking tiny_http v0.5.9 [INFO] [stderr] Checking td_revent v0.1.6 [INFO] [stderr] Checking td_rlua v0.1.9 [INFO] [stderr] Checking tdengine v0.1.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/db_mysql.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | conn: conn, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/db_mysql.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | user: user, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `user` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/db_mysql.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | pass: pass, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `pass` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/db_mysql.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | ip_or_hostname: ip_or_hostname, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ip_or_hostname` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/db_mysql.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | tcp_port: tcp_port, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `tcp_port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/db_mysql.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | db_name: db_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `db_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils/telnet_utils.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | tcp: tcp, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `tcp` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lua_engine.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | lua: lua, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `lua` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/net_msg.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | buffer: buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/net_msg.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | seq_fd: seq_fd, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `seq_fd` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/net_msg.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | length: length, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `length` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/net_msg.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | cookie: cookie, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `cookie` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/net_msg.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | buffer: buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/net_msg.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | pack_name: pack_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pack_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/socket_event.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | socket_fd: socket_fd, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `socket_fd` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/socket_event.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | client_ip: client_ip, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `client_ip` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/socket_event.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | server_port: server_port, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `server_port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/mgr/http_mgr.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | request: request, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `request` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/db_mysql.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | conn: conn, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/db_mysql.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | user: user, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `user` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/db_mysql.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | pass: pass, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `pass` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/db_mysql.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | ip_or_hostname: ip_or_hostname, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ip_or_hostname` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/db_mysql.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | tcp_port: tcp_port, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `tcp_port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/db/db_mysql.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | db_name: db_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `db_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils/telnet_utils.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | tcp: tcp, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `tcp` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lua_engine.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | lua: lua, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `lua` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/net_msg.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | buffer: buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/net_msg.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | seq_fd: seq_fd, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `seq_fd` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/net_msg.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | length: length, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `length` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/net_msg.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | cookie: cookie, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `cookie` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/net_msg.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | buffer: buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/net_msg.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | pack_name: pack_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pack_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/socket_event.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | socket_fd: socket_fd, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `socket_fd` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/socket_event.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | client_ip: client_ip, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `client_ip` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/net/socket_event.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | server_port: server_port, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `server_port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/mgr/http_mgr.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | request: request, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `request` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/macros.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / macro_rules! ensure { [INFO] [stderr] 10 | | ($expr:expr, $err_result:expr) => ( [INFO] [stderr] 11 | | if !($expr) { fail!($err_result) } [INFO] [stderr] 12 | | ) [INFO] [stderr] 13 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/utils/file_utils.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | return Some(data); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(data)` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/utils/net_utils.rs:143:9 [INFO] [stderr] | [INFO] [stderr] 143 | value [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/utils/net_utils.rs:16:21 [INFO] [stderr] | [INFO] [stderr] 16 | let value = match t { [INFO] [stderr] | _____________________^ [INFO] [stderr] 17 | | TYPE_NIL => None, [INFO] [stderr] 18 | | TYPE_U8 => { [INFO] [stderr] 19 | | let val: u8 = unwrap_or!(LuaRead::lua_read_at_position(lua, index), return None); [INFO] [stderr] ... | [INFO] [stderr] 141 | | _ => None, [INFO] [stderr] 142 | | }; [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: unneeded return statement [INFO] [stderr] --> src/utils/telnet_utils.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lua_engine.rs:160:16 [INFO] [stderr] | [INFO] [stderr] 160 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 161 | | if net_msg.is_some() { [INFO] [stderr] 162 | | // if let Some(net_msg) = net_msg.as_mut() { [INFO] [stderr] 163 | | let mut net_msg = net_msg.unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 173 | | } [INFO] [stderr] 174 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 160 | } else if net_msg.is_some() { [INFO] [stderr] 161 | // if let Some(net_msg) = net_msg.as_mut() { [INFO] [stderr] 162 | let mut net_msg = net_msg.unwrap(); [INFO] [stderr] 163 | net_msg.set_read_data(); [INFO] [stderr] 164 | let instance = NetConfig::instance(); [INFO] [stderr] 165 | if let Ok((_, val)) = td_rp::decode_proto(net_msg.get_buffer(), instance) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lua_engine.rs:243:9 [INFO] [stderr] | [INFO] [stderr] 243 | return ori; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `ori` [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/lua_custom/lua_db.rs:280:5 [INFO] [stderr] | [INFO] [stderr] 280 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `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: unneeded return statement [INFO] [stderr] --> src/lua_custom/lua_db.rs:404:5 [INFO] [stderr] | [INFO] [stderr] 404 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `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: unary minus has lower precedence than method call [INFO] [stderr] --> src/lua_custom/lua_network.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | -1.push_to_lua(lua); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider adding parentheses to clarify your intent: `-(1.push_to_lua(lua))` [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/lua_custom/lua_network.rs:84:24 [INFO] [stderr] | [INFO] [stderr] 84 | if net_msg.len() > 0xFFFFFF { [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: unneeded return statement [INFO] [stderr] --> src/lua_custom/lua_userdata.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lua_custom/lua_timer.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | timer_id [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lua_custom/lua_timer.rs:19:20 [INFO] [stderr] | [INFO] [stderr] 19 | let timer_id = event_loop.add_timer(EventEntry::new_timer((time * 1000) as u64, [INFO] [stderr] | ____________________^ [INFO] [stderr] 20 | | repeat, [INFO] [stderr] 21 | | Some(time_callback), [INFO] [stderr] 22 | | None)); [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/lua_custom/lua_util.rs:46:34 [INFO] [stderr] | [INFO] [stderr] 46 | let ti = last_rid_time - 1292342400; // 2010/12/15 0:0:0 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_292_342_400` [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: digits grouped inconsistently by underscores [INFO] [stderr] --> src/lua_custom/lua_util.rs:118:32 [INFO] [stderr] | [INFO] [stderr] 118 | (time::precise_time_ns() / 1000_000) as u32 [INFO] [stderr] | ^^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::inconsistent_digit_grouping)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inconsistent_digit_grouping [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/macros.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / macro_rules! ensure { [INFO] [stderr] 10 | | ($expr:expr, $err_result:expr) => ( [INFO] [stderr] 11 | | if !($expr) { fail!($err_result) } [INFO] [stderr] 12 | | ) [INFO] [stderr] 13 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/utils/file_utils.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | return Some(data); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(data)` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/utils/net_utils.rs:143:9 [INFO] [stderr] | [INFO] [stderr] 143 | value [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/utils/net_utils.rs:16:21 [INFO] [stderr] | [INFO] [stderr] 16 | let value = match t { [INFO] [stderr] | _____________________^ [INFO] [stderr] 17 | | TYPE_NIL => None, [INFO] [stderr] 18 | | TYPE_U8 => { [INFO] [stderr] 19 | | let val: u8 = unwrap_or!(LuaRead::lua_read_at_position(lua, index), return None); [INFO] [stderr] ... | [INFO] [stderr] 141 | | _ => None, [INFO] [stderr] 142 | | }; [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: unneeded return statement [INFO] [stderr] --> src/utils/telnet_utils.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lua_engine.rs:160:16 [INFO] [stderr] | [INFO] [stderr] 160 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 161 | | if net_msg.is_some() { [INFO] [stderr] 162 | | // if let Some(net_msg) = net_msg.as_mut() { [INFO] [stderr] 163 | | let mut net_msg = net_msg.unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 173 | | } [INFO] [stderr] 174 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 160 | } else if net_msg.is_some() { [INFO] [stderr] 161 | // if let Some(net_msg) = net_msg.as_mut() { [INFO] [stderr] 162 | let mut net_msg = net_msg.unwrap(); [INFO] [stderr] 163 | net_msg.set_read_data(); [INFO] [stderr] 164 | let instance = NetConfig::instance(); [INFO] [stderr] 165 | if let Ok((_, val)) = td_rp::decode_proto(net_msg.get_buffer(), instance) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lua_engine.rs:243:9 [INFO] [stderr] | [INFO] [stderr] 243 | return ori; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `ori` [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/lua_custom/lua_db.rs:280:5 [INFO] [stderr] | [INFO] [stderr] 280 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `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: unneeded return statement [INFO] [stderr] --> src/lua_custom/lua_db.rs:404:5 [INFO] [stderr] | [INFO] [stderr] 404 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `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: unary minus has lower precedence than method call [INFO] [stderr] --> src/lua_custom/lua_network.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | -1.push_to_lua(lua); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider adding parentheses to clarify your intent: `-(1.push_to_lua(lua))` [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/lua_custom/lua_network.rs:84:24 [INFO] [stderr] | [INFO] [stderr] 84 | if net_msg.len() > 0xFFFFFF { [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: unneeded return statement [INFO] [stderr] --> src/lua_custom/lua_userdata.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lua_custom/lua_timer.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | timer_id [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lua_custom/lua_timer.rs:19:20 [INFO] [stderr] | [INFO] [stderr] 19 | let timer_id = event_loop.add_timer(EventEntry::new_timer((time * 1000) as u64, [INFO] [stderr] | ____________________^ [INFO] [stderr] 20 | | repeat, [INFO] [stderr] 21 | | Some(time_callback), [INFO] [stderr] 22 | | None)); [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/lua_custom/lua_util.rs:46:34 [INFO] [stderr] | [INFO] [stderr] 46 | let ti = last_rid_time - 1292342400; // 2010/12/15 0:0:0 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_292_342_400` [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: digits grouped inconsistently by underscores [INFO] [stderr] --> src/lua_custom/lua_util.rs:118:32 [INFO] [stderr] | [INFO] [stderr] 118 | (time::precise_time_ns() / 1000_000) as u32 [INFO] [stderr] | ^^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::inconsistent_digit_grouping)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inconsistent_digit_grouping [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/db/db_pool.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | let mut list = match pool.db_mysql.contains_key(db_name) { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/mgr/event_mgr.rs:195:13 [INFO] [stderr] | [INFO] [stderr] 195 | let mut socket_event = socket_event.unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/mgr/event_mgr.rs:208:13 [INFO] [stderr] | [INFO] [stderr] 208 | let mut socket_event = socket_event.unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/db/db_mysql.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | / match value { [INFO] [stderr] 40 | | &Err(ref val) => { [INFO] [stderr] 41 | | match val { [INFO] [stderr] 42 | | &mysql::Error::IoError(_) => return true, [INFO] [stderr] ... | [INFO] [stderr] 46 | | _ => (), [INFO] [stderr] 47 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 39 | if let &Err(ref val) = value { [INFO] [stderr] 40 | match val { [INFO] [stderr] 41 | &mysql::Error::IoError(_) => return true, [INFO] [stderr] 42 | _ => (), [INFO] [stderr] 43 | } [INFO] [stderr] 44 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/db/db_mysql.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | / match value { [INFO] [stderr] 40 | | &Err(ref val) => { [INFO] [stderr] 41 | | match val { [INFO] [stderr] 42 | | &mysql::Error::IoError(_) => return true, [INFO] [stderr] ... | [INFO] [stderr] 46 | | _ => (), [INFO] [stderr] 47 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 39 | match *value { [INFO] [stderr] 40 | Err(ref val) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/db/db_mysql.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | / match val { [INFO] [stderr] 42 | | &mysql::Error::IoError(_) => return true, [INFO] [stderr] 43 | | _ => (), [INFO] [stderr] 44 | | } [INFO] [stderr] | |_________________^ help: try this: `if let &mysql::Error::IoError(_) = val { return true }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/db/db_mysql.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | / match val { [INFO] [stderr] 42 | | &mysql::Error::IoError(_) => return true, [INFO] [stderr] 43 | | _ => (), [INFO] [stderr] 44 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 41 | match *val { [INFO] [stderr] 42 | mysql::Error::IoError(_) => return true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/db/db_mysql.rs:67:23 [INFO] [stderr] | [INFO] [stderr] 67 | let user = if url.username().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `url.username().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: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/db/db_mysql.rs:204:68 [INFO] [stderr] | [INFO] [stderr] 204 | mysql::Error::MySqlError(ref val) => success = val.code as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(val.code)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/db/db_mysql.rs:226:68 [INFO] [stderr] | [INFO] [stderr] 226 | mysql::Error::MySqlError(ref val) => success = val.code as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(val.code)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/db/db_mysql.rs:258:68 [INFO] [stderr] | [INFO] [stderr] 258 | mysql::Error::MySqlError(ref val) => success = val.code as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(val.code)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/db/db_mysql.rs:300:58 [INFO] [stderr] | [INFO] [stderr] 300 | mysql::Error::MySqlError(ref val) => val.code as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(val.code)` [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: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/db/db_pool.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | static mut el: *mut DbPool = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_upper_case_globals)] on by default [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/db_pool.rs:19:49 [INFO] [stderr] | [INFO] [stderr] 19 | fn get_db_trait(pool: &mut DbPool, db_name: &String) -> Option; [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/db_pool.rs:20:53 [INFO] [stderr] | [INFO] [stderr] 20 | fn release_db_trait(pool: &mut DbPool, db_name: &String, db: Self); [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/db_pool.rs:21:50 [INFO] [stderr] | [INFO] [stderr] 21 | fn init_db_trait(pool: &mut DbPool, db_name: &String) -> Option; [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `db::db_pool::DbPool` [INFO] [stderr] --> src/db/db_pool.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / pub fn new() -> DbPool { [INFO] [stderr] 26 | | DbPool { [INFO] [stderr] 27 | | db_mysql: HashMap::new(), [INFO] [stderr] 28 | | db_info: HashMap::new(), [INFO] [stderr] 29 | | mutex: Mutex::new(0), [INFO] [stderr] 30 | | } [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 12 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/db/db_pool.rs:35:22 [INFO] [stderr] | [INFO] [stderr] 35 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/db/db_pool.rs:65:28 [INFO] [stderr] | [INFO] [stderr] 65 | let mut list = match pool.db_mysql.contains_key(db_name) { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 66 | | true => pool.db_mysql.get_mut(db_name).unwrap(), [INFO] [stderr] 67 | | false => { [INFO] [stderr] 68 | | pool.db_mysql.entry(db_name.to_string()).or_insert(vec![]); [INFO] [stderr] 69 | | pool.db_mysql.get_mut(db_name).unwrap() [INFO] [stderr] 70 | | } [INFO] [stderr] 71 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 65 | let mut list = if pool.db_mysql.contains_key(db_name) { pool.db_mysql.get_mut(db_name).unwrap() } else { [INFO] [stderr] 66 | pool.db_mysql.entry(db_name.to_string()).or_insert(vec![]); [INFO] [stderr] 67 | pool.db_mysql.get_mut(db_name).unwrap() [INFO] [stderr] 68 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/db/db_pool.rs:68:62 [INFO] [stderr] | [INFO] [stderr] 68 | pool.db_mysql.entry(db_name.to_string()).or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/db/db_pool.rs:92:24 [INFO] [stderr] | [INFO] [stderr] 92 | let mut list = match pool.db_mysql.contains_key(db_name) { [INFO] [stderr] | ________________________^ [INFO] [stderr] 93 | | true => pool.db_mysql.get_mut(db_name).unwrap(), [INFO] [stderr] 94 | | false => { [INFO] [stderr] 95 | | pool.db_mysql.entry(db_name.to_string()).or_insert(vec![]); [INFO] [stderr] 96 | | pool.db_mysql.get_mut(db_name).unwrap() [INFO] [stderr] 97 | | } [INFO] [stderr] 98 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 92 | let mut list = if pool.db_mysql.contains_key(db_name) { pool.db_mysql.get_mut(db_name).unwrap() } else { [INFO] [stderr] 93 | pool.db_mysql.entry(db_name.to_string()).or_insert(vec![]); [INFO] [stderr] 94 | pool.db_mysql.get_mut(db_name).unwrap() [INFO] [stderr] 95 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/db/db_pool.rs:95:58 [INFO] [stderr] | [INFO] [stderr] 95 | pool.db_mysql.entry(db_name.to_string()).or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/db/redis_pool.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | static mut el: *mut RedisPool = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `db::redis_pool::RedisPool` [INFO] [stderr] --> src/db/redis_pool.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | / pub fn new() -> RedisPool { [INFO] [stderr] 25 | | RedisPool { [INFO] [stderr] 26 | | db_redis: Vec::new(), [INFO] [stderr] 27 | | url_list: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 34 | | } [INFO] [stderr] 35 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 10 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/db/redis_pool.rs:39:22 [INFO] [stderr] | [INFO] [stderr] 39 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/db/redis_pool.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | / loop { [INFO] [stderr] 79 | | if self.sub_connect.is_none() || !self.sub_connect.as_ref().unwrap().is_work() { [INFO] [stderr] 80 | | let cluster = self.init_connection(); [INFO] [stderr] 81 | | let pubsub = unwrap_or!(cluster.get_pubsub().ok(), break); [INFO] [stderr] ... | [INFO] [stderr] 85 | | break; [INFO] [stderr] 86 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/db/redis_pool.rs:120:35 [INFO] [stderr] | [INFO] [stderr] 120 | let thread_run = Arc::new(Mutex::new(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mutex_atomic)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/db/redis_pool.rs:127:13 [INFO] [stderr] | [INFO] [stderr] 127 | / loop { [INFO] [stderr] 128 | | let result = unwrap_or!(sub_connect.get_message().ok(), break); [INFO] [stderr] 129 | | let _ = sub_sender.send(result); [INFO] [stderr] 130 | | if *thread_run.lock().unwrap() == false { [INFO] [stderr] 131 | | break; [INFO] [stderr] 132 | | } [INFO] [stderr] 133 | | } [INFO] [stderr] | |_____________^ help: try: `while let Some(x) = sub_connect.get_message().ok() { .. }` [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/db/redis_pool.rs:130:20 [INFO] [stderr] | [INFO] [stderr] 130 | if *thread_run.lock().unwrap() == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!(*thread_run.lock().unwrap())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: static variable `ins` should have an upper case name such as `INS` [INFO] [stderr] --> src/utils/file_utils.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | static mut ins: *mut FileUtils = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/utils/file_utils.rs:17:23 [INFO] [stderr] | [INFO] [stderr] 17 | if ins == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/utils/thread_utils.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | static mut el: *mut ThreadUtils = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/utils/thread_utils.rs:14:22 [INFO] [stderr] | [INFO] [stderr] 14 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/utils/thread_utils.rs:27:38 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn get_pool(&mut self, name: &String) -> &mut ThreadPool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/utils/net_utils.rs:53:65 [INFO] [stderr] | [INFO] [stderr] 53 | let c_str_raw = unsafe { td_rlua::lua_tolstring(lua, index, &mut size) }; [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/utils/net_utils.rs:67:42 [INFO] [stderr] | [INFO] [stderr] 67 | td_rlua::lua_pushnil(lua); [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/utils/net_utils.rs:73:48 [INFO] [stderr] | [INFO] [stderr] 73 | while td_rlua::lua_istable(lua, t) && td_rlua::lua_next(lua, t) != 0 { [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/utils/net_utils.rs:73:77 [INFO] [stderr] | [INFO] [stderr] 73 | while td_rlua::lua_istable(lua, t) && td_rlua::lua_next(lua, t) != 0 { [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/utils/net_utils.rs:87:42 [INFO] [stderr] | [INFO] [stderr] 87 | td_rlua::lua_pop(lua, 1); [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/utils/net_utils.rs:104:46 [INFO] [stderr] | [INFO] [stderr] 104 | if !td_rlua::lua_istable(lua, index) { [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/utils/net_utils.rs:107:51 [INFO] [stderr] | [INFO] [stderr] 107 | let len = td_rlua::lua_rawlen(lua, index); [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/utils/net_utils.rs:109:49 [INFO] [stderr] | [INFO] [stderr] 109 | td_rlua::lua_pushnumber(lua, i as f64); [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/utils/net_utils.rs:115:47 [INFO] [stderr] | [INFO] [stderr] 115 | td_rlua::lua_gettable(lua, new_index); [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/utils/net_utils.rs:124:42 [INFO] [stderr] | [INFO] [stderr] 124 | td_rlua::lua_pop(lua, 1); [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] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/utils/net_utils.rs:82:29 [INFO] [stderr] | [INFO] [stderr] 82 | / if sub_val.is_none() { [INFO] [stderr] 83 | | return None; [INFO] [stderr] 84 | | } [INFO] [stderr] | |_____________________________^ help: replace_it_with: `sub_val?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/utils/net_utils.rs:108:30 [INFO] [stderr] | [INFO] [stderr] 108 | for i in 1..(len + 1) { [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `1..=len` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/utils/net_utils.rs:120:25 [INFO] [stderr] | [INFO] [stderr] 120 | / if sub_val.is_none() { [INFO] [stderr] 121 | | return None; [INFO] [stderr] 122 | | } [INFO] [stderr] | |_________________________^ help: replace_it_with: `sub_val?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils/net_utils.rs:149:36 [INFO] [stderr] | [INFO] [stderr] 149 | args: &Vec) [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/utils/net_utils.rs:151:49 [INFO] [stderr] | [INFO] [stderr] 151 | let size = unsafe { td_rlua::lua_gettop(lua) - index + 1 }; [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] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/utils/net_utils.rs:160:54 [INFO] [stderr] | [INFO] [stderr] 160 | &*args.get(i as usize).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `args[i as usize]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/utils/net_utils.rs:161:13 [INFO] [stderr] | [INFO] [stderr] 161 | / if sub_val.is_none() { [INFO] [stderr] 162 | | return None; [INFO] [stderr] 163 | | } [INFO] [stderr] | |_____________^ help: replace_it_with: `sub_val?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/utils/telnet_utils.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | static mut el: *mut TelnetUtils = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `utils::telnet_utils::TelnetUtils` [INFO] [stderr] --> src/utils/telnet_utils.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | / pub fn new() -> TelnetUtils { [INFO] [stderr] 61 | | TelnetUtils { [INFO] [stderr] 62 | | clients: HashMap::new(), [INFO] [stderr] 63 | | tcp_listener: None, [INFO] [stderr] ... | [INFO] [stderr] 66 | | } [INFO] [stderr] 67 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/utils/telnet_utils.rs:53:22 [INFO] [stderr] | [INFO] [stderr] 53 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/utils/telnet_utils.rs:88:12 [INFO] [stderr] | [INFO] [stderr] 88 | if data.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `data.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] error: this `if` has identical blocks [INFO] [stderr] --> src/utils/telnet_utils.rs:157:29 [INFO] [stderr] | [INFO] [stderr] 157 | else if b == &9 { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 158 | | continue; [INFO] [stderr] 159 | | } else if b == &27 && (i + 1 > bytes.len() && bytes[i + 1] == 91) { [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/utils/telnet_utils.rs:153:30 [INFO] [stderr] | [INFO] [stderr] 153 | else if b == &10 { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 154 | | continue; [INFO] [stderr] 155 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/utils/telnet_utils.rs:145:34 [INFO] [stderr] | [INFO] [stderr] 145 | for _ in 0..(client.data[client.ipos as usize..].len() + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=client.data[client.ipos as usize..].len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 34 [INFO] [stderr] --> src/utils/telnet_utils.rs:177:5 [INFO] [stderr] | [INFO] [stderr] 177 | / pub fn update_data(&mut self, fd: i32, bytes: &[u8]) -> i32 { [INFO] [stderr] 178 | | let blogin = { [INFO] [stderr] 179 | | let client = unwrap_or!(self.clients.get_mut(&fd), return 1); [INFO] [stderr] 180 | | client.blogin [INFO] [stderr] ... | [INFO] [stderr] 351 | | 0 [INFO] [stderr] 352 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/utils/telnet_utils.rs:196:20 [INFO] [stderr] | [INFO] [stderr] 196 | if client.data.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!client.data.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: an inclusive range would be more readable [INFO] [stderr] --> src/utils/telnet_utils.rs:222:34 [INFO] [stderr] | [INFO] [stderr] 222 | for _ in 0..(client.data[client.ipos as usize..].len() + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=client.data[client.ipos as usize..].len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/utils/telnet_utils.rs:239:30 [INFO] [stderr] | [INFO] [stderr] 239 | for _ in 0..(client.data[client.ipos as usize..].len() + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=client.data[client.ipos as usize..].len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/utils/telnet_utils.rs:249:42 [INFO] [stderr] | [INFO] [stderr] 249 | if bytes[i + 2] == 65 && client.records.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!client.records.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: length comparison to zero [INFO] [stderr] --> src/utils/telnet_utils.rs:269:47 [INFO] [stderr] | [INFO] [stderr] 269 | else if bytes[i + 2] == 66 && client.records.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!client.records.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: an inclusive range would be more readable [INFO] [stderr] --> src/utils/telnet_utils.rs:296:55 [INFO] [stderr] | [INFO] [stderr] 296 | .write(&client.data[client.ipos as usize..client.ipos as usize + [INFO] [stderr] | _______________________________________________________^ [INFO] [stderr] 297 | | 1]); [INFO] [stderr] | |_____________________________________________________________________________^ help: use: `client.ipos as usize..=client.ipos as usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: static variable `ins` should have an upper case name such as `INS` [INFO] [stderr] --> src/utils/log_utils.rs:40:1 [INFO] [stderr] | [INFO] [stderr] 40 | static mut ins: *mut LogUtils = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `utils::log_utils::LogUtils` [INFO] [stderr] --> src/utils/log_utils.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | / pub fn new() -> LogUtils { [INFO] [stderr] 52 | | LogUtils { [INFO] [stderr] 53 | | file: None, [INFO] [stderr] 54 | | mutex: Arc::new(ReentrantMutex::new(0)), [INFO] [stderr] ... | [INFO] [stderr] 69 | | } [INFO] [stderr] 70 | | } [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] 41 | impl Default for utils::log_utils::LogUtils { [INFO] [stderr] 42 | fn default() -> Self { [INFO] [stderr] 43 | Self::new() [INFO] [stderr] 44 | } [INFO] [stderr] 45 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/utils/log_utils.rs:44:23 [INFO] [stderr] | [INFO] [stderr] 44 | if ins == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/lua_engine.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | static mut el: *mut LuaEngine = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/lua_engine.rs:46:22 [INFO] [stderr] | [INFO] [stderr] 46 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/lua_engine.rs:159:41 [INFO] [stderr] | [INFO] [stderr] 159 | err_msg.unwrap_or("err msg detail miss".to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "err msg detail miss".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lua_engine.rs:232:12 [INFO] [stderr] | [INFO] [stderr] 232 | if ori.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `ori.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] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/rp_wrapper.rs:24:46 [INFO] [stderr] | [INFO] [stderr] 24 | td_rlua::lua_pushlstring(lua, val.as_ptr() as *const libc::c_char, val.len()) [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/rp_wrapper.rs:71:35 [INFO] [stderr] | [INFO] [stderr] 71 | td_rlua::lua_newtable(lua); [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/rp_wrapper.rs:73:41 [INFO] [stderr] | [INFO] [stderr] 73 | td_rlua::lua_pushnumber(lua, (i + 1) as f64); [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/rp_wrapper.rs:75:39 [INFO] [stderr] | [INFO] [stderr] 75 | td_rlua::lua_settable(lua, -3); [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] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/global_config.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | static mut el: *mut GlobalConfig = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/global_config.rs:17:22 [INFO] [stderr] | [INFO] [stderr] 17 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/global_config.rs:35:22 [INFO] [stderr] | [INFO] [stderr] 35 | if el != 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/global_config.rs:61:29 [INFO] [stderr] | [INFO] [stderr] 61 | result.push(self.db_info.get(&key).unwrap().clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.db_info[&key]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/db/db_pool.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | let mut list = match pool.db_mysql.contains_key(db_name) { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/redis_wrapper.rs:68:35 [INFO] [stderr] | [INFO] [stderr] 68 | td_rlua::lua_newtable(lua); [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] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/redis_wrapper.rs:74:39 [INFO] [stderr] | [INFO] [stderr] 74 | td_rlua::lua_settable(lua, -3); [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/redis_wrapper.rs:79:35 [INFO] [stderr] | [INFO] [stderr] 79 | td_rlua::lua_settable(lua, -3); [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/redis_wrapper.rs:85:39 [INFO] [stderr] | [INFO] [stderr] 85 | td_rlua::lua_settable(lua, -3); [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/redis_wrapper.rs:95:49 [INFO] [stderr] | [INFO] [stderr] 95 | let args = unsafe { td_rlua::lua_gettop(lua) - index.abs() + 1 }; [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/redis_wrapper.rs:112:65 [INFO] [stderr] | [INFO] [stderr] 112 | let c_str_raw = unsafe { td_rlua::lua_tolstring(lua, i + index, &mut size) }; [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] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/redis_wrapper.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | / if val.is_none() { [INFO] [stderr] 125 | | return None; [INFO] [stderr] 126 | | } [INFO] [stderr] | |_____________^ help: replace_it_with: `val?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lua_custom/lua_db.rs:14:30 [INFO] [stderr] | [INFO] [stderr] 14 | fn thread_db_select(db_name: &String, _db_type: u8, sql_cmd: &str, cookie: u32) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lua_custom/lua_db.rs:38:31 [INFO] [stderr] | [INFO] [stderr] 38 | fn thread_db_execute(db_name: &String, _db_type: u8, sql_cmd: &str, cookie: u32) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lua_custom/lua_db.rs:60:30 [INFO] [stderr] | [INFO] [stderr] 60 | fn thread_db_insert(db_name: &String, _db_type: u8, sql_cmd: &str, cookie: u32) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lua_custom/lua_db.rs:84:35 [INFO] [stderr] | [INFO] [stderr] 84 | fn thread_db_transaction(db_name: &String, _db_type: u8, sql_cmd_list: Vec, cookie: u32) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lua_custom/lua_db.rs:125:37 [INFO] [stderr] | [INFO] [stderr] 125 | fn thread_db_batch_execute(db_name: &String, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lua_custom/lua_db.rs:344:5 [INFO] [stderr] | [INFO] [stderr] 344 | / loop { [INFO] [stderr] 345 | | let result = unwrap_or!(receiver.try_recv().ok(), break); [INFO] [stderr] 346 | | list.push(RedisWrapperMsg(result)); [INFO] [stderr] 347 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(x) = receiver.try_recv().ok() { .. }` [INFO] [stderr] | [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: unused unary operation that must be used [INFO] [stderr] --> src/lua_custom/lua_network.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | -1.push_to_lua(lua); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/lua_custom/lua_network.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | -1.push_to_lua(lua); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `1.push_to_lua(lua);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/lua_custom/lua_network.rs:119:5 [INFO] [stderr] | [INFO] [stderr] 119 | NetConfig::instance().get_proto_msg_type(&msg).map(|s| s.clone()).unwrap_or(String::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `NetConfig::instance().get_proto_msg_type(&msg).map(|s| s.clone()).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lua_custom/lua_network.rs:119:5 [INFO] [stderr] | [INFO] [stderr] 119 | NetConfig::instance().get_proto_msg_type(&msg).map(|s| s.clone()).unwrap_or(String::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `NetConfig::instance().get_proto_msg_type(&msg).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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/lua_custom/lua_network.rs:125:27 [INFO] [stderr] | [INFO] [stderr] 125 | let bind_ip = bind_ip.unwrap_or("0.0.0.0".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "0.0.0.0".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/lua_custom/lua_network.rs:143:13 [INFO] [stderr] | [INFO] [stderr] 143 | / let mut peer_ip = "unkown_ip".to_string(); [INFO] [stderr] 144 | | if stream.peer_addr().is_ok() { [INFO] [stderr] 145 | | peer_ip = format!("{}", stream.peer_addr().ok().unwrap()); [INFO] [stderr] 146 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let peer_ip = if stream.peer_addr().is_ok() { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { "unkown_ip".to_string() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lua_custom/lua_userdata.rs:31:36 [INFO] [stderr] | [INFO] [stderr] 31 | td_rlua::lua_getglobal(lua, typeid.as_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/lua_custom/lua_userdata.rs:32:37 [INFO] [stderr] | [INFO] [stderr] 32 | if td_rlua::lua_istable(lua, -1) { [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/lua_custom/lua_userdata.rs:33:43 [INFO] [stderr] | [INFO] [stderr] 33 | td_rlua::lua_setmetatable(lua, -2); [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/lua_custom/lua_userdata.rs:35:34 [INFO] [stderr] | [INFO] [stderr] 35 | td_rlua::lua_pop(lua, 1); [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] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lua_custom/lua_timer.rs:19:63 [INFO] [stderr] | [INFO] [stderr] 19 | let timer_id = event_loop.add_timer(EventEntry::new_timer((time * 1000) as u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(time * 1000)` [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: static variable `rid_sequence` should have an upper case name such as `RID_SEQUENCE` [INFO] [stderr] --> src/lua_custom/lua_util.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | static mut rid_sequence: u32 = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static variable `last_rid_time` should have an upper case name such as `LAST_RID_TIME` [INFO] [stderr] --> src/lua_custom/lua_util.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | static mut last_rid_time: u32 = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lua_custom/lua_util.rs:60:50 [INFO] [stderr] | [INFO] [stderr] 60 | rid[6] = ENCODE_MAP[(((ti) & 0x7) | ((server_id >> 10) as u32 & 0x3)) as usize]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(server_id >> 10)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/lua_custom/lua_util.rs:114:30 [INFO] [stderr] | [INFO] [stderr] 114 | proto.map(|s| s.clone()).unwrap_or("".to_string()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lua_custom/lua_util.rs:114:5 [INFO] [stderr] | [INFO] [stderr] 114 | proto.map(|s| s.clone()).unwrap_or("".to_string()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `proto.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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/lua_custom/lua_util.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | sys_info::os_type().ok().unwrap_or(String::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `sys_info::os_type().ok().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/lua_custom/lua_util.rs:151:5 [INFO] [stderr] | [INFO] [stderr] 151 | sys_info::os_release().ok().unwrap_or(String::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `sys_info::os_release().ok().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: Matching on `Some` with `ok()` is redundant [INFO] [stderr] --> src/lua_custom/lua_util.rs:160:5 [INFO] [stderr] | [INFO] [stderr] 160 | / if let Some(avg) = sys_info::loadavg().ok() { [INFO] [stderr] 161 | | map.insert("one".to_string(), avg.one as f32); [INFO] [stderr] 162 | | map.insert("five".to_string(), avg.five as f32); [INFO] [stderr] 163 | | map.insert("fifteen".to_string(), avg.fifteen as f32); [INFO] [stderr] ... | [INFO] [stderr] 167 | | map.insert("fifteen".to_string(), 0 as f32); [INFO] [stderr] 168 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::if_let_some_result)] on by default [INFO] [stderr] = help: Consider matching on `Ok(avg)` and removing the call to `ok` instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_let_some_result [INFO] [stderr] [INFO] [stderr] warning: Matching on `Some` with `ok()` is redundant [INFO] [stderr] --> src/lua_custom/lua_util.rs:174:5 [INFO] [stderr] | [INFO] [stderr] 174 | / if let Some(avg) = sys_info::disk_info().ok() { [INFO] [stderr] 175 | | map.insert("total".to_string(), avg.total as u32); [INFO] [stderr] 176 | | map.insert("free".to_string(), avg.free as u32); [INFO] [stderr] 177 | | } else { [INFO] [stderr] 178 | | map.insert("total".to_string(), 0 as u32); [INFO] [stderr] 179 | | map.insert("free".to_string(), 0 as u32); [INFO] [stderr] 180 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: Consider matching on `Ok(avg)` and removing the call to `ok` instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_let_some_result [INFO] [stderr] [INFO] [stderr] warning: Matching on `Some` with `ok()` is redundant [INFO] [stderr] --> src/lua_custom/lua_util.rs:186:5 [INFO] [stderr] | [INFO] [stderr] 186 | / if let Some(men) = sys_info::mem_info().ok() { [INFO] [stderr] 187 | | map.insert("total".to_string(), men.total as u32); [INFO] [stderr] 188 | | map.insert("free".to_string(), men.free as u32); [INFO] [stderr] 189 | | map.insert("avail".to_string(), men.avail as u32); [INFO] [stderr] ... | [INFO] [stderr] 201 | | map.insert("swap_free".to_string(), 0 as u32); [INFO] [stderr] 202 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: Consider matching on `Ok(men)` and removing the call to `ok` instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_let_some_result [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/net/net_config.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | static mut el: *mut Config = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/net/net_config.rs:11:22 [INFO] [stderr] | [INFO] [stderr] 11 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/net/net_config.rs:21:22 [INFO] [stderr] | [INFO] [stderr] 21 | if el != 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/net/net_config.rs:35:26 [INFO] [stderr] | [INFO] [stderr] 35 | if el != 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: item `net::net_msg::NetMsg` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/net/net_msg.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | / impl NetMsg { [INFO] [stderr] 18 | | pub fn new() -> NetMsg { [INFO] [stderr] 19 | | let mut buffer = Buffer::new(); [INFO] [stderr] 20 | | let _ = buffer.write(&HEAD_FILL_UP); [INFO] [stderr] ... | [INFO] [stderr] 144 | | } [INFO] [stderr] 145 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `net::net_msg::NetMsg` [INFO] [stderr] --> src/net/net_msg.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | / pub fn new() -> NetMsg { [INFO] [stderr] 19 | | let mut buffer = Buffer::new(); [INFO] [stderr] 20 | | let _ = buffer.write(&HEAD_FILL_UP); [INFO] [stderr] 21 | | NetMsg { [INFO] [stderr] ... | [INFO] [stderr] 27 | | } [INFO] [stderr] 28 | | } [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] 17 | impl Default for net::net_msg::NetMsg { [INFO] [stderr] 18 | fn default() -> Self { [INFO] [stderr] 19 | Self::new() [INFO] [stderr] 20 | } [INFO] [stderr] 21 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/net/socket_event.rs:59:22 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn is_online(&mut self) -> bool { [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: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/mgr/service_mgr.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | static mut el: *mut ServiceMgr = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `mgr::service_mgr::ServiceMgr` [INFO] [stderr] --> src/mgr/service_mgr.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / pub fn new() -> ServiceMgr { [INFO] [stderr] 26 | | ServiceMgr { listen_fds: HashSet::new() } [INFO] [stderr] 27 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 10 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/mgr/service_mgr.rs:18:22 [INFO] [stderr] | [INFO] [stderr] 18 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/mgr/http_mgr.rs:33:1 [INFO] [stderr] | [INFO] [stderr] 33 | static mut el: *mut HttpMgr = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mgr::http_mgr::HttpMgr` [INFO] [stderr] --> src/mgr/http_mgr.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | / pub fn new() -> HttpMgr { [INFO] [stderr] 45 | | ThreadUtils::instance().create_pool(HTTP_POOL_NAME.to_string(), 10); [INFO] [stderr] 46 | | HttpMgr { [INFO] [stderr] 47 | | requests: HashMap::new(), [INFO] [stderr] 48 | | mutex: Arc::new(ReentrantMutex::new(0)), [INFO] [stderr] 49 | | } [INFO] [stderr] 50 | | } [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] 34 | impl Default for mgr::http_mgr::HttpMgr { [INFO] [stderr] 35 | fn default() -> Self { [INFO] [stderr] 36 | Self::new() [INFO] [stderr] 37 | } [INFO] [stderr] 38 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/mgr/http_mgr.rs:37:22 [INFO] [stderr] | [INFO] [stderr] 37 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/mgr/http_mgr.rs:93:27 [INFO] [stderr] | [INFO] [stderr] 93 | let host = if ip_port.len() == 0 { &*addr } else { ip_port[0] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `ip_port.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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/mgr/http_mgr.rs:110:28 [INFO] [stderr] | [INFO] [stderr] 110 | if let Some(_) = content.find("\r\n\r\n") { [INFO] [stderr] | _____________________- ^^^^^^^ [INFO] [stderr] 111 | | let header_content: Vec<&str> = content.split("\r\n\r\n").collect(); [INFO] [stderr] 112 | | header_len = header_content[0].len() + 4; [INFO] [stderr] 113 | | let header_str : Vec<&str> = header_content[0].split("\r\n").collect(); [INFO] [stderr] ... | [INFO] [stderr] 122 | | } [INFO] [stderr] 123 | | } [INFO] [stderr] | |_____________________- help: try this: `if content.find("\r\n\r\n").is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/mgr/event_mgr.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | static mut el: *mut EventMgr = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static variable `read_data` should have an upper case name such as `READ_DATA` [INFO] [stderr] --> src/mgr/event_mgr.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | static mut read_data: [u8; 65536] = [0; 65536]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mgr::event_mgr::EventMgr` [INFO] [stderr] --> src/mgr/event_mgr.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn new() -> EventMgr { [INFO] [stderr] 27 | | EventMgr { [INFO] [stderr] 28 | | connect_ids: HashMap::new(), [INFO] [stderr] 29 | | mutex: Arc::new(ReentrantMutex::new(0)), [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#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 25 | impl Default for mgr::event_mgr::EventMgr { [INFO] [stderr] 26 | fn default() -> Self { [INFO] [stderr] 27 | Self::new() [INFO] [stderr] 28 | } [INFO] [stderr] 29 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/mgr/event_mgr.rs:37:22 [INFO] [stderr] | [INFO] [stderr] 37 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/mgr/event_mgr.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / loop { [INFO] [stderr] 78 | | write_ret = tcp.write(socket_event.get_out_cache().get_data()); [INFO] [stderr] 79 | | if write_ret.is_err() { [INFO] [stderr] 80 | | break; [INFO] [stderr] ... | [INFO] [stderr] 90 | | break; [INFO] [stderr] 91 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/mgr/event_mgr.rs:82:56 [INFO] [stderr] | [INFO] [stderr] 82 | let size = write_ret.as_ref().map(|ref e| *e.clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 82 | let size = write_ret.as_ref().map(|ref e| *&(*e).clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 82 | let size = write_ret.as_ref().map(|ref e| *&usize::clone(e)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/mgr/event_mgr.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | / loop { [INFO] [stderr] 138 | | let socket_event = self.connect_ids.get_mut(&fd).unwrap(); [INFO] [stderr] 139 | | if socket_event.get_out_cache().len() > 0 { [INFO] [stderr] 140 | | write_ret = tcp.write(socket_event.get_out_cache().get_data()); [INFO] [stderr] ... | [INFO] [stderr] 169 | | break; [INFO] [stderr] 170 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/mgr/event_mgr.rs:144:60 [INFO] [stderr] | [INFO] [stderr] 144 | let size = write_ret.as_ref().map(|ref e| *e.clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 144 | let size = write_ret.as_ref().map(|ref e| *&(*e).clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 144 | let size = write_ret.as_ref().map(|ref e| *&usize::clone(e)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/mgr/event_mgr.rs:159:56 [INFO] [stderr] | [INFO] [stderr] 159 | let size = write_ret.as_ref().map(|ref e| *e.clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 159 | let size = write_ret.as_ref().map(|ref e| *&(*e).clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 159 | let size = write_ret.as_ref().map(|ref e| *&usize::clone(e)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: casting from `*mut ()` to a more-strictly-aligned pointer (`*mut net::socket_event::SocketEvent`) [INFO] [stderr] --> src/mgr/event_mgr.rs:269:46 [INFO] [stderr] | [INFO] [stderr] 269 | let sock_ev = unsafe { Box::from_raw(data as *mut SocketEvent) }; [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: variable does not need to be mutable [INFO] [stderr] --> src/mgr/event_mgr.rs:195:13 [INFO] [stderr] | [INFO] [stderr] 195 | let mut socket_event = socket_event.unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/mgr/event_mgr.rs:208:13 [INFO] [stderr] | [INFO] [stderr] 208 | let mut socket_event = socket_event.unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] error: aborting due to 33 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `tdengine`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/db/db_mysql.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | / match value { [INFO] [stderr] 40 | | &Err(ref val) => { [INFO] [stderr] 41 | | match val { [INFO] [stderr] 42 | | &mysql::Error::IoError(_) => return true, [INFO] [stderr] ... | [INFO] [stderr] 46 | | _ => (), [INFO] [stderr] 47 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 39 | if let &Err(ref val) = value { [INFO] [stderr] 40 | match val { [INFO] [stderr] 41 | &mysql::Error::IoError(_) => return true, [INFO] [stderr] 42 | _ => (), [INFO] [stderr] 43 | } [INFO] [stderr] 44 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/db/db_mysql.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | / match value { [INFO] [stderr] 40 | | &Err(ref val) => { [INFO] [stderr] 41 | | match val { [INFO] [stderr] 42 | | &mysql::Error::IoError(_) => return true, [INFO] [stderr] ... | [INFO] [stderr] 46 | | _ => (), [INFO] [stderr] 47 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 39 | match *value { [INFO] [stderr] 40 | Err(ref val) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/db/db_mysql.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | / match val { [INFO] [stderr] 42 | | &mysql::Error::IoError(_) => return true, [INFO] [stderr] 43 | | _ => (), [INFO] [stderr] 44 | | } [INFO] [stderr] | |_________________^ help: try this: `if let &mysql::Error::IoError(_) = val { return true }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/db/db_mysql.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | / match val { [INFO] [stderr] 42 | | &mysql::Error::IoError(_) => return true, [INFO] [stderr] 43 | | _ => (), [INFO] [stderr] 44 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 41 | match *val { [INFO] [stderr] 42 | mysql::Error::IoError(_) => return true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/db/db_mysql.rs:67:23 [INFO] [stderr] | [INFO] [stderr] 67 | let user = if url.username().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `url.username().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: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/db/db_mysql.rs:204:68 [INFO] [stderr] | [INFO] [stderr] 204 | mysql::Error::MySqlError(ref val) => success = val.code as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(val.code)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/db/db_mysql.rs:226:68 [INFO] [stderr] | [INFO] [stderr] 226 | mysql::Error::MySqlError(ref val) => success = val.code as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(val.code)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/db/db_mysql.rs:258:68 [INFO] [stderr] | [INFO] [stderr] 258 | mysql::Error::MySqlError(ref val) => success = val.code as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(val.code)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/db/db_mysql.rs:300:58 [INFO] [stderr] | [INFO] [stderr] 300 | mysql::Error::MySqlError(ref val) => val.code as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(val.code)` [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: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/db/db_pool.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | static mut el: *mut DbPool = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_upper_case_globals)] on by default [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/db_pool.rs:19:49 [INFO] [stderr] | [INFO] [stderr] 19 | fn get_db_trait(pool: &mut DbPool, db_name: &String) -> Option; [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/db_pool.rs:20:53 [INFO] [stderr] | [INFO] [stderr] 20 | fn release_db_trait(pool: &mut DbPool, db_name: &String, db: Self); [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/db/db_pool.rs:21:50 [INFO] [stderr] | [INFO] [stderr] 21 | fn init_db_trait(pool: &mut DbPool, db_name: &String) -> Option; [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `db::db_pool::DbPool` [INFO] [stderr] --> src/db/db_pool.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / pub fn new() -> DbPool { [INFO] [stderr] 26 | | DbPool { [INFO] [stderr] 27 | | db_mysql: HashMap::new(), [INFO] [stderr] 28 | | db_info: HashMap::new(), [INFO] [stderr] 29 | | mutex: Mutex::new(0), [INFO] [stderr] 30 | | } [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 12 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/db/db_pool.rs:35:22 [INFO] [stderr] | [INFO] [stderr] 35 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/db/db_pool.rs:65:28 [INFO] [stderr] | [INFO] [stderr] 65 | let mut list = match pool.db_mysql.contains_key(db_name) { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 66 | | true => pool.db_mysql.get_mut(db_name).unwrap(), [INFO] [stderr] 67 | | false => { [INFO] [stderr] 68 | | pool.db_mysql.entry(db_name.to_string()).or_insert(vec![]); [INFO] [stderr] 69 | | pool.db_mysql.get_mut(db_name).unwrap() [INFO] [stderr] 70 | | } [INFO] [stderr] 71 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 65 | let mut list = if pool.db_mysql.contains_key(db_name) { pool.db_mysql.get_mut(db_name).unwrap() } else { [INFO] [stderr] 66 | pool.db_mysql.entry(db_name.to_string()).or_insert(vec![]); [INFO] [stderr] 67 | pool.db_mysql.get_mut(db_name).unwrap() [INFO] [stderr] 68 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/db/db_pool.rs:68:62 [INFO] [stderr] | [INFO] [stderr] 68 | pool.db_mysql.entry(db_name.to_string()).or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/db/db_pool.rs:92:24 [INFO] [stderr] | [INFO] [stderr] 92 | let mut list = match pool.db_mysql.contains_key(db_name) { [INFO] [stderr] | ________________________^ [INFO] [stderr] 93 | | true => pool.db_mysql.get_mut(db_name).unwrap(), [INFO] [stderr] 94 | | false => { [INFO] [stderr] 95 | | pool.db_mysql.entry(db_name.to_string()).or_insert(vec![]); [INFO] [stderr] 96 | | pool.db_mysql.get_mut(db_name).unwrap() [INFO] [stderr] 97 | | } [INFO] [stderr] 98 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 92 | let mut list = if pool.db_mysql.contains_key(db_name) { pool.db_mysql.get_mut(db_name).unwrap() } else { [INFO] [stderr] 93 | pool.db_mysql.entry(db_name.to_string()).or_insert(vec![]); [INFO] [stderr] 94 | pool.db_mysql.get_mut(db_name).unwrap() [INFO] [stderr] 95 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/db/db_pool.rs:95:58 [INFO] [stderr] | [INFO] [stderr] 95 | pool.db_mysql.entry(db_name.to_string()).or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/db/redis_pool.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | static mut el: *mut RedisPool = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `db::redis_pool::RedisPool` [INFO] [stderr] --> src/db/redis_pool.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | / pub fn new() -> RedisPool { [INFO] [stderr] 25 | | RedisPool { [INFO] [stderr] 26 | | db_redis: Vec::new(), [INFO] [stderr] 27 | | url_list: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 34 | | } [INFO] [stderr] 35 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 10 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/db/redis_pool.rs:39:22 [INFO] [stderr] | [INFO] [stderr] 39 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/db/redis_pool.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | / loop { [INFO] [stderr] 79 | | if self.sub_connect.is_none() || !self.sub_connect.as_ref().unwrap().is_work() { [INFO] [stderr] 80 | | let cluster = self.init_connection(); [INFO] [stderr] 81 | | let pubsub = unwrap_or!(cluster.get_pubsub().ok(), break); [INFO] [stderr] ... | [INFO] [stderr] 85 | | break; [INFO] [stderr] 86 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/db/redis_pool.rs:120:35 [INFO] [stderr] | [INFO] [stderr] 120 | let thread_run = Arc::new(Mutex::new(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mutex_atomic)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/db/redis_pool.rs:127:13 [INFO] [stderr] | [INFO] [stderr] 127 | / loop { [INFO] [stderr] 128 | | let result = unwrap_or!(sub_connect.get_message().ok(), break); [INFO] [stderr] 129 | | let _ = sub_sender.send(result); [INFO] [stderr] 130 | | if *thread_run.lock().unwrap() == false { [INFO] [stderr] 131 | | break; [INFO] [stderr] 132 | | } [INFO] [stderr] 133 | | } [INFO] [stderr] | |_____________^ help: try: `while let Some(x) = sub_connect.get_message().ok() { .. }` [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/db/redis_pool.rs:130:20 [INFO] [stderr] | [INFO] [stderr] 130 | if *thread_run.lock().unwrap() == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!(*thread_run.lock().unwrap())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: static variable `ins` should have an upper case name such as `INS` [INFO] [stderr] --> src/utils/file_utils.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | static mut ins: *mut FileUtils = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/utils/file_utils.rs:17:23 [INFO] [stderr] | [INFO] [stderr] 17 | if ins == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/utils/thread_utils.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | static mut el: *mut ThreadUtils = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/utils/thread_utils.rs:14:22 [INFO] [stderr] | [INFO] [stderr] 14 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/utils/thread_utils.rs:27:38 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn get_pool(&mut self, name: &String) -> &mut ThreadPool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/utils/net_utils.rs:53:65 [INFO] [stderr] | [INFO] [stderr] 53 | let c_str_raw = unsafe { td_rlua::lua_tolstring(lua, index, &mut size) }; [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/utils/net_utils.rs:67:42 [INFO] [stderr] | [INFO] [stderr] 67 | td_rlua::lua_pushnil(lua); [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/utils/net_utils.rs:73:48 [INFO] [stderr] | [INFO] [stderr] 73 | while td_rlua::lua_istable(lua, t) && td_rlua::lua_next(lua, t) != 0 { [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/utils/net_utils.rs:73:77 [INFO] [stderr] | [INFO] [stderr] 73 | while td_rlua::lua_istable(lua, t) && td_rlua::lua_next(lua, t) != 0 { [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/utils/net_utils.rs:87:42 [INFO] [stderr] | [INFO] [stderr] 87 | td_rlua::lua_pop(lua, 1); [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/utils/net_utils.rs:104:46 [INFO] [stderr] | [INFO] [stderr] 104 | if !td_rlua::lua_istable(lua, index) { [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/utils/net_utils.rs:107:51 [INFO] [stderr] | [INFO] [stderr] 107 | let len = td_rlua::lua_rawlen(lua, index); [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/utils/net_utils.rs:109:49 [INFO] [stderr] | [INFO] [stderr] 109 | td_rlua::lua_pushnumber(lua, i as f64); [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/utils/net_utils.rs:115:47 [INFO] [stderr] | [INFO] [stderr] 115 | td_rlua::lua_gettable(lua, new_index); [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/utils/net_utils.rs:124:42 [INFO] [stderr] | [INFO] [stderr] 124 | td_rlua::lua_pop(lua, 1); [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] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/utils/net_utils.rs:82:29 [INFO] [stderr] | [INFO] [stderr] 82 | / if sub_val.is_none() { [INFO] [stderr] 83 | | return None; [INFO] [stderr] 84 | | } [INFO] [stderr] | |_____________________________^ help: replace_it_with: `sub_val?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/utils/net_utils.rs:108:30 [INFO] [stderr] | [INFO] [stderr] 108 | for i in 1..(len + 1) { [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `1..=len` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/utils/net_utils.rs:120:25 [INFO] [stderr] | [INFO] [stderr] 120 | / if sub_val.is_none() { [INFO] [stderr] 121 | | return None; [INFO] [stderr] 122 | | } [INFO] [stderr] | |_________________________^ help: replace_it_with: `sub_val?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils/net_utils.rs:149:36 [INFO] [stderr] | [INFO] [stderr] 149 | args: &Vec) [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/utils/net_utils.rs:151:49 [INFO] [stderr] | [INFO] [stderr] 151 | let size = unsafe { td_rlua::lua_gettop(lua) - index + 1 }; [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] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/utils/net_utils.rs:160:54 [INFO] [stderr] | [INFO] [stderr] 160 | &*args.get(i as usize).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `args[i as usize]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/utils/net_utils.rs:161:13 [INFO] [stderr] | [INFO] [stderr] 161 | / if sub_val.is_none() { [INFO] [stderr] 162 | | return None; [INFO] [stderr] 163 | | } [INFO] [stderr] | |_____________^ help: replace_it_with: `sub_val?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/utils/telnet_utils.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | static mut el: *mut TelnetUtils = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `utils::telnet_utils::TelnetUtils` [INFO] [stderr] --> src/utils/telnet_utils.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | / pub fn new() -> TelnetUtils { [INFO] [stderr] 61 | | TelnetUtils { [INFO] [stderr] 62 | | clients: HashMap::new(), [INFO] [stderr] 63 | | tcp_listener: None, [INFO] [stderr] ... | [INFO] [stderr] 66 | | } [INFO] [stderr] 67 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/utils/telnet_utils.rs:53:22 [INFO] [stderr] | [INFO] [stderr] 53 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/utils/telnet_utils.rs:88:12 [INFO] [stderr] | [INFO] [stderr] 88 | if data.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `data.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] error: this `if` has identical blocks [INFO] [stderr] --> src/utils/telnet_utils.rs:157:29 [INFO] [stderr] | [INFO] [stderr] 157 | else if b == &9 { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 158 | | continue; [INFO] [stderr] 159 | | } else if b == &27 && (i + 1 > bytes.len() && bytes[i + 1] == 91) { [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/utils/telnet_utils.rs:153:30 [INFO] [stderr] | [INFO] [stderr] 153 | else if b == &10 { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 154 | | continue; [INFO] [stderr] 155 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/utils/telnet_utils.rs:145:34 [INFO] [stderr] | [INFO] [stderr] 145 | for _ in 0..(client.data[client.ipos as usize..].len() + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=client.data[client.ipos as usize..].len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 34 [INFO] [stderr] --> src/utils/telnet_utils.rs:177:5 [INFO] [stderr] | [INFO] [stderr] 177 | / pub fn update_data(&mut self, fd: i32, bytes: &[u8]) -> i32 { [INFO] [stderr] 178 | | let blogin = { [INFO] [stderr] 179 | | let client = unwrap_or!(self.clients.get_mut(&fd), return 1); [INFO] [stderr] 180 | | client.blogin [INFO] [stderr] ... | [INFO] [stderr] 351 | | 0 [INFO] [stderr] 352 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/utils/telnet_utils.rs:196:20 [INFO] [stderr] | [INFO] [stderr] 196 | if client.data.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!client.data.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: an inclusive range would be more readable [INFO] [stderr] --> src/utils/telnet_utils.rs:222:34 [INFO] [stderr] | [INFO] [stderr] 222 | for _ in 0..(client.data[client.ipos as usize..].len() + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=client.data[client.ipos as usize..].len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/utils/telnet_utils.rs:239:30 [INFO] [stderr] | [INFO] [stderr] 239 | for _ in 0..(client.data[client.ipos as usize..].len() + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=client.data[client.ipos as usize..].len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/utils/telnet_utils.rs:249:42 [INFO] [stderr] | [INFO] [stderr] 249 | if bytes[i + 2] == 65 && client.records.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!client.records.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: length comparison to zero [INFO] [stderr] --> src/utils/telnet_utils.rs:269:47 [INFO] [stderr] | [INFO] [stderr] 269 | else if bytes[i + 2] == 66 && client.records.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!client.records.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: an inclusive range would be more readable [INFO] [stderr] --> src/utils/telnet_utils.rs:296:55 [INFO] [stderr] | [INFO] [stderr] 296 | .write(&client.data[client.ipos as usize..client.ipos as usize + [INFO] [stderr] | _______________________________________________________^ [INFO] [stderr] 297 | | 1]); [INFO] [stderr] | |_____________________________________________________________________________^ help: use: `client.ipos as usize..=client.ipos as usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: static variable `ins` should have an upper case name such as `INS` [INFO] [stderr] --> src/utils/log_utils.rs:40:1 [INFO] [stderr] | [INFO] [stderr] 40 | static mut ins: *mut LogUtils = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `utils::log_utils::LogUtils` [INFO] [stderr] --> src/utils/log_utils.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | / pub fn new() -> LogUtils { [INFO] [stderr] 52 | | LogUtils { [INFO] [stderr] 53 | | file: None, [INFO] [stderr] 54 | | mutex: Arc::new(ReentrantMutex::new(0)), [INFO] [stderr] ... | [INFO] [stderr] 69 | | } [INFO] [stderr] 70 | | } [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] 41 | impl Default for utils::log_utils::LogUtils { [INFO] [stderr] 42 | fn default() -> Self { [INFO] [stderr] 43 | Self::new() [INFO] [stderr] 44 | } [INFO] [stderr] 45 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/utils/log_utils.rs:44:23 [INFO] [stderr] | [INFO] [stderr] 44 | if ins == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/lua_engine.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | static mut el: *mut LuaEngine = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/lua_engine.rs:46:22 [INFO] [stderr] | [INFO] [stderr] 46 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/lua_engine.rs:159:41 [INFO] [stderr] | [INFO] [stderr] 159 | err_msg.unwrap_or("err msg detail miss".to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "err msg detail miss".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lua_engine.rs:232:12 [INFO] [stderr] | [INFO] [stderr] 232 | if ori.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `ori.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] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/rp_wrapper.rs:24:46 [INFO] [stderr] | [INFO] [stderr] 24 | td_rlua::lua_pushlstring(lua, val.as_ptr() as *const libc::c_char, val.len()) [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/rp_wrapper.rs:71:35 [INFO] [stderr] | [INFO] [stderr] 71 | td_rlua::lua_newtable(lua); [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/rp_wrapper.rs:73:41 [INFO] [stderr] | [INFO] [stderr] 73 | td_rlua::lua_pushnumber(lua, (i + 1) as f64); [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/rp_wrapper.rs:75:39 [INFO] [stderr] | [INFO] [stderr] 75 | td_rlua::lua_settable(lua, -3); [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] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/global_config.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | static mut el: *mut GlobalConfig = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/global_config.rs:17:22 [INFO] [stderr] | [INFO] [stderr] 17 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/global_config.rs:35:22 [INFO] [stderr] | [INFO] [stderr] 35 | if el != 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/global_config.rs:61:29 [INFO] [stderr] | [INFO] [stderr] 61 | result.push(self.db_info.get(&key).unwrap().clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.db_info[&key]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/redis_wrapper.rs:68:35 [INFO] [stderr] | [INFO] [stderr] 68 | td_rlua::lua_newtable(lua); [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/redis_wrapper.rs:74:39 [INFO] [stderr] | [INFO] [stderr] 74 | td_rlua::lua_settable(lua, -3); [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/redis_wrapper.rs:79:35 [INFO] [stderr] | [INFO] [stderr] 79 | td_rlua::lua_settable(lua, -3); [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/redis_wrapper.rs:85:39 [INFO] [stderr] | [INFO] [stderr] 85 | td_rlua::lua_settable(lua, -3); [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/redis_wrapper.rs:95:49 [INFO] [stderr] | [INFO] [stderr] 95 | let args = unsafe { td_rlua::lua_gettop(lua) - index.abs() + 1 }; [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/redis_wrapper.rs:112:65 [INFO] [stderr] | [INFO] [stderr] 112 | let c_str_raw = unsafe { td_rlua::lua_tolstring(lua, i + index, &mut size) }; [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] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/redis_wrapper.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | / if val.is_none() { [INFO] [stderr] 125 | | return None; [INFO] [stderr] 126 | | } [INFO] [stderr] | |_____________^ help: replace_it_with: `val?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lua_custom/lua_db.rs:14:30 [INFO] [stderr] | [INFO] [stderr] 14 | fn thread_db_select(db_name: &String, _db_type: u8, sql_cmd: &str, cookie: u32) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lua_custom/lua_db.rs:38:31 [INFO] [stderr] | [INFO] [stderr] 38 | fn thread_db_execute(db_name: &String, _db_type: u8, sql_cmd: &str, cookie: u32) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lua_custom/lua_db.rs:60:30 [INFO] [stderr] | [INFO] [stderr] 60 | fn thread_db_insert(db_name: &String, _db_type: u8, sql_cmd: &str, cookie: u32) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lua_custom/lua_db.rs:84:35 [INFO] [stderr] | [INFO] [stderr] 84 | fn thread_db_transaction(db_name: &String, _db_type: u8, sql_cmd_list: Vec, cookie: u32) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lua_custom/lua_db.rs:125:37 [INFO] [stderr] | [INFO] [stderr] 125 | fn thread_db_batch_execute(db_name: &String, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lua_custom/lua_db.rs:344:5 [INFO] [stderr] | [INFO] [stderr] 344 | / loop { [INFO] [stderr] 345 | | let result = unwrap_or!(receiver.try_recv().ok(), break); [INFO] [stderr] 346 | | list.push(RedisWrapperMsg(result)); [INFO] [stderr] 347 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(x) = receiver.try_recv().ok() { .. }` [INFO] [stderr] | [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: unused unary operation that must be used [INFO] [stderr] --> src/lua_custom/lua_network.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | -1.push_to_lua(lua); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/lua_custom/lua_network.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | -1.push_to_lua(lua); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `1.push_to_lua(lua);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/lua_custom/lua_network.rs:119:5 [INFO] [stderr] | [INFO] [stderr] 119 | NetConfig::instance().get_proto_msg_type(&msg).map(|s| s.clone()).unwrap_or(String::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `NetConfig::instance().get_proto_msg_type(&msg).map(|s| s.clone()).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lua_custom/lua_network.rs:119:5 [INFO] [stderr] | [INFO] [stderr] 119 | NetConfig::instance().get_proto_msg_type(&msg).map(|s| s.clone()).unwrap_or(String::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `NetConfig::instance().get_proto_msg_type(&msg).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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/lua_custom/lua_network.rs:125:27 [INFO] [stderr] | [INFO] [stderr] 125 | let bind_ip = bind_ip.unwrap_or("0.0.0.0".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "0.0.0.0".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/lua_custom/lua_network.rs:143:13 [INFO] [stderr] | [INFO] [stderr] 143 | / let mut peer_ip = "unkown_ip".to_string(); [INFO] [stderr] 144 | | if stream.peer_addr().is_ok() { [INFO] [stderr] 145 | | peer_ip = format!("{}", stream.peer_addr().ok().unwrap()); [INFO] [stderr] 146 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let peer_ip = if stream.peer_addr().is_ok() { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { "unkown_ip".to_string() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lua_custom/lua_userdata.rs:31:36 [INFO] [stderr] | [INFO] [stderr] 31 | td_rlua::lua_getglobal(lua, typeid.as_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/lua_custom/lua_userdata.rs:32:37 [INFO] [stderr] | [INFO] [stderr] 32 | if td_rlua::lua_istable(lua, -1) { [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/lua_custom/lua_userdata.rs:33:43 [INFO] [stderr] | [INFO] [stderr] 33 | td_rlua::lua_setmetatable(lua, -2); [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/lua_custom/lua_userdata.rs:35:34 [INFO] [stderr] | [INFO] [stderr] 35 | td_rlua::lua_pop(lua, 1); [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] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lua_custom/lua_timer.rs:19:63 [INFO] [stderr] | [INFO] [stderr] 19 | let timer_id = event_loop.add_timer(EventEntry::new_timer((time * 1000) as u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(time * 1000)` [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: static variable `rid_sequence` should have an upper case name such as `RID_SEQUENCE` [INFO] [stderr] --> src/lua_custom/lua_util.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | static mut rid_sequence: u32 = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static variable `last_rid_time` should have an upper case name such as `LAST_RID_TIME` [INFO] [stderr] --> src/lua_custom/lua_util.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | static mut last_rid_time: u32 = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lua_custom/lua_util.rs:60:50 [INFO] [stderr] | [INFO] [stderr] 60 | rid[6] = ENCODE_MAP[(((ti) & 0x7) | ((server_id >> 10) as u32 & 0x3)) as usize]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(server_id >> 10)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/lua_custom/lua_util.rs:114:30 [INFO] [stderr] | [INFO] [stderr] 114 | proto.map(|s| s.clone()).unwrap_or("".to_string()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/lua_custom/lua_util.rs:114:5 [INFO] [stderr] | [INFO] [stderr] 114 | proto.map(|s| s.clone()).unwrap_or("".to_string()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `proto.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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/lua_custom/lua_util.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | sys_info::os_type().ok().unwrap_or(String::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `sys_info::os_type().ok().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/lua_custom/lua_util.rs:151:5 [INFO] [stderr] | [INFO] [stderr] 151 | sys_info::os_release().ok().unwrap_or(String::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `sys_info::os_release().ok().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: Matching on `Some` with `ok()` is redundant [INFO] [stderr] --> src/lua_custom/lua_util.rs:160:5 [INFO] [stderr] | [INFO] [stderr] 160 | / if let Some(avg) = sys_info::loadavg().ok() { [INFO] [stderr] 161 | | map.insert("one".to_string(), avg.one as f32); [INFO] [stderr] 162 | | map.insert("five".to_string(), avg.five as f32); [INFO] [stderr] 163 | | map.insert("fifteen".to_string(), avg.fifteen as f32); [INFO] [stderr] ... | [INFO] [stderr] 167 | | map.insert("fifteen".to_string(), 0 as f32); [INFO] [stderr] 168 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::if_let_some_result)] on by default [INFO] [stderr] = help: Consider matching on `Ok(avg)` and removing the call to `ok` instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_let_some_result [INFO] [stderr] [INFO] [stderr] warning: Matching on `Some` with `ok()` is redundant [INFO] [stderr] --> src/lua_custom/lua_util.rs:174:5 [INFO] [stderr] | [INFO] [stderr] 174 | / if let Some(avg) = sys_info::disk_info().ok() { [INFO] [stderr] 175 | | map.insert("total".to_string(), avg.total as u32); [INFO] [stderr] 176 | | map.insert("free".to_string(), avg.free as u32); [INFO] [stderr] 177 | | } else { [INFO] [stderr] 178 | | map.insert("total".to_string(), 0 as u32); [INFO] [stderr] 179 | | map.insert("free".to_string(), 0 as u32); [INFO] [stderr] 180 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: Consider matching on `Ok(avg)` and removing the call to `ok` instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_let_some_result [INFO] [stderr] [INFO] [stderr] warning: Matching on `Some` with `ok()` is redundant [INFO] [stderr] --> src/lua_custom/lua_util.rs:186:5 [INFO] [stderr] | [INFO] [stderr] 186 | / if let Some(men) = sys_info::mem_info().ok() { [INFO] [stderr] 187 | | map.insert("total".to_string(), men.total as u32); [INFO] [stderr] 188 | | map.insert("free".to_string(), men.free as u32); [INFO] [stderr] 189 | | map.insert("avail".to_string(), men.avail as u32); [INFO] [stderr] ... | [INFO] [stderr] 201 | | map.insert("swap_free".to_string(), 0 as u32); [INFO] [stderr] 202 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: Consider matching on `Ok(men)` and removing the call to `ok` instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_let_some_result [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/net/net_config.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | static mut el: *mut Config = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/net/net_config.rs:11:22 [INFO] [stderr] | [INFO] [stderr] 11 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/net/net_config.rs:21:22 [INFO] [stderr] | [INFO] [stderr] 21 | if el != 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/net/net_config.rs:35:26 [INFO] [stderr] | [INFO] [stderr] 35 | if el != 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: item `net::net_msg::NetMsg` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/net/net_msg.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | / impl NetMsg { [INFO] [stderr] 18 | | pub fn new() -> NetMsg { [INFO] [stderr] 19 | | let mut buffer = Buffer::new(); [INFO] [stderr] 20 | | let _ = buffer.write(&HEAD_FILL_UP); [INFO] [stderr] ... | [INFO] [stderr] 144 | | } [INFO] [stderr] 145 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `net::net_msg::NetMsg` [INFO] [stderr] --> src/net/net_msg.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | / pub fn new() -> NetMsg { [INFO] [stderr] 19 | | let mut buffer = Buffer::new(); [INFO] [stderr] 20 | | let _ = buffer.write(&HEAD_FILL_UP); [INFO] [stderr] 21 | | NetMsg { [INFO] [stderr] ... | [INFO] [stderr] 27 | | } [INFO] [stderr] 28 | | } [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] 17 | impl Default for net::net_msg::NetMsg { [INFO] [stderr] 18 | fn default() -> Self { [INFO] [stderr] 19 | Self::new() [INFO] [stderr] 20 | } [INFO] [stderr] 21 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/net/socket_event.rs:59:22 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn is_online(&mut self) -> bool { [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: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/mgr/service_mgr.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | static mut el: *mut ServiceMgr = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `mgr::service_mgr::ServiceMgr` [INFO] [stderr] --> src/mgr/service_mgr.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / pub fn new() -> ServiceMgr { [INFO] [stderr] 26 | | ServiceMgr { listen_fds: HashSet::new() } [INFO] [stderr] 27 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 10 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/mgr/service_mgr.rs:18:22 [INFO] [stderr] | [INFO] [stderr] 18 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/mgr/http_mgr.rs:33:1 [INFO] [stderr] | [INFO] [stderr] 33 | static mut el: *mut HttpMgr = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mgr::http_mgr::HttpMgr` [INFO] [stderr] --> src/mgr/http_mgr.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | / pub fn new() -> HttpMgr { [INFO] [stderr] 45 | | ThreadUtils::instance().create_pool(HTTP_POOL_NAME.to_string(), 10); [INFO] [stderr] 46 | | HttpMgr { [INFO] [stderr] 47 | | requests: HashMap::new(), [INFO] [stderr] 48 | | mutex: Arc::new(ReentrantMutex::new(0)), [INFO] [stderr] 49 | | } [INFO] [stderr] 50 | | } [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] 34 | impl Default for mgr::http_mgr::HttpMgr { [INFO] [stderr] 35 | fn default() -> Self { [INFO] [stderr] 36 | Self::new() [INFO] [stderr] 37 | } [INFO] [stderr] 38 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/mgr/http_mgr.rs:37:22 [INFO] [stderr] | [INFO] [stderr] 37 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/mgr/http_mgr.rs:93:27 [INFO] [stderr] | [INFO] [stderr] 93 | let host = if ip_port.len() == 0 { &*addr } else { ip_port[0] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `ip_port.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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/mgr/http_mgr.rs:110:28 [INFO] [stderr] | [INFO] [stderr] 110 | if let Some(_) = content.find("\r\n\r\n") { [INFO] [stderr] | _____________________- ^^^^^^^ [INFO] [stderr] 111 | | let header_content: Vec<&str> = content.split("\r\n\r\n").collect(); [INFO] [stderr] 112 | | header_len = header_content[0].len() + 4; [INFO] [stderr] 113 | | let header_str : Vec<&str> = header_content[0].split("\r\n").collect(); [INFO] [stderr] ... | [INFO] [stderr] 122 | | } [INFO] [stderr] 123 | | } [INFO] [stderr] | |_____________________- help: try this: `if content.find("\r\n\r\n").is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: static variable `el` should have an upper case name such as `EL` [INFO] [stderr] --> src/mgr/event_mgr.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | static mut el: *mut EventMgr = 0 as *mut _; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static variable `read_data` should have an upper case name such as `READ_DATA` [INFO] [stderr] --> src/mgr/event_mgr.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | static mut read_data: [u8; 65536] = [0; 65536]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mgr::event_mgr::EventMgr` [INFO] [stderr] --> src/mgr/event_mgr.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn new() -> EventMgr { [INFO] [stderr] 27 | | EventMgr { [INFO] [stderr] 28 | | connect_ids: HashMap::new(), [INFO] [stderr] 29 | | mutex: Arc::new(ReentrantMutex::new(0)), [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#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 25 | impl Default for mgr::event_mgr::EventMgr { [INFO] [stderr] 26 | fn default() -> Self { [INFO] [stderr] 27 | Self::new() [INFO] [stderr] 28 | } [INFO] [stderr] 29 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `0 as *mut _` detected. Consider using `ptr::null_mut()` [INFO] [stderr] --> src/mgr/event_mgr.rs:37:22 [INFO] [stderr] | [INFO] [stderr] 37 | if el == 0 as *mut _ { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/mgr/event_mgr.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / loop { [INFO] [stderr] 78 | | write_ret = tcp.write(socket_event.get_out_cache().get_data()); [INFO] [stderr] 79 | | if write_ret.is_err() { [INFO] [stderr] 80 | | break; [INFO] [stderr] ... | [INFO] [stderr] 90 | | break; [INFO] [stderr] 91 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/mgr/event_mgr.rs:82:56 [INFO] [stderr] | [INFO] [stderr] 82 | let size = write_ret.as_ref().map(|ref e| *e.clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 82 | let size = write_ret.as_ref().map(|ref e| *&(*e).clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 82 | let size = write_ret.as_ref().map(|ref e| *&usize::clone(e)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/mgr/event_mgr.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | / loop { [INFO] [stderr] 138 | | let socket_event = self.connect_ids.get_mut(&fd).unwrap(); [INFO] [stderr] 139 | | if socket_event.get_out_cache().len() > 0 { [INFO] [stderr] 140 | | write_ret = tcp.write(socket_event.get_out_cache().get_data()); [INFO] [stderr] ... | [INFO] [stderr] 169 | | break; [INFO] [stderr] 170 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/mgr/event_mgr.rs:144:60 [INFO] [stderr] | [INFO] [stderr] 144 | let size = write_ret.as_ref().map(|ref e| *e.clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 144 | let size = write_ret.as_ref().map(|ref e| *&(*e).clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 144 | let size = write_ret.as_ref().map(|ref e| *&usize::clone(e)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/mgr/event_mgr.rs:159:56 [INFO] [stderr] | [INFO] [stderr] 159 | let size = write_ret.as_ref().map(|ref e| *e.clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 159 | let size = write_ret.as_ref().map(|ref e| *&(*e).clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 159 | let size = write_ret.as_ref().map(|ref e| *&usize::clone(e)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: casting from `*mut ()` to a more-strictly-aligned pointer (`*mut net::socket_event::SocketEvent`) [INFO] [stderr] --> src/mgr/event_mgr.rs:269:46 [INFO] [stderr] | [INFO] [stderr] 269 | let sock_ev = unsafe { Box::from_raw(data as *mut SocketEvent) }; [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] error: aborting due to 33 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `tdengine`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "30c02265b7f4da1c281ff6146e08fbd44f5be6a0025b77395a9736fdddbe610e"` [INFO] running `"docker" "rm" "-f" "30c02265b7f4da1c281ff6146e08fbd44f5be6a0025b77395a9736fdddbe610e"` [INFO] [stdout] 30c02265b7f4da1c281ff6146e08fbd44f5be6a0025b77395a9736fdddbe610e