[INFO] crate raudient 0.2.0 is already in cache [INFO] extracting crate raudient 0.2.0 into work/ex/clippy-test-run/sources/stable/reg/raudient/0.2.0 [INFO] extracting crate raudient 0.2.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/raudient/0.2.0 [INFO] validating manifest of raudient-0.2.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of raudient-0.2.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing raudient-0.2.0 [INFO] finished frobbing raudient-0.2.0 [INFO] frobbed toml for raudient-0.2.0 written to work/ex/clippy-test-run/sources/stable/reg/raudient/0.2.0/Cargo.toml [INFO] started frobbing raudient-0.2.0 [INFO] finished frobbing raudient-0.2.0 [INFO] frobbed toml for raudient-0.2.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/raudient/0.2.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting raudient-0.2.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/raudient/0.2.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 78a7387365b817bf7108202dd64f99c196e41c8a54e2d75b631525377e0782c9 [INFO] running `"docker" "start" "-a" "78a7387365b817bf7108202dd64f99c196e41c8a54e2d75b631525377e0782c9"` [INFO] [stderr] Compiling gdk-pixbuf v0.1.3 [INFO] [stderr] Compiling gio v0.1.3 [INFO] [stderr] Compiling cairo-rs v0.1.3 [INFO] [stderr] Compiling gdk v0.5.3 [INFO] [stderr] Compiling gtk v0.1.3 [INFO] [stderr] Compiling glib-sys v0.3.4 [INFO] [stderr] Compiling gobject-sys v0.3.4 [INFO] [stderr] Compiling gio-sys v0.3.4 [INFO] [stderr] Compiling pango-sys v0.3.4 [INFO] [stderr] Compiling cairo-sys-rs v0.3.4 [INFO] [stderr] Compiling gdk-pixbuf-sys v0.3.4 [INFO] [stderr] Compiling gdk-sys v0.3.4 [INFO] [stderr] Compiling atk-sys v0.3.4 [INFO] [stderr] Compiling gtk-sys v0.3.4 [INFO] [stderr] Checking local-ip v0.1.0 [INFO] [stderr] Checking glib v0.1.3 [INFO] [stderr] Checking pango v0.1.3 [INFO] [stderr] Checking raudient v0.2.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | command_no: command_no, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `command_no` [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/model.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | additional_section: additional_section, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `additional_section` [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/model.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | command_no: command_no, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `command_no` [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/model.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | additional_section: additional_section, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `additional_section` [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/model.rs:161:13 [INFO] [stderr] | [INFO] [stderr] 161 | 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/model.rs:162:13 [INFO] [stderr] | [INFO] [stderr] 162 | oper: oper, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `oper` [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/demons.rs:159:45 [INFO] [stderr] | [INFO] [stderr] 159 | file_id: file_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `file_id` [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/chat_window.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | size: size, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `size` [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/chat_window.rs:206:17 [INFO] [stderr] | [INFO] [stderr] 206 | size: size, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `size` [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/chat_window.rs:240:74 [INFO] [stderr] | [INFO] [stderr] 240 | ChatWindow{ win: clone_chat, his_view: clone_hist_view, ip: ip_str, pre_send_files: pre_send_files, received_store: Some(pre_send_files_model_clone), received_files: arc_received_files} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pre_send_files` [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/model.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | command_no: command_no, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `command_no` [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/model.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | additional_section: additional_section, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `additional_section` [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/model.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | command_no: command_no, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `command_no` [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/model.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | additional_section: additional_section, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `additional_section` [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/model.rs:161:13 [INFO] [stderr] | [INFO] [stderr] 161 | 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/model.rs:162:13 [INFO] [stderr] | [INFO] [stderr] 162 | oper: oper, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `oper` [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/demons.rs:159:45 [INFO] [stderr] | [INFO] [stderr] 159 | file_id: file_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `file_id` [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/chat_window.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | size: size, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `size` [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/chat_window.rs:206:17 [INFO] [stderr] | [INFO] [stderr] 206 | size: size, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `size` [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/chat_window.rs:240:74 [INFO] [stderr] | [INFO] [stderr] 240 | ChatWindow{ win: clone_chat, his_view: clone_hist_view, ip: ip_str, pre_send_files: pre_send_files, received_store: Some(pre_send_files_model_clone), received_files: arc_received_files} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pre_send_files` [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: long literal lacking separators [INFO] [stderr] --> src/constant.rs:9:36 [INFO] [stderr] | [INFO] [stderr] 9 | pub const IPMSG_NOOPERATION: u32 = 0x00000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:11:33 [INFO] [stderr] | [INFO] [stderr] 11 | pub const IPMSG_BR_ENTRY: u32 = 0x00000001; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:13:32 [INFO] [stderr] | [INFO] [stderr] 13 | pub const IPMSG_BR_EXIT: u32 = 0x00000002; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0002` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:15:33 [INFO] [stderr] | [INFO] [stderr] 15 | pub const IPMSG_ANSENTRY: u32 = 0x00000003; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0003` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:17:35 [INFO] [stderr] | [INFO] [stderr] 17 | pub const IPMSG_BR_ABSENCE: u32 = 0x00000004; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0004` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:21:37 [INFO] [stderr] | [INFO] [stderr] 21 | pub const IPMSG_BR_ISGETLIST: u32 = 0x00000010; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:23:34 [INFO] [stderr] | [INFO] [stderr] 23 | pub const IPMSG_OKGETLIST: u32 = 0x00000011; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0011` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:25:32 [INFO] [stderr] | [INFO] [stderr] 25 | pub const IPMSG_GETLIST: u32 = 0x00000012; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0012` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:27:32 [INFO] [stderr] | [INFO] [stderr] 27 | pub const IPMSG_ANSLIST: u32 = 0x00000013; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0013` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:29:38 [INFO] [stderr] | [INFO] [stderr] 29 | pub const IPMSG_BR_ISGETLIST2: u32 = 0x00000018; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0018` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:33:32 [INFO] [stderr] | [INFO] [stderr] 33 | pub const IPMSG_SENDMSG: u32 = 0x00000020; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0020` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:35:32 [INFO] [stderr] | [INFO] [stderr] 35 | pub const IPMSG_RECVMSG: u32 = 0x00000021; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0021` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:37:32 [INFO] [stderr] | [INFO] [stderr] 37 | pub const IPMSG_READMSG: u32 = 0x00000030; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0030` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:39:31 [INFO] [stderr] | [INFO] [stderr] 39 | pub const IPMSG_DELMSG: u32 = 0x00000031; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0031` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:42:35 [INFO] [stderr] | [INFO] [stderr] 42 | pub const IPMSG_ANSREADMSG: u32 = 0x00000032; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0032` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:44:32 [INFO] [stderr] | [INFO] [stderr] 44 | pub const IPMSG_GETINFO: u32 = 0x00000040; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0040` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:46:33 [INFO] [stderr] | [INFO] [stderr] 46 | pub const IPMSG_SENDINFO: u32 = 0x00000041; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0041` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:49:39 [INFO] [stderr] | [INFO] [stderr] 49 | pub const IPMSG_GETABSENCEINFO: u32 = 0x00000050; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0050` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:51:40 [INFO] [stderr] | [INFO] [stderr] 51 | pub const IPMSG_SENDABSENCEINFO: u32 = 0x00000051; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0051` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:54:36 [INFO] [stderr] | [INFO] [stderr] 54 | pub const IPMSG_GETFILEDATA: u32 = 0x00000060; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0060` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:56:37 [INFO] [stderr] | [INFO] [stderr] 56 | pub const IPMSG_RELEASEFILES: u32 = 0x00000061; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0061` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:58:36 [INFO] [stderr] | [INFO] [stderr] 58 | pub const IPMSG_GETDIRFILES: u32 = 0x00000062; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0062` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:61:34 [INFO] [stderr] | [INFO] [stderr] 61 | pub const IPMSG_GETPUBKEY: u32 = 0x00000072; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0072` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:63:34 [INFO] [stderr] | [INFO] [stderr] 63 | pub const IPMSG_ANSPUBKEY: u32 = 0x00000073; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0073` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:66:37 [INFO] [stderr] | [INFO] [stderr] 66 | pub const IPMSG_FILE_REGULAR: u32 = 0x00000001; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:67:33 [INFO] [stderr] | [INFO] [stderr] 67 | pub const IPMSG_FILE_DIR: u32 = 0x00000002; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0002` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:68:39 [INFO] [stderr] | [INFO] [stderr] 68 | pub const IPMSG_FILE_RETPARENT: u32 = 0x00000003;// return parent directory [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0003` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:69:37 [INFO] [stderr] | [INFO] [stderr] 69 | pub const IPMSG_FILE_SYMLINK: u32 = 0x00000004; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0004` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:70:34 [INFO] [stderr] | [INFO] [stderr] 70 | pub const IPMSG_FILE_CDEV: u32 = 0x00000005;// for UNIX [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0005` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:71:34 [INFO] [stderr] | [INFO] [stderr] 71 | pub const IPMSG_FILE_BDEV: u32 = 0x00000006;// for UNIX [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0006` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:72:34 [INFO] [stderr] | [INFO] [stderr] 72 | pub const IPMSG_FILE_FIFO: u32 = 0x00000007;// for UNIX [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0007` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:73:37 [INFO] [stderr] | [INFO] [stderr] 73 | pub const IPMSG_FILE_RESFORK: u32 = 0x00000010;// for mac [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:76:38 [INFO] [stderr] | [INFO] [stderr] 76 | pub const IPMSG_FILE_RONLYOPT: u32 = 0x00000100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0100` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:77:39 [INFO] [stderr] | [INFO] [stderr] 77 | pub const IPMSG_FILE_HIDDENOPT: u32 = 0x00001000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_1000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:78:41 [INFO] [stderr] | [INFO] [stderr] 78 | pub const IPMSG_FILE_EXHIDDENOPT: u32 = 0x00002000;// for MacOS X [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_2000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:79:40 [INFO] [stderr] | [INFO] [stderr] 79 | pub const IPMSG_FILE_ARCHIVEOPT: u32 = 0x00004000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_4000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:80:39 [INFO] [stderr] | [INFO] [stderr] 80 | pub const IPMSG_FILE_SYSTEMOPT: u32 = 0x00008000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_8000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:83:40 [INFO] [stderr] | [INFO] [stderr] 83 | pub const IPMSG_FILE_CREATETIME: u32 = 0x00000016; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0016` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:84:35 [INFO] [stderr] | [INFO] [stderr] 84 | pub const IPMSG_FILE_MTIME: u32 = 0x00000014; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0014` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:91:35 [INFO] [stderr] | [INFO] [stderr] 91 | pub const IPMSG_ABSENCEOPT: u32 = 0x00000100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0100` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:93:34 [INFO] [stderr] | [INFO] [stderr] 93 | pub const IPMSG_SERVEROPT: u32 = 0x00000200; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0200` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:95:34 [INFO] [stderr] | [INFO] [stderr] 95 | pub const IPMSG_DIALUPOPT: u32 = 0x00010000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0001_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:97:38 [INFO] [stderr] | [INFO] [stderr] 97 | pub const IPMSG_FILEATTACHOPT: u32 = 0x00200000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0020_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:99:35 [INFO] [stderr] | [INFO] [stderr] 99 | pub const IPMSG_ENCRYPTOPT: u32 = 0x00400000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0040_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:101:32 [INFO] [stderr] | [INFO] [stderr] 101 | pub const IPMSG_UTF8OPT: u32 = 0x00800000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0080_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:103:35 [INFO] [stderr] | [INFO] [stderr] 103 | pub const IPMSG_CAPUTF8OPT: u32 = 0x01000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0100_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:105:37 [INFO] [stderr] | [INFO] [stderr] 105 | pub const IPMSG_ENCEXTMSGOPT: u32 = 0x04000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0400_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:107:37 [INFO] [stderr] | [INFO] [stderr] 107 | pub const IPMSG_CLIPBOARDOPT: u32 = 0x08000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0800_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:108:41 [INFO] [stderr] | [INFO] [stderr] 108 | pub const IPMSG_CAPFILEENC_OBSLT: u32 = 0x00001000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_1000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:109:38 [INFO] [stderr] | [INFO] [stderr] 109 | pub const IPMSG_CAPFILEENCOPT: u32 = 0x00040000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0004_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:113:37 [INFO] [stderr] | [INFO] [stderr] 113 | pub const IPMSG_SENDCHECKOPT: u32 = 0x00000100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0100` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:115:34 [INFO] [stderr] | [INFO] [stderr] 115 | pub const IPMSG_SECRETOPT: u32 = 0x00000200; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0200` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:117:37 [INFO] [stderr] | [INFO] [stderr] 117 | pub const IPMSG_BROADCASTOPT: u32 = 0x00000400; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0400` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:119:37 [INFO] [stderr] | [INFO] [stderr] 119 | pub const IPMSG_MULTICASTOPT: u32 = 0x00000800; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0800` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:121:35 [INFO] [stderr] | [INFO] [stderr] 121 | pub const IPMSG_AUTORETOPT: u32 = 0x00002000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_2000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:123:33 [INFO] [stderr] | [INFO] [stderr] 123 | pub const IPMSG_RETRYOPT: u32 = 0x00004000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_4000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:125:36 [INFO] [stderr] | [INFO] [stderr] 125 | pub const IPMSG_PASSWORDOPT: u32 = 0x00008000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_8000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:127:33 [INFO] [stderr] | [INFO] [stderr] 127 | pub const IPMSG_NOLOGOPT: u32 = 0x00020000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0002_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:129:37 [INFO] [stderr] | [INFO] [stderr] 129 | pub const IPMSG_NOADDLISTOPT: u32 = 0x00080000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0008_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:131:37 [INFO] [stderr] | [INFO] [stderr] 131 | pub const IPMSG_READCHECKOPT: u32 = 0x00100000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0010_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/constant.rs:134:37 [INFO] [stderr] | [INFO] [stderr] 134 | pub const IPMSG_LIMITED_BROADCAST: &'static str = "255.255.255.255"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:137:15 [INFO] [stderr] | [INFO] [stderr] 137 | command & 0x000000ff [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:141:15 [INFO] [stderr] | [INFO] [stderr] 141 | command & 0xffffff00 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ff00` [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: unused import: `std::net::TcpStream` [INFO] [stderr] --> src/model.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::net::TcpStream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Path` [INFO] [stderr] --> src/model.rs:4:26 [INFO] [stderr] | [INFO] [stderr] 4 | use std::path::{PathBuf, Path}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::UdpSocket` [INFO] [stderr] --> src/demons.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::UdpSocket; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/demons.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Duration`, `SystemTime`, `UNIX_EPOCH`, `self` [INFO] [stderr] --> src/demons.rs:9:17 [INFO] [stderr] | [INFO] [stderr] 9 | use std::time::{self, Duration, SystemTime, UNIX_EPOCH}; [INFO] [stderr] | ^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ReadDir` [INFO] [stderr] --> src/demons.rs:12:37 [INFO] [stderr] | [INFO] [stderr] 12 | use std::fs::{self, File, Metadata, ReadDir}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `BufReader` [INFO] [stderr] --> src/demons.rs:13:15 [INFO] [stderr] | [INFO] [stderr] 13 | use std::io::{BufReader, BufWriter}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Path` [INFO] [stderr] --> src/demons.rs:14:26 [INFO] [stderr] | [INFO] [stderr] 14 | use std::path::{PathBuf, Path}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `FileInfo`, `self` [INFO] [stderr] --> src/demons.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | use model::{self, User, OperUser, Operate, ShareInfo, FileInfo, ReceivedSimpleFileInfo, ReceivedPacketInner}; [INFO] [stderr] | ^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `EncoderTrap` [INFO] [stderr] --> src/demons.rs:19:26 [INFO] [stderr] | [INFO] [stderr] 19 | use encoding::{Encoding, EncoderTrap, DecoderTrap}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefCell` [INFO] [stderr] --> src/demons.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use std::cell::RefCell; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Arc`, `Mutex` [INFO] [stderr] --> src/demons.rs:22:17 [INFO] [stderr] | [INFO] [stderr] 22 | use std::sync::{Arc, Mutex}; [INFO] [stderr] | ^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AboutDialog`, `Alignment`, `Builder`, `Button`, `CellRendererText`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `Label`, `ListStore`, `MenuBar`, `MenuItem`, `Menu`, `Orientation`, `ReliefStyle`, `ScrolledWindow`, `StatusIcon`, `TextView`, `TreeViewColumn`, `TreeView`, `Widget`, `WindowPosition`, `WindowType`, `Window`, `self` [INFO] [stderr] --> src/demons.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | self, TreeModelExt, CellRendererText, AboutDialog, CheckMenuItem, IconSize, Image, Label, Menu, MenuBar, MenuItem, Window, [INFO] [stderr] | ^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^ ^^^^ ^^^^^^^ ^^^^^^^^ ^^^^^^ [INFO] [stderr] 26 | WindowPosition, WindowType, StatusIcon, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation, [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^^ ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] 27 | ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, Alignment, [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `message` [INFO] [stderr] --> src/demons.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | use message; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ChatWindow` [INFO] [stderr] --> src/demons.rs:31:25 [INFO] [stderr] | [INFO] [stderr] 31 | use chat_window::{self, ChatWindow}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/demons.rs:32:11 [INFO] [stderr] | [INFO] [stderr] 32 | use app::{self, GLOBAL_UDPSOCKET, GLOBAL_SHARELIST, GLOBAL_WINDOWS, GLOBAL}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:85:59 [INFO] [stderr] | [INFO] [stderr] 85 | if let Some(ref additional_section) = (&packet).additional_section { [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.additional_section` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ref_in_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:88:49 [INFO] [stderr] | [INFO] [stderr] 88 | let opt = constant::get_opt((&packet).command_no); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.command_no` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:89:50 [INFO] [stderr] | [INFO] [stderr] 89 | let cmd = constant::get_mode((&packet).command_no); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.command_no` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:95:81 [INFO] [stderr] | [INFO] [stderr] 95 | let recvmsg = Packet::new(constant::IPMSG_RECVMSG, Some((&packet).packet_no.to_string())); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.packet_no` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:99:46 [INFO] [stderr] | [INFO] [stderr] 99 | let user = User::new((&packet).sender_name.to_owned(), (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), "".to_owned()); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.sender_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:99:80 [INFO] [stderr] | [INFO] [stderr] 99 | let user = User::new((&packet).sender_name.to_owned(), (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), "".to_owned()); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.sender_host` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:99:114 [INFO] [stderr] | [INFO] [stderr] 99 | let user = User::new((&packet).sender_name.to_owned(), (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), "".to_owned()); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.ip` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: doc comment not used by rustdoc [INFO] [stderr] --> src/demons.rs:103:25 [INFO] [stderr] | [INFO] [stderr] 103 | ///扩展段 用户名|用户组 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_doc_comments)] on by default [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:116:29 [INFO] [stderr] | [INFO] [stderr] 116 | (&packet).sender_name.to_owned() [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.sender_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:118:57 [INFO] [stderr] | [INFO] [stderr] 118 | let user = User::new(user_name, (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), group_name); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.sender_host` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:118:91 [INFO] [stderr] | [INFO] [stderr] 118 | let user = User::new(user_name, (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), group_name); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.ip` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:122:46 [INFO] [stderr] | [INFO] [stderr] 122 | let user = User::new((&packet).sender_name.to_owned(), (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), "".to_owned()); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.sender_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:122:80 [INFO] [stderr] | [INFO] [stderr] 122 | let user = User::new((&packet).sender_name.to_owned(), (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), "".to_owned()); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.sender_host` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:122:114 [INFO] [stderr] | [INFO] [stderr] 122 | let user = User::new((&packet).sender_name.to_owned(), (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), "".to_owned()); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.ip` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/demons.rs:134:25 [INFO] [stderr] | [INFO] [stderr] 134 | / if opt&constant::IPMSG_FILEATTACHOPT != 0 { [INFO] [stderr] 135 | | if ext_vec.len() > 1 { [INFO] [stderr] 136 | | let files_str: &str = ext_vec[1]; [INFO] [stderr] 137 | | info!("i have file attachment {:?}", files_str); [INFO] [stderr] ... | [INFO] [stderr] 171 | | }; [INFO] [stderr] 172 | | } [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] 134 | if opt&constant::IPMSG_FILEATTACHOPT != 0 && ext_vec.len() > 1 { [INFO] [stderr] 135 | let files_str: &str = ext_vec[1]; [INFO] [stderr] 136 | info!("i have file attachment {:?}", files_str); [INFO] [stderr] 137 | let files = files_str.split(constant::FILELIST_SEPARATOR).into_iter().filter(|x: &&str| !x.is_empty()).collect::>(); [INFO] [stderr] 138 | let mut simple_file_infos = Vec::new(); [INFO] [stderr] 139 | for file_str in files { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:160:56 [INFO] [stderr] | [INFO] [stderr] 160 | packet_id: (&packet).packet_no.parse::().unwrap(), [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.packet_no` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:174:78 [INFO] [stderr] | [INFO] [stderr] 174 | let received_packet_inner = ReceivedPacketInner::new((&packet).ip.to_owned()).packet(packet_clone).option_opt_files(files_opt); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.ip` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: unused import: `Mutex` [INFO] [stderr] --> src/message.rs:1:22 [INFO] [stderr] | [INFO] [stderr] 1 | use std::sync::{Arc, Mutex}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::UdpSocket` [INFO] [stderr] --> src/message.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::net::UdpSocket; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `DecoderTrap`, `EncoderTrap`, `Encoding` [INFO] [stderr] --> src/message.rs:5:16 [INFO] [stderr] | [INFO] [stderr] 5 | use encoding::{Encoding, EncoderTrap, DecoderTrap}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `encoding::all::GB18030` [INFO] [stderr] --> src/message.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use encoding::all::GB18030; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `GLOBAL_WINDOWS`, `GLOBAL`, `self` [INFO] [stderr] --> src/message.rs:10:11 [INFO] [stderr] | [INFO] [stderr] 10 | use app::{self, GLOBAL_UDPSOCKET, GLOBAL_SHARELIST, GLOBAL_WINDOWS, GLOBAL}; [INFO] [stderr] | ^^^^ ^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `DecoderTrap` [INFO] [stderr] --> src/util.rs:1:39 [INFO] [stderr] | [INFO] [stderr] 1 | use encoding::{Encoding, EncoderTrap, DecoderTrap}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/util.rs:6:17 [INFO] [stderr] | [INFO] [stderr] 6 | use std::time::{Duration, SystemTime}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AboutDialog`, `Alignment`, `ButtonBox`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `Label`, `MenuBar`, `MenuItem`, `Menu`, `Orientation`, `ReliefStyle`, `ScrolledWindow`, `StatusIcon`, `Widget`, `WindowPosition`, `WindowType` [INFO] [stderr] --> src/chat_window.rs:3:29 [INFO] [stderr] | [INFO] [stderr] 3 | self, CellRendererText, AboutDialog, CheckMenuItem, IconSize, Image, Label, Menu, MenuBar, MenuItem, Window, [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^ ^^^^ ^^^^^^^ ^^^^^^^^ [INFO] [stderr] 4 | WindowPosition, WindowType, StatusIcon, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation, [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^ ^^^^^^^^^^^ [INFO] [stderr] 5 | ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, Alignment, ButtonBox, [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Mutex` [INFO] [stderr] --> src/chat_window.rs:7:22 [INFO] [stderr] | [INFO] [stderr] 7 | use std::sync::{Arc, Mutex}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::mpsc` [INFO] [stderr] --> src/chat_window.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::sync::mpsc; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Path` [INFO] [stderr] --> src/chat_window.rs:11:26 [INFO] [stderr] | [INFO] [stderr] 11 | use std::path::{PathBuf, Path}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `File`, `ReadDir` [INFO] [stderr] --> src/chat_window.rs:12:21 [INFO] [stderr] | [INFO] [stderr] 12 | use std::fs::{self, File, Metadata, ReadDir}; [INFO] [stderr] | ^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Duration`, `SystemTime`, `UNIX_EPOCH` [INFO] [stderr] --> src/chat_window.rs:13:23 [INFO] [stderr] | [INFO] [stderr] 13 | use std::time::{self, Duration, SystemTime, UNIX_EPOCH}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ShareInfo` [INFO] [stderr] --> src/chat_window.rs:15:27 [INFO] [stderr] | [INFO] [stderr] 15 | use model::{self, Packet, ShareInfo, ReceivedSimpleFileInfo}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/chat_window.rs:255:5 [INFO] [stderr] | [INFO] [stderr] 255 | model [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/chat_window.rs:254:17 [INFO] [stderr] | [INFO] [stderr] 254 | let model = ListStore::new(&[String::static_type(), String::static_type()]); [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/chat_window.rs:260:5 [INFO] [stderr] | [INFO] [stderr] 260 | model [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/chat_window.rs:259:17 [INFO] [stderr] | [INFO] [stderr] 259 | let model = ListStore::new(&[String::static_type(), u32::static_type(), u32::static_type(), u8::static_type()]); [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: unused import: `std::thread` [INFO] [stderr] --> src/download.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ReadDir` [INFO] [stderr] --> src/download.rs:8:37 [INFO] [stderr] | [INFO] [stderr] 8 | use std::fs::{self, File, Metadata, ReadDir}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `EncoderTrap` [INFO] [stderr] --> src/download.rs:10:26 [INFO] [stderr] | [INFO] [stderr] 10 | use encoding::{Encoding, EncoderTrap, DecoderTrap}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/download.rs:105:65 [INFO] [stderr] | [INFO] [stderr] 105 | let header_context_str = read_bytes(stream, (header_size - 1 - header_size_str.as_bytes().len() as u64));//-1是减去的那个冒号 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Alignment`, `Builder`, `Button`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `Orientation`, `ReliefStyle`, `StatusIcon`, `TextView`, `Widget`, `WindowPosition`, `WindowType` [INFO] [stderr] --> src/app.rs:3:42 [INFO] [stderr] | [INFO] [stderr] 3 | self, CellRendererText, AboutDialog, CheckMenuItem, IconSize, Image, Label, Menu, MenuBar, MenuItem, Window, [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ [INFO] [stderr] 4 | WindowPosition, WindowType, StatusIcon, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation, [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^ ^^^^ ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] 5 | ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, Alignment, [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `chrono::prelude::*` [INFO] [stderr] --> src/app.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use chrono::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `TcpListener`, `TcpStream` [INFO] [stderr] --> src/app.rs:9:16 [INFO] [stderr] | [INFO] [stderr] 9 | use std::net::{TcpListener, TcpStream}; [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/app.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, `SocketAddrV4`, `SocketAddrV6`, `SocketAddr`, `ToSocketAddrs` [INFO] [stderr] --> src/app.rs:16:16 [INFO] [stderr] | [INFO] [stderr] 16 | use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6, Ipv4Addr, Ipv6Addr, ToSocketAddrs}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `FileInfo`, `Operate`, `ReceivedSimpleFileInfo`, `User`, `self` [INFO] [stderr] --> src/app.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | use model::{self, User, OperUser, Operate, ShareInfo, Packet, FileInfo, ReceivedSimpleFileInfo, ReceivedPacketInner}; [INFO] [stderr] | ^^^^ ^^^^ ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: doc comment not used by rustdoc [INFO] [stderr] --> src/app.rs:138:5 [INFO] [stderr] | [INFO] [stderr] 138 | ///待处理消息队列 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/app.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 193 | model [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/app.rs:186:17 [INFO] [stderr] | [INFO] [stderr] 186 | let model = ListStore::new(&[String::static_type(), String::static_type(), String::static_type(), String::static_type()]); [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: unused import: `gtk::prelude` [INFO] [stderr] --> src/demons.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | use gtk::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:9:36 [INFO] [stderr] | [INFO] [stderr] 9 | pub const IPMSG_NOOPERATION: u32 = 0x00000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:11:33 [INFO] [stderr] | [INFO] [stderr] 11 | pub const IPMSG_BR_ENTRY: u32 = 0x00000001; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:13:32 [INFO] [stderr] | [INFO] [stderr] 13 | pub const IPMSG_BR_EXIT: u32 = 0x00000002; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0002` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:15:33 [INFO] [stderr] | [INFO] [stderr] 15 | pub const IPMSG_ANSENTRY: u32 = 0x00000003; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0003` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:17:35 [INFO] [stderr] | [INFO] [stderr] 17 | pub const IPMSG_BR_ABSENCE: u32 = 0x00000004; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0004` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:21:37 [INFO] [stderr] | [INFO] [stderr] 21 | pub const IPMSG_BR_ISGETLIST: u32 = 0x00000010; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:23:34 [INFO] [stderr] | [INFO] [stderr] 23 | pub const IPMSG_OKGETLIST: u32 = 0x00000011; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0011` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:25:32 [INFO] [stderr] | [INFO] [stderr] 25 | pub const IPMSG_GETLIST: u32 = 0x00000012; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0012` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:27:32 [INFO] [stderr] | [INFO] [stderr] 27 | pub const IPMSG_ANSLIST: u32 = 0x00000013; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0013` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:29:38 [INFO] [stderr] | [INFO] [stderr] 29 | pub const IPMSG_BR_ISGETLIST2: u32 = 0x00000018; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0018` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:33:32 [INFO] [stderr] | [INFO] [stderr] 33 | pub const IPMSG_SENDMSG: u32 = 0x00000020; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0020` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:35:32 [INFO] [stderr] | [INFO] [stderr] 35 | pub const IPMSG_RECVMSG: u32 = 0x00000021; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0021` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:37:32 [INFO] [stderr] | [INFO] [stderr] 37 | pub const IPMSG_READMSG: u32 = 0x00000030; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0030` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:39:31 [INFO] [stderr] | [INFO] [stderr] 39 | pub const IPMSG_DELMSG: u32 = 0x00000031; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0031` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:42:35 [INFO] [stderr] | [INFO] [stderr] 42 | pub const IPMSG_ANSREADMSG: u32 = 0x00000032; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0032` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:44:32 [INFO] [stderr] | [INFO] [stderr] 44 | pub const IPMSG_GETINFO: u32 = 0x00000040; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0040` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:46:33 [INFO] [stderr] | [INFO] [stderr] 46 | pub const IPMSG_SENDINFO: u32 = 0x00000041; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0041` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:49:39 [INFO] [stderr] | [INFO] [stderr] 49 | pub const IPMSG_GETABSENCEINFO: u32 = 0x00000050; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0050` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:51:40 [INFO] [stderr] | [INFO] [stderr] 51 | pub const IPMSG_SENDABSENCEINFO: u32 = 0x00000051; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0051` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:54:36 [INFO] [stderr] | [INFO] [stderr] 54 | pub const IPMSG_GETFILEDATA: u32 = 0x00000060; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0060` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:56:37 [INFO] [stderr] | [INFO] [stderr] 56 | pub const IPMSG_RELEASEFILES: u32 = 0x00000061; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0061` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:58:36 [INFO] [stderr] | [INFO] [stderr] 58 | pub const IPMSG_GETDIRFILES: u32 = 0x00000062; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0062` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:61:34 [INFO] [stderr] | [INFO] [stderr] 61 | pub const IPMSG_GETPUBKEY: u32 = 0x00000072; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0072` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:63:34 [INFO] [stderr] | [INFO] [stderr] 63 | pub const IPMSG_ANSPUBKEY: u32 = 0x00000073; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0073` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:66:37 [INFO] [stderr] | [INFO] [stderr] 66 | pub const IPMSG_FILE_REGULAR: u32 = 0x00000001; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:67:33 [INFO] [stderr] | [INFO] [stderr] 67 | pub const IPMSG_FILE_DIR: u32 = 0x00000002; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0002` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:68:39 [INFO] [stderr] | [INFO] [stderr] 68 | pub const IPMSG_FILE_RETPARENT: u32 = 0x00000003;// return parent directory [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0003` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:69:37 [INFO] [stderr] | [INFO] [stderr] 69 | pub const IPMSG_FILE_SYMLINK: u32 = 0x00000004; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0004` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:70:34 [INFO] [stderr] | [INFO] [stderr] 70 | pub const IPMSG_FILE_CDEV: u32 = 0x00000005;// for UNIX [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0005` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:71:34 [INFO] [stderr] | [INFO] [stderr] 71 | pub const IPMSG_FILE_BDEV: u32 = 0x00000006;// for UNIX [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0006` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:72:34 [INFO] [stderr] | [INFO] [stderr] 72 | pub const IPMSG_FILE_FIFO: u32 = 0x00000007;// for UNIX [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0007` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:73:37 [INFO] [stderr] | [INFO] [stderr] 73 | pub const IPMSG_FILE_RESFORK: u32 = 0x00000010;// for mac [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:76:38 [INFO] [stderr] | [INFO] [stderr] 76 | pub const IPMSG_FILE_RONLYOPT: u32 = 0x00000100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0100` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:77:39 [INFO] [stderr] | [INFO] [stderr] 77 | pub const IPMSG_FILE_HIDDENOPT: u32 = 0x00001000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_1000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:78:41 [INFO] [stderr] | [INFO] [stderr] 78 | pub const IPMSG_FILE_EXHIDDENOPT: u32 = 0x00002000;// for MacOS X [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_2000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:79:40 [INFO] [stderr] | [INFO] [stderr] 79 | pub const IPMSG_FILE_ARCHIVEOPT: u32 = 0x00004000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_4000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:80:39 [INFO] [stderr] | [INFO] [stderr] 80 | pub const IPMSG_FILE_SYSTEMOPT: u32 = 0x00008000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_8000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:83:40 [INFO] [stderr] | [INFO] [stderr] 83 | pub const IPMSG_FILE_CREATETIME: u32 = 0x00000016; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0016` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:84:35 [INFO] [stderr] | [INFO] [stderr] 84 | pub const IPMSG_FILE_MTIME: u32 = 0x00000014; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0014` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:91:35 [INFO] [stderr] | [INFO] [stderr] 91 | pub const IPMSG_ABSENCEOPT: u32 = 0x00000100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0100` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:93:34 [INFO] [stderr] | [INFO] [stderr] 93 | pub const IPMSG_SERVEROPT: u32 = 0x00000200; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0200` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:95:34 [INFO] [stderr] | [INFO] [stderr] 95 | pub const IPMSG_DIALUPOPT: u32 = 0x00010000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0001_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:97:38 [INFO] [stderr] | [INFO] [stderr] 97 | pub const IPMSG_FILEATTACHOPT: u32 = 0x00200000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0020_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:99:35 [INFO] [stderr] | [INFO] [stderr] 99 | pub const IPMSG_ENCRYPTOPT: u32 = 0x00400000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0040_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:101:32 [INFO] [stderr] | [INFO] [stderr] 101 | pub const IPMSG_UTF8OPT: u32 = 0x00800000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0080_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:103:35 [INFO] [stderr] | [INFO] [stderr] 103 | pub const IPMSG_CAPUTF8OPT: u32 = 0x01000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0100_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:105:37 [INFO] [stderr] | [INFO] [stderr] 105 | pub const IPMSG_ENCEXTMSGOPT: u32 = 0x04000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0400_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:107:37 [INFO] [stderr] | [INFO] [stderr] 107 | pub const IPMSG_CLIPBOARDOPT: u32 = 0x08000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0800_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:108:41 [INFO] [stderr] | [INFO] [stderr] 108 | pub const IPMSG_CAPFILEENC_OBSLT: u32 = 0x00001000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_1000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:109:38 [INFO] [stderr] | [INFO] [stderr] 109 | pub const IPMSG_CAPFILEENCOPT: u32 = 0x00040000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0004_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:113:37 [INFO] [stderr] | [INFO] [stderr] 113 | pub const IPMSG_SENDCHECKOPT: u32 = 0x00000100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0100` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:115:34 [INFO] [stderr] | [INFO] [stderr] 115 | pub const IPMSG_SECRETOPT: u32 = 0x00000200; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0200` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:117:37 [INFO] [stderr] | [INFO] [stderr] 117 | pub const IPMSG_BROADCASTOPT: u32 = 0x00000400; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0400` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:119:37 [INFO] [stderr] | [INFO] [stderr] 119 | pub const IPMSG_MULTICASTOPT: u32 = 0x00000800; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_0800` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:121:35 [INFO] [stderr] | [INFO] [stderr] 121 | pub const IPMSG_AUTORETOPT: u32 = 0x00002000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_2000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:123:33 [INFO] [stderr] | [INFO] [stderr] 123 | pub const IPMSG_RETRYOPT: u32 = 0x00004000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_4000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:125:36 [INFO] [stderr] | [INFO] [stderr] 125 | pub const IPMSG_PASSWORDOPT: u32 = 0x00008000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_8000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:127:33 [INFO] [stderr] | [INFO] [stderr] 127 | pub const IPMSG_NOLOGOPT: u32 = 0x00020000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0002_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:129:37 [INFO] [stderr] | [INFO] [stderr] 129 | pub const IPMSG_NOADDLISTOPT: u32 = 0x00080000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0008_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:131:37 [INFO] [stderr] | [INFO] [stderr] 131 | pub const IPMSG_READCHECKOPT: u32 = 0x00100000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0010_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/constant.rs:134:37 [INFO] [stderr] | [INFO] [stderr] 134 | pub const IPMSG_LIMITED_BROADCAST: &'static str = "255.255.255.255"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:137:15 [INFO] [stderr] | [INFO] [stderr] 137 | command & 0x000000ff [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_00ff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/constant.rs:141:15 [INFO] [stderr] | [INFO] [stderr] 141 | command & 0xffffff00 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ff00` [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: unused import: `std::net::TcpStream` [INFO] [stderr] --> src/model.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::net::TcpStream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Path` [INFO] [stderr] --> src/model.rs:4:26 [INFO] [stderr] | [INFO] [stderr] 4 | use std::path::{PathBuf, Path}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::UdpSocket` [INFO] [stderr] --> src/demons.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::UdpSocket; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/demons.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Duration`, `SystemTime`, `UNIX_EPOCH`, `self` [INFO] [stderr] --> src/demons.rs:9:17 [INFO] [stderr] | [INFO] [stderr] 9 | use std::time::{self, Duration, SystemTime, UNIX_EPOCH}; [INFO] [stderr] | ^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ReadDir` [INFO] [stderr] --> src/demons.rs:12:37 [INFO] [stderr] | [INFO] [stderr] 12 | use std::fs::{self, File, Metadata, ReadDir}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `BufReader` [INFO] [stderr] --> src/demons.rs:13:15 [INFO] [stderr] | [INFO] [stderr] 13 | use std::io::{BufReader, BufWriter}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Path` [INFO] [stderr] --> src/demons.rs:14:26 [INFO] [stderr] | [INFO] [stderr] 14 | use std::path::{PathBuf, Path}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `FileInfo`, `self` [INFO] [stderr] --> src/demons.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | use model::{self, User, OperUser, Operate, ShareInfo, FileInfo, ReceivedSimpleFileInfo, ReceivedPacketInner}; [INFO] [stderr] | ^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `EncoderTrap` [INFO] [stderr] --> src/demons.rs:19:26 [INFO] [stderr] | [INFO] [stderr] 19 | use encoding::{Encoding, EncoderTrap, DecoderTrap}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefCell` [INFO] [stderr] --> src/demons.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use std::cell::RefCell; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Arc`, `Mutex` [INFO] [stderr] --> src/demons.rs:22:17 [INFO] [stderr] | [INFO] [stderr] 22 | use std::sync::{Arc, Mutex}; [INFO] [stderr] | ^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AboutDialog`, `Alignment`, `Builder`, `Button`, `CellRendererText`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `Label`, `ListStore`, `MenuBar`, `MenuItem`, `Menu`, `Orientation`, `ReliefStyle`, `ScrolledWindow`, `StatusIcon`, `TextView`, `TreeViewColumn`, `TreeView`, `Widget`, `WindowPosition`, `WindowType`, `Window`, `self` [INFO] [stderr] --> src/demons.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | self, TreeModelExt, CellRendererText, AboutDialog, CheckMenuItem, IconSize, Image, Label, Menu, MenuBar, MenuItem, Window, [INFO] [stderr] | ^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^ ^^^^ ^^^^^^^ ^^^^^^^^ ^^^^^^ [INFO] [stderr] 26 | WindowPosition, WindowType, StatusIcon, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation, [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^^ ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] 27 | ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, Alignment, [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `message` [INFO] [stderr] --> src/demons.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | use message; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ChatWindow` [INFO] [stderr] --> src/demons.rs:31:25 [INFO] [stderr] | [INFO] [stderr] 31 | use chat_window::{self, ChatWindow}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/demons.rs:32:11 [INFO] [stderr] | [INFO] [stderr] 32 | use app::{self, GLOBAL_UDPSOCKET, GLOBAL_SHARELIST, GLOBAL_WINDOWS, GLOBAL}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:85:59 [INFO] [stderr] | [INFO] [stderr] 85 | if let Some(ref additional_section) = (&packet).additional_section { [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.additional_section` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ref_in_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:88:49 [INFO] [stderr] | [INFO] [stderr] 88 | let opt = constant::get_opt((&packet).command_no); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.command_no` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:89:50 [INFO] [stderr] | [INFO] [stderr] 89 | let cmd = constant::get_mode((&packet).command_no); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.command_no` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:95:81 [INFO] [stderr] | [INFO] [stderr] 95 | let recvmsg = Packet::new(constant::IPMSG_RECVMSG, Some((&packet).packet_no.to_string())); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.packet_no` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:99:46 [INFO] [stderr] | [INFO] [stderr] 99 | let user = User::new((&packet).sender_name.to_owned(), (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), "".to_owned()); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.sender_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:99:80 [INFO] [stderr] | [INFO] [stderr] 99 | let user = User::new((&packet).sender_name.to_owned(), (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), "".to_owned()); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.sender_host` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:99:114 [INFO] [stderr] | [INFO] [stderr] 99 | let user = User::new((&packet).sender_name.to_owned(), (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), "".to_owned()); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.ip` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: doc comment not used by rustdoc [INFO] [stderr] --> src/demons.rs:103:25 [INFO] [stderr] | [INFO] [stderr] 103 | ///扩展段 用户名|用户组 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_doc_comments)] on by default [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:116:29 [INFO] [stderr] | [INFO] [stderr] 116 | (&packet).sender_name.to_owned() [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.sender_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:118:57 [INFO] [stderr] | [INFO] [stderr] 118 | let user = User::new(user_name, (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), group_name); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.sender_host` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:118:91 [INFO] [stderr] | [INFO] [stderr] 118 | let user = User::new(user_name, (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), group_name); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.ip` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:122:46 [INFO] [stderr] | [INFO] [stderr] 122 | let user = User::new((&packet).sender_name.to_owned(), (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), "".to_owned()); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.sender_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:122:80 [INFO] [stderr] | [INFO] [stderr] 122 | let user = User::new((&packet).sender_name.to_owned(), (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), "".to_owned()); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.sender_host` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:122:114 [INFO] [stderr] | [INFO] [stderr] 122 | let user = User::new((&packet).sender_name.to_owned(), (&packet).sender_host.to_owned(), (&packet).ip.to_owned(), "".to_owned()); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.ip` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/demons.rs:134:25 [INFO] [stderr] | [INFO] [stderr] 134 | / if opt&constant::IPMSG_FILEATTACHOPT != 0 { [INFO] [stderr] 135 | | if ext_vec.len() > 1 { [INFO] [stderr] 136 | | let files_str: &str = ext_vec[1]; [INFO] [stderr] 137 | | info!("i have file attachment {:?}", files_str); [INFO] [stderr] ... | [INFO] [stderr] 171 | | }; [INFO] [stderr] 172 | | } [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] 134 | if opt&constant::IPMSG_FILEATTACHOPT != 0 && ext_vec.len() > 1 { [INFO] [stderr] 135 | let files_str: &str = ext_vec[1]; [INFO] [stderr] 136 | info!("i have file attachment {:?}", files_str); [INFO] [stderr] 137 | let files = files_str.split(constant::FILELIST_SEPARATOR).into_iter().filter(|x: &&str| !x.is_empty()).collect::>(); [INFO] [stderr] 138 | let mut simple_file_infos = Vec::new(); [INFO] [stderr] 139 | for file_str in files { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:160:56 [INFO] [stderr] | [INFO] [stderr] 160 | packet_id: (&packet).packet_no.parse::().unwrap(), [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.packet_no` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/demons.rs:174:78 [INFO] [stderr] | [INFO] [stderr] 174 | let received_packet_inner = ReceivedPacketInner::new((&packet).ip.to_owned()).packet(packet_clone).option_opt_files(files_opt); [INFO] [stderr] | ^^^^^^^^^ help: try this: `packet.ip` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: unused import: `Mutex` [INFO] [stderr] --> src/message.rs:1:22 [INFO] [stderr] | [INFO] [stderr] 1 | use std::sync::{Arc, Mutex}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::UdpSocket` [INFO] [stderr] --> src/message.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::net::UdpSocket; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `DecoderTrap`, `EncoderTrap`, `Encoding` [INFO] [stderr] --> src/message.rs:5:16 [INFO] [stderr] | [INFO] [stderr] 5 | use encoding::{Encoding, EncoderTrap, DecoderTrap}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `encoding::all::GB18030` [INFO] [stderr] --> src/message.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use encoding::all::GB18030; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `GLOBAL_WINDOWS`, `GLOBAL`, `self` [INFO] [stderr] --> src/message.rs:10:11 [INFO] [stderr] | [INFO] [stderr] 10 | use app::{self, GLOBAL_UDPSOCKET, GLOBAL_SHARELIST, GLOBAL_WINDOWS, GLOBAL}; [INFO] [stderr] | ^^^^ ^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `DecoderTrap` [INFO] [stderr] --> src/util.rs:1:39 [INFO] [stderr] | [INFO] [stderr] 1 | use encoding::{Encoding, EncoderTrap, DecoderTrap}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/util.rs:6:17 [INFO] [stderr] | [INFO] [stderr] 6 | use std::time::{Duration, SystemTime}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AboutDialog`, `Alignment`, `ButtonBox`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `Label`, `MenuBar`, `MenuItem`, `Menu`, `Orientation`, `ReliefStyle`, `ScrolledWindow`, `StatusIcon`, `Widget`, `WindowPosition`, `WindowType` [INFO] [stderr] --> src/chat_window.rs:3:29 [INFO] [stderr] | [INFO] [stderr] 3 | self, CellRendererText, AboutDialog, CheckMenuItem, IconSize, Image, Label, Menu, MenuBar, MenuItem, Window, [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^ ^^^^ ^^^^^^^ ^^^^^^^^ [INFO] [stderr] 4 | WindowPosition, WindowType, StatusIcon, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation, [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^ ^^^^^^^^^^^ [INFO] [stderr] 5 | ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, Alignment, ButtonBox, [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Mutex` [INFO] [stderr] --> src/chat_window.rs:7:22 [INFO] [stderr] | [INFO] [stderr] 7 | use std::sync::{Arc, Mutex}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::mpsc` [INFO] [stderr] --> src/chat_window.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::sync::mpsc; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Path` [INFO] [stderr] --> src/chat_window.rs:11:26 [INFO] [stderr] | [INFO] [stderr] 11 | use std::path::{PathBuf, Path}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `File`, `ReadDir` [INFO] [stderr] --> src/chat_window.rs:12:21 [INFO] [stderr] | [INFO] [stderr] 12 | use std::fs::{self, File, Metadata, ReadDir}; [INFO] [stderr] | ^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Duration`, `SystemTime`, `UNIX_EPOCH` [INFO] [stderr] --> src/chat_window.rs:13:23 [INFO] [stderr] | [INFO] [stderr] 13 | use std::time::{self, Duration, SystemTime, UNIX_EPOCH}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ShareInfo` [INFO] [stderr] --> src/chat_window.rs:15:27 [INFO] [stderr] | [INFO] [stderr] 15 | use model::{self, Packet, ShareInfo, ReceivedSimpleFileInfo}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `msg_str` [INFO] [stderr] --> src/demons.rs:131:29 [INFO] [stderr] | [INFO] [stderr] 131 | let msg_str = if ext_vec.len() > 0 { ext_vec[0] } else { "" }; [INFO] [stderr] | ^^^^^^^ help: consider using `_msg_str` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `size` [INFO] [stderr] --> src/demons.rs:145:45 [INFO] [stderr] | [INFO] [stderr] 145 | let size = file_attr[2];//大小 [INFO] [stderr] | ^^^^ help: consider using `_size` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `offset` [INFO] [stderr] --> src/demons.rs:221:45 [INFO] [stderr] | [INFO] [stderr] 221 | let offset = file_attr[2].parse::().unwrap(); [INFO] [stderr] | ^^^^^^ help: consider using `_offset` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `search_result` is never read [INFO] [stderr] --> src/demons.rs:222:49 [INFO] [stderr] | [INFO] [stderr] 222 | let mut search_result: Option = Option::None; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `search_result` is never read [INFO] [stderr] --> src/demons.rs:251:49 [INFO] [stderr] | [INFO] [stderr] 251 | let mut search_result: Option = Option::None; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/chat_window.rs:255:5 [INFO] [stderr] | [INFO] [stderr] 255 | model [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/chat_window.rs:254:17 [INFO] [stderr] | [INFO] [stderr] 254 | let model = ListStore::new(&[String::static_type(), String::static_type()]); [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/chat_window.rs:260:5 [INFO] [stderr] | [INFO] [stderr] 260 | model [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] warning: unused variable: `start` [INFO] [stderr] --> src/demons.rs:343:34 [INFO] [stderr] | [INFO] [stderr] 343 | let (start, mut end) = chat_win.his_view.get_buffer().unwrap().get_bounds(); [INFO] [stderr] | ^^^^^ help: consider using `_start` instead [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/chat_window.rs:259:17 [INFO] [stderr] | [INFO] [stderr] 259 | let model = ListStore::new(&[String::static_type(), u32::static_type(), u32::static_type(), u8::static_type()]); [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] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/download.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ReadDir` [INFO] [stderr] warning: unused variable: `in_flag` [INFO] [stderr] --> src/demons.rs:407:33 [INFO] [stderr] | [INFO] [stderr] 407 | let mut in_flag = false; [INFO] [stderr] | ^^^^^^^ help: consider using `_in_flag` instead [INFO] [stderr] --> src/download.rs:8:37 [INFO] [stderr] | [INFO] [stderr] 8 | use std::fs::{self, File, Metadata, ReadDir}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: unused import: `EncoderTrap` [INFO] [stderr] --> src/download.rs:10:26 [INFO] [stderr] | [INFO] [stderr] 10 | use encoding::{Encoding, EncoderTrap, DecoderTrap}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/message.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for (i, file) in (&files).iter().enumerate() { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `his_start_iter` [INFO] [stderr] --> src/chat_window.rs:83:14 [INFO] [stderr] | [INFO] [stderr] 83 | let (his_start_iter, mut his_end_iter) = text_view_history_clone.get_buffer().unwrap().get_bounds(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_his_start_iter` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tree_path` [INFO] [stderr] --> src/chat_window.rs:90:63 [INFO] [stderr] | [INFO] [stderr] 90 | tree_view_received.connect_row_activated(move |tree_view, tree_path, tree_view_column| { [INFO] [stderr] | ^^^^^^^^^ help: consider using `_tree_path` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tree_view_column` [INFO] [stderr] --> src/chat_window.rs:90:74 [INFO] [stderr] | [INFO] [stderr] 90 | tree_view_received.connect_row_activated(move |tree_view, tree_path, tree_view_column| { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using `_tree_view_column` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `local_time` [INFO] [stderr] --> src/chat_window.rs:155:17 [INFO] [stderr] | [INFO] [stderr] 155 | let local_time = chrono_time.with_timezone(&::chrono::Local); [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_local_time` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `local_time` [INFO] [stderr] --> src/chat_window.rs:199:17 [INFO] [stderr] | [INFO] [stderr] 199 | let local_time = chrono_time.with_timezone(&::chrono::Local); [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_local_time` instead [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/download.rs:105:65 [INFO] [stderr] | [INFO] [stderr] 105 | let header_context_str = read_bytes(stream, (header_size - 1 - header_size_str.as_bytes().len() as u64));//-1是减去的那个冒号 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ip_str3` [INFO] [stderr] --> src/chat_window.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | let ip_str3 = host_ip.clone(); [INFO] [stderr] | ^^^^^^^ help: consider using `_ip_str3` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `received_store` [INFO] [stderr] --> src/chat_window.rs:264:25 [INFO] [stderr] | [INFO] [stderr] 264 | fn modify_received_list(received_store :Option, received_files: Arc>>) -> ::glib::Continue { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_received_store` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `received_files` [INFO] [stderr] --> src/chat_window.rs:264:60 [INFO] [stderr] | [INFO] [stderr] 264 | fn modify_received_list(received_store :Option, received_files: Arc>>) -> ::glib::Continue { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_received_files` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `metadata` [INFO] [stderr] --> src/download.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | let metadata: Metadata = fs::metadata(path)?; [INFO] [stderr] | ^^^^^^^^ help: consider using `_metadata` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `path_info` [INFO] [stderr] --> src/download.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | for path_info in path_infos { [INFO] [stderr] | ^^^^^^^^^ help: consider using `_path_info` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `name` [INFO] [stderr] --> src/app.rs:111:17 [INFO] [stderr] | [INFO] [stderr] 111 | let name = model.get_value(&iter, 0).get::().unwrap(); [INFO] [stderr] | ^^^^ help: consider using `_name` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tree_path` [INFO] [stderr] --> src/app.rs:107:49 [INFO] [stderr] | [INFO] [stderr] 107 | tree.connect_row_activated(move |tree_view, tree_path, tree_view_column| { [INFO] [stderr] | ^^^^^^^^^ help: consider using `_tree_path` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tree_view_column` [INFO] [stderr] --> src/app.rs:107:60 [INFO] [stderr] | [INFO] [stderr] 107 | tree.connect_row_activated(move |tree_view, tree_path, tree_view_column| { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using `_tree_view_column` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `window_quit` [INFO] [stderr] --> src/app.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | let window_quit = window.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: consider using `_window_quit` instead [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Alignment`, `Builder`, `Button`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `Orientation`, `ReliefStyle`, `StatusIcon`, `TextView`, `Widget`, `WindowPosition`, `WindowType` [INFO] [stderr] --> src/app.rs:3:42 [INFO] [stderr] | [INFO] [stderr] 3 | self, CellRendererText, AboutDialog, CheckMenuItem, IconSize, Image, Label, Menu, MenuBar, MenuItem, Window, [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ [INFO] [stderr] 4 | WindowPosition, WindowType, StatusIcon, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation, [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^ ^^^^ ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] 5 | ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, Alignment, [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `chrono::prelude::*` [INFO] [stderr] --> src/app.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use chrono::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `TcpListener`, `TcpStream` [INFO] [stderr] --> src/app.rs:9:16 [INFO] [stderr] | [INFO] [stderr] 9 | use std::net::{TcpListener, TcpStream}; [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/app.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `opt` [INFO] [stderr] --> src/download.rs:110:25 [INFO] [stderr] | [INFO] [stderr] 110 | let opt = constant::get_opt(file_attr); [INFO] [stderr] | ^^^ help: consider using `_opt` instead [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, `SocketAddrV4`, `SocketAddrV6`, `SocketAddr`, `ToSocketAddrs` [INFO] [stderr] --> src/app.rs:16:16 [INFO] [stderr] | [INFO] [stderr] 16 | use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6, Ipv4Addr, Ipv6Addr, ToSocketAddrs}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: unused imports: `FileInfo`, `Operate`, `ReceivedSimpleFileInfo`, `User`, `self` [INFO] [stderr] --> src/app.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | use model::{self, User, OperUser, Operate, ShareInfo, Packet, FileInfo, ReceivedSimpleFileInfo, ReceivedPacketInner}; [INFO] [stderr] | ^^^^ ^^^^ ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: doc comment not used by rustdoc [INFO] [stderr] --> src/app.rs:138:5 [INFO] [stderr] | [INFO] [stderr] 138 | ///待处理消息队列 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/app.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 193 | model [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/app.rs:186:17 [INFO] [stderr] | [INFO] [stderr] 186 | let model = ListStore::new(&[String::static_type(), String::static_type(), String::static_type(), String::static_type()]); [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: variable does not need to be mutable [INFO] [stderr] --> src/demons.rs:205:33 [INFO] [stderr] | [INFO] [stderr] 205 | let mut packet = Packet::from(String::from(v[0]), [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/chat_window.rs:78:26 [INFO] [stderr] | [INFO] [stderr] 78 | let (start_iter, mut end_iter) = text_view_presend_clone.get_buffer().unwrap().get_bounds(); [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/download.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | let mut base_file_location = path.to_path_buf(); [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/download.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | let mut buffer = BufReader::new(stream); [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/download.rs:77:13 [INFO] [stderr] | [INFO] [stderr] 77 | let mut path_infos = PathInfos{ [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/download.rs:140:19 [INFO] [stderr] | [INFO] [stderr] 140 | fn read_delimiter(mut stream : & mut BufReader) -> Result, DownLoadError> { [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/download.rs:155:15 [INFO] [stderr] | [INFO] [stderr] 155 | fn read_bytes(mut stream : & mut BufReader, len: u64) -> String { [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/download.rs:162:23 [INFO] [stderr] | [INFO] [stderr] 162 | fn read_bytes_to_file(mut stream : & mut BufReader, len: u64, file_path: &PathBuf) { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_NOOPERATION` [INFO] [stderr] --> src/constant.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | pub const IPMSG_NOOPERATION: u32 = 0x00000000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_BR_ABSENCE` [INFO] [stderr] --> src/constant.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | pub const IPMSG_BR_ABSENCE: u32 = 0x00000004; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_BR_ISGETLIST` [INFO] [stderr] --> src/constant.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | pub const IPMSG_BR_ISGETLIST: u32 = 0x00000010; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_OKGETLIST` [INFO] [stderr] --> src/constant.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | pub const IPMSG_OKGETLIST: u32 = 0x00000011; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_GETLIST` [INFO] [stderr] --> src/constant.rs:25:1 [INFO] [stderr] | [INFO] [stderr] 25 | pub const IPMSG_GETLIST: u32 = 0x00000012; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_ANSLIST` [INFO] [stderr] --> src/constant.rs:27:1 [INFO] [stderr] | [INFO] [stderr] 27 | pub const IPMSG_ANSLIST: u32 = 0x00000013; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_BR_ISGETLIST2` [INFO] [stderr] --> src/constant.rs:29:1 [INFO] [stderr] | [INFO] [stderr] 29 | pub const IPMSG_BR_ISGETLIST2: u32 = 0x00000018; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_READMSG` [INFO] [stderr] --> src/constant.rs:37:1 [INFO] [stderr] | [INFO] [stderr] 37 | pub const IPMSG_READMSG: u32 = 0x00000030; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_DELMSG` [INFO] [stderr] --> src/constant.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | pub const IPMSG_DELMSG: u32 = 0x00000031; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_ANSREADMSG` [INFO] [stderr] --> src/constant.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | pub const IPMSG_ANSREADMSG: u32 = 0x00000032; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_GETINFO` [INFO] [stderr] --> src/constant.rs:44:1 [INFO] [stderr] | [INFO] [stderr] 44 | pub const IPMSG_GETINFO: u32 = 0x00000040; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_SENDINFO` [INFO] [stderr] --> src/constant.rs:46:1 [INFO] [stderr] | [INFO] [stderr] 46 | pub const IPMSG_SENDINFO: u32 = 0x00000041; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_GETABSENCEINFO` [INFO] [stderr] --> src/constant.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | pub const IPMSG_GETABSENCEINFO: u32 = 0x00000050; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_SENDABSENCEINFO` [INFO] [stderr] --> src/constant.rs:51:1 [INFO] [stderr] | [INFO] [stderr] 51 | pub const IPMSG_SENDABSENCEINFO: u32 = 0x00000051; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_RELEASEFILES` [INFO] [stderr] --> src/constant.rs:56:1 [INFO] [stderr] | [INFO] [stderr] 56 | pub const IPMSG_RELEASEFILES: u32 = 0x00000061; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_GETPUBKEY` [INFO] [stderr] --> src/constant.rs:61:1 [INFO] [stderr] | [INFO] [stderr] 61 | pub const IPMSG_GETPUBKEY: u32 = 0x00000072; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_ANSPUBKEY` [INFO] [stderr] --> src/constant.rs:63:1 [INFO] [stderr] | [INFO] [stderr] 63 | pub const IPMSG_ANSPUBKEY: u32 = 0x00000073; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_SYMLINK` [INFO] [stderr] --> src/constant.rs:69:1 [INFO] [stderr] | [INFO] [stderr] 69 | pub const IPMSG_FILE_SYMLINK: u32 = 0x00000004; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_CDEV` [INFO] [stderr] --> src/constant.rs:70:1 [INFO] [stderr] | [INFO] [stderr] 70 | pub const IPMSG_FILE_CDEV: u32 = 0x00000005;// for UNIX [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_BDEV` [INFO] [stderr] --> src/constant.rs:71:1 [INFO] [stderr] | [INFO] [stderr] 71 | pub const IPMSG_FILE_BDEV: u32 = 0x00000006;// for UNIX [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_FIFO` [INFO] [stderr] --> src/constant.rs:72:1 [INFO] [stderr] | [INFO] [stderr] 72 | pub const IPMSG_FILE_FIFO: u32 = 0x00000007;// for UNIX [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_RESFORK` [INFO] [stderr] --> src/constant.rs:73:1 [INFO] [stderr] | [INFO] [stderr] 73 | pub const IPMSG_FILE_RESFORK: u32 = 0x00000010;// for mac [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_RONLYOPT` [INFO] [stderr] --> src/constant.rs:76:1 [INFO] [stderr] | [INFO] [stderr] 76 | pub const IPMSG_FILE_RONLYOPT: u32 = 0x00000100; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_HIDDENOPT` [INFO] [stderr] --> src/constant.rs:77:1 [INFO] [stderr] | [INFO] [stderr] 77 | pub const IPMSG_FILE_HIDDENOPT: u32 = 0x00001000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_EXHIDDENOPT` [INFO] [stderr] --> src/constant.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | pub const IPMSG_FILE_EXHIDDENOPT: u32 = 0x00002000;// for MacOS X [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_ARCHIVEOPT` [INFO] [stderr] --> src/constant.rs:79:1 [INFO] [stderr] | [INFO] [stderr] 79 | pub const IPMSG_FILE_ARCHIVEOPT: u32 = 0x00004000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_SYSTEMOPT` [INFO] [stderr] --> src/constant.rs:80:1 [INFO] [stderr] | [INFO] [stderr] 80 | pub const IPMSG_FILE_SYSTEMOPT: u32 = 0x00008000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `HOSTLIST_SEPARATOR` [INFO] [stderr] --> src/constant.rs:87:1 [INFO] [stderr] | [INFO] [stderr] 87 | pub const HOSTLIST_SEPARATOR: char = '\u{7}'; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_ABSENCEOPT` [INFO] [stderr] --> src/constant.rs:91:1 [INFO] [stderr] | [INFO] [stderr] 91 | pub const IPMSG_ABSENCEOPT: u32 = 0x00000100; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_SERVEROPT` [INFO] [stderr] --> src/constant.rs:93:1 [INFO] [stderr] | [INFO] [stderr] 93 | pub const IPMSG_SERVEROPT: u32 = 0x00000200; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_DIALUPOPT` [INFO] [stderr] --> src/constant.rs:95:1 [INFO] [stderr] | [INFO] [stderr] 95 | pub const IPMSG_DIALUPOPT: u32 = 0x00010000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_ENCRYPTOPT` [INFO] [stderr] --> src/constant.rs:99:1 [INFO] [stderr] | [INFO] [stderr] 99 | pub const IPMSG_ENCRYPTOPT: u32 = 0x00400000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_UTF8OPT` [INFO] [stderr] --> src/constant.rs:101:1 [INFO] [stderr] | [INFO] [stderr] 101 | pub const IPMSG_UTF8OPT: u32 = 0x00800000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_CAPUTF8OPT` [INFO] [stderr] --> src/constant.rs:103:1 [INFO] [stderr] | [INFO] [stderr] 103 | pub const IPMSG_CAPUTF8OPT: u32 = 0x01000000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_ENCEXTMSGOPT` [INFO] [stderr] --> src/constant.rs:105:1 [INFO] [stderr] | [INFO] [stderr] 105 | pub const IPMSG_ENCEXTMSGOPT: u32 = 0x04000000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_CLIPBOARDOPT` [INFO] [stderr] --> src/constant.rs:107:1 [INFO] [stderr] | [INFO] [stderr] 107 | pub const IPMSG_CLIPBOARDOPT: u32 = 0x08000000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_CAPFILEENC_OBSLT` [INFO] [stderr] --> src/constant.rs:108:1 [INFO] [stderr] | [INFO] [stderr] 108 | pub const IPMSG_CAPFILEENC_OBSLT: u32 = 0x00001000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_CAPFILEENCOPT` [INFO] [stderr] --> src/constant.rs:109:1 [INFO] [stderr] | [INFO] [stderr] 109 | pub const IPMSG_CAPFILEENCOPT: u32 = 0x00040000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_MULTICASTOPT` [INFO] [stderr] --> src/constant.rs:119:1 [INFO] [stderr] | [INFO] [stderr] 119 | pub const IPMSG_MULTICASTOPT: u32 = 0x00000800; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_AUTORETOPT` [INFO] [stderr] --> src/constant.rs:121:1 [INFO] [stderr] | [INFO] [stderr] 121 | pub const IPMSG_AUTORETOPT: u32 = 0x00002000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_RETRYOPT` [INFO] [stderr] --> src/constant.rs:123:1 [INFO] [stderr] | [INFO] [stderr] 123 | pub const IPMSG_RETRYOPT: u32 = 0x00004000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_PASSWORDOPT` [INFO] [stderr] --> src/constant.rs:125:1 [INFO] [stderr] | [INFO] [stderr] 125 | pub const IPMSG_PASSWORDOPT: u32 = 0x00008000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_NOLOGOPT` [INFO] [stderr] --> src/constant.rs:127:1 [INFO] [stderr] | [INFO] [stderr] 127 | pub const IPMSG_NOLOGOPT: u32 = 0x00020000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_NOADDLISTOPT` [INFO] [stderr] --> src/constant.rs:129:1 [INFO] [stderr] | [INFO] [stderr] 129 | pub const IPMSG_NOADDLISTOPT: u32 = 0x00080000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_READCHECKOPT` [INFO] [stderr] --> src/constant.rs:131:1 [INFO] [stderr] | [INFO] [stderr] 131 | pub const IPMSG_READCHECKOPT: u32 = 0x00100000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_SECRETEXOPT` [INFO] [stderr] --> src/constant.rs:132:1 [INFO] [stderr] | [INFO] [stderr] 132 | pub const IPMSG_SECRETEXOPT: u32 = IPMSG_READCHECKOPT|IPMSG_SECRETOPT; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `ExtStr` [INFO] [stderr] --> src/model.rs:26:1 [INFO] [stderr] | [INFO] [stderr] 26 | type ExtStr = String; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `command` [INFO] [stderr] --> src/model.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | fn command(command_no: u32) -> PacketBuilder { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `command_opt` [INFO] [stderr] --> src/model.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | fn command_opt(mut self, ext_command_no: u32) -> PacketBuilder { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `modify_received_list` [INFO] [stderr] --> src/chat_window.rs:264:1 [INFO] [stderr] | [INFO] [stderr] 264 | fn modify_received_list(received_store :Option, received_files: Arc>>) -> ::glib::Continue { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `InValidType` [INFO] [stderr] --> src/download.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | InValidType, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:61:33 [INFO] [stderr] | [INFO] [stderr] 61 | sender.send(packet); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/demons.rs:81:27 [INFO] [stderr] | [INFO] [stderr] 81 | thread::spawn(move || { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 82 | | loop { [INFO] [stderr] 83 | | let packet: Packet = receiver.recv().unwrap(); [INFO] [stderr] 84 | | let mut extstr = String::new(); [INFO] [stderr] ... | [INFO] [stderr] 180 | | } [INFO] [stderr] 181 | | }); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:100:25 [INFO] [stderr] | [INFO] [stderr] 100 | sender.send(OperUser::new(user, Operate::REMOVE)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:119:25 [INFO] [stderr] | [INFO] [stderr] 119 | sender.send(OperUser::new(user, Operate::ADD)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/demons.rs:120:42 [INFO] [stderr] | [INFO] [stderr] 120 | ::glib::idle_add(move || receive()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `receive` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:123:25 [INFO] [stderr] | [INFO] [stderr] 123 | sender.send(OperUser::new(user, Operate::ADD)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/demons.rs:131:42 [INFO] [stderr] | [INFO] [stderr] 131 | let msg_str = if ext_vec.len() > 0 { ext_vec[0] } else { "" }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ext_vec.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: identical conversion [INFO] [stderr] --> src/demons.rs:138:45 [INFO] [stderr] | [INFO] [stderr] 138 | let files = files_str.split(constant::FILELIST_SEPARATOR).into_iter().filter(|x: &&str| !x.is_empty()).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `files_str.split(constant::FILELIST_SEPARATOR)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/demons.rs:141:53 [INFO] [stderr] | [INFO] [stderr] 141 | let file_attr = file_str.splitn(6, |c| c == ':').into_iter().filter(|x: &&str| !x.is_empty()).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `file_str.splitn(6, |c| c == ':')` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/demons.rs:168:36 [INFO] [stderr] | [INFO] [stderr] 168 | if simple_file_infos.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!simple_file_infos.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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:175:25 [INFO] [stderr] | [INFO] [stderr] 175 | remained_sender.send(received_packet_inner); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/demons.rs:199:25 [INFO] [stderr] | [INFO] [stderr] 199 | stream_echo.read(&mut buf[..]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/demons.rs:216:53 [INFO] [stderr] | [INFO] [stderr] 216 | let file_attr = v[5].splitn(4, |c| c == ':').into_iter().filter(|x: &&str| !x.is_empty()).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `v[5].splitn(4, |c| c == ':')` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/demons.rs:225:49 [INFO] [stderr] | [INFO] [stderr] 225 | let ref vec: Vec = *search; [INFO] [stderr] | ----^^^^^^^--------------------------- help: try: `let vec: &Vec = &(*search);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/demons.rs:237:53 [INFO] [stderr] | [INFO] [stderr] 237 | buffer.write(&buf[..bytes_read]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/demons.rs:246:53 [INFO] [stderr] | [INFO] [stderr] 246 | let file_attr = v[5].splitn(3, |c| c == ':').into_iter().filter(|x: &&str| !x.is_empty()).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `v[5].splitn(3, |c| c == ':')` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/demons.rs:254:49 [INFO] [stderr] | [INFO] [stderr] 254 | let ref vec: Vec = *search; [INFO] [stderr] | ----^^^^^^^--------------------------- help: try: `let vec: &Vec = &(*search);` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/demons.rs:261:53 [INFO] [stderr] | [INFO] [stderr] 261 | let ref root_path: PathBuf = file_info.file_name; [INFO] [stderr] | ----^^^^^^^^^^^^^-------------------------------- help: try: `let root_path: &PathBuf = &file_info.file_name;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:281:5 [INFO] [stderr] | [INFO] [stderr] 281 | buffer.write(util::utf8_to_gb18030(&make_header(&root_path)).as_slice());//root dir [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:288:17 [INFO] [stderr] | [INFO] [stderr] 288 | buffer.write(util::utf8_to_gb18030(&header).as_slice()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:294:21 [INFO] [stderr] | [INFO] [stderr] 294 | buffer.write(&buf[..bytes_read]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:302:5 [INFO] [stderr] | [INFO] [stderr] 302 | buffer.write("000D:.:0:3:0:".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/demons.rs:302:18 [INFO] [stderr] | [INFO] [stderr] 302 | buffer.write("000D:.:0:3:0:".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"000D:.:0:3:0:"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: variable `receivedPacketInner` should have a snake case name such as `received_packet_inner` [INFO] [stderr] --> src/demons.rs:332:23 [INFO] [stderr] | [INFO] [stderr] 332 | if let Ok(receivedPacketInner) = rx.try_recv() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/demons.rs:334:90 [INFO] [stderr] | [INFO] [stderr] 334 | let name = receivedPacketInner.clone().packet.map(|pac| pac.sender_name).unwrap_or("".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_owned())` [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: identical conversion [INFO] [stderr] --> src/demons.rs:342:37 [INFO] [stderr] | [INFO] [stderr] 342 | let v = additional_section.split('\0').into_iter().collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `additional_section.split('\0')` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/demons.rs:360:53 [INFO] [stderr] | [INFO] [stderr] 360 | num = num + 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `num += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/demons.rs:416:37 [INFO] [stderr] | [INFO] [stderr] 416 | num = num + 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `num += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/demons.rs:453:33 [INFO] [stderr] | [INFO] [stderr] 453 | num = num + 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `num += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/demons.rs:478:33 [INFO] [stderr] | [INFO] [stderr] 478 | num = num + 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `num += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/message.rs:34:30 [INFO] [stderr] | [INFO] [stderr] 34 | let commond = if (&files).len() > 0 { IPMSG_SENDMSG|IPMSG_FILEATTACHOPT } else { IPMSG_SENDMSG };//如果有文件,需要扩展文件 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!(&files).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/message.rs:36:33 [INFO] [stderr] | [INFO] [stderr] 36 | let share_info = if (&files).len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!(&files).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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/util.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn utf8_to_gb18030<'a>(ori_str :&'a str) -> Vec { [INFO] [stderr] 10 | | GB18030.encode(&ori_str, EncoderTrap::Strict).unwrap() [INFO] [stderr] 11 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/chat_window.rs:58:28 [INFO] [stderr] | [INFO] [stderr] 58 | let v: Vec<&str> = additional_section.split('\0').into_iter().collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `additional_section.split('\0')` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/chat_window.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | &text_view_history.get_buffer().unwrap().set_text(format!("{}:{}\n", name, v[0]).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `text_view_history.get_buffer().unwrap().set_text(format!("{}:{}\n", name, v[0]).as_str());` [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: statement can be reduced [INFO] [stderr] --> src/chat_window.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | &text_view_history_clone.get_buffer().unwrap().insert(&mut his_end_iter, format!("{}:{}\n", "我", context).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `text_view_history_clone.get_buffer().unwrap().insert(&mut his_end_iter, format!("{}:{}\n", "我", context).as_str());` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/chat_window.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | &text_view_presend_clone.get_buffer().unwrap().set_text(""); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `text_view_presend_clone.get_buffer().unwrap().set_text("");` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/chat_window.rs:108:26 [INFO] [stderr] | [INFO] [stderr] 108 | let p1 = pid.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `pid` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/chat_window.rs:109:26 [INFO] [stderr] | [INFO] [stderr] 109 | let f1 = fid.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `fid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/chat_window.rs:110:26 [INFO] [stderr] | [INFO] [stderr] 110 | let p2 = pid.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `pid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/chat_window.rs:111:26 [INFO] [stderr] | [INFO] [stderr] 111 | let f2 = fid.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `fid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/chat_window.rs:114:28 [INFO] [stderr] | [INFO] [stderr] 114 | if let Ok(_) = ::download::download(target_ip, base_filename_clone, p1, f1, name, file_type as u32) { [INFO] [stderr] | _____________________- ^^^^^ [INFO] [stderr] 115 | | //::成功删除 [INFO] [stderr] 116 | | ::glib::idle_add(move || ::demons::remove_downloaded_file(&in_ip, p2, f2)); [INFO] [stderr] 117 | | }else { [INFO] [stderr] 118 | | error!("download error!!"); [INFO] [stderr] 119 | | } [INFO] [stderr] | |_____________________- help: try this: `if ::download::download(target_ip, base_filename_clone, p1, f1, name, file_type as u32).is_ok()` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/chat_window.rs:114:103 [INFO] [stderr] | [INFO] [stderr] 114 | if let Ok(_) = ::download::download(target_ip, base_filename_clone, p1, f1, name, file_type as u32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(file_type)` [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: statement can be reduced [INFO] [stderr] --> src/chat_window.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | &text_view_presend_clone.get_buffer().unwrap().set_text(""); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `text_view_presend_clone.get_buffer().unwrap().set_text("");` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/chat_window.rs:168:17 [INFO] [stderr] | [INFO] [stderr] 168 | let ref mut files_add = *pre_send_files_open_file.borrow_mut(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^------------------------------------------ help: try: `let files_add = &mut (*pre_send_files_open_file.borrow_mut());` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/chat_window.rs:212:17 [INFO] [stderr] | [INFO] [stderr] 212 | let ref mut files_add = *pre_send_files_open_dir.borrow_mut(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^----------------------------------------- help: try: `let files_add = &mut (*pre_send_files_open_dir.borrow_mut());` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/download.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | stream.write(packet.to_string().as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/download.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | file.write(&buffer[0..num])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/download.rs:98:13 [INFO] [stderr] | [INFO] [stderr] 98 | let ref mut stream = self.inner; [INFO] [stderr] | ----^^^^^^^^^^^^^^-------------- help: try: `let stream = &mut self.inner;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/download.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | let ref mut next_path = self.next_path.clone(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^-------------------------- help: try: `let next_path = &mut self.next_path.clone();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/download.rs:116:29 [INFO] [stderr] | [INFO] [stderr] 116 | fs::create_dir(&next_path); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/download.rs:158:5 [INFO] [stderr] | [INFO] [stderr] 158 | handler.read_to_end(&mut s_buffer); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/download.rs:170:9 [INFO] [stderr] | [INFO] [stderr] 170 | f.write(&buf[..bytes_read]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/app.rs:23:32 [INFO] [stderr] | [INFO] [stderr] 23 | pub static GLOBAL_WINDOWS: RefCell, mpsc::Receiver)>> = RefCell::new(None);//聊天窗口列表 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a value that implements Copy. Dropping a copy leaves the original intact. [INFO] [stderr] --> src/app.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | drop(::env_logger::init().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::drop_copy)] on by default [INFO] [stderr] note: argument has type () [INFO] [stderr] --> src/app.rs:29:10 [INFO] [stderr] | [INFO] [stderr] 29 | drop(::env_logger::init().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_copy [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/app.rs:29:10 [INFO] [stderr] | [INFO] [stderr] 29 | drop(::env_logger::init().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 29 | drop(()); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/app.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | &label.set_text(&format!("-- {} --", model.get_value(&iter, 0).get::().unwrap())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `label.set_text(&format!("-- {} --", model.get_value(&iter, 0).get::().unwrap()));` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/app.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | remained_sender1.send(ReceivedPacketInner::new(ip_str)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `raudient`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unused import: `gtk::prelude` [INFO] [stderr] --> src/demons.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | use gtk::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `msg_str` [INFO] [stderr] --> src/demons.rs:131:29 [INFO] [stderr] | [INFO] [stderr] 131 | let msg_str = if ext_vec.len() > 0 { ext_vec[0] } else { "" }; [INFO] [stderr] | ^^^^^^^ help: consider using `_msg_str` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `size` [INFO] [stderr] --> src/demons.rs:145:45 [INFO] [stderr] | [INFO] [stderr] 145 | let size = file_attr[2];//大小 [INFO] [stderr] | ^^^^ help: consider using `_size` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `offset` [INFO] [stderr] --> src/demons.rs:221:45 [INFO] [stderr] | [INFO] [stderr] 221 | let offset = file_attr[2].parse::().unwrap(); [INFO] [stderr] | ^^^^^^ help: consider using `_offset` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `search_result` is never read [INFO] [stderr] --> src/demons.rs:222:49 [INFO] [stderr] | [INFO] [stderr] 222 | let mut search_result: Option = Option::None; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `search_result` is never read [INFO] [stderr] --> src/demons.rs:251:49 [INFO] [stderr] | [INFO] [stderr] 251 | let mut search_result: Option = Option::None; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `start` [INFO] [stderr] --> src/demons.rs:343:34 [INFO] [stderr] | [INFO] [stderr] 343 | let (start, mut end) = chat_win.his_view.get_buffer().unwrap().get_bounds(); [INFO] [stderr] | ^^^^^ help: consider using `_start` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `in_flag` [INFO] [stderr] --> src/demons.rs:407:33 [INFO] [stderr] | [INFO] [stderr] 407 | let mut in_flag = false; [INFO] [stderr] | ^^^^^^^ help: consider using `_in_flag` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/message.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for (i, file) in (&files).iter().enumerate() { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `his_start_iter` [INFO] [stderr] --> src/chat_window.rs:83:14 [INFO] [stderr] | [INFO] [stderr] 83 | let (his_start_iter, mut his_end_iter) = text_view_history_clone.get_buffer().unwrap().get_bounds(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_his_start_iter` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tree_path` [INFO] [stderr] --> src/chat_window.rs:90:63 [INFO] [stderr] | [INFO] [stderr] 90 | tree_view_received.connect_row_activated(move |tree_view, tree_path, tree_view_column| { [INFO] [stderr] | ^^^^^^^^^ help: consider using `_tree_path` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tree_view_column` [INFO] [stderr] --> src/chat_window.rs:90:74 [INFO] [stderr] | [INFO] [stderr] 90 | tree_view_received.connect_row_activated(move |tree_view, tree_path, tree_view_column| { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using `_tree_view_column` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `local_time` [INFO] [stderr] --> src/chat_window.rs:155:17 [INFO] [stderr] | [INFO] [stderr] 155 | let local_time = chrono_time.with_timezone(&::chrono::Local); [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_local_time` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `local_time` [INFO] [stderr] --> src/chat_window.rs:199:17 [INFO] [stderr] | [INFO] [stderr] 199 | let local_time = chrono_time.with_timezone(&::chrono::Local); [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_local_time` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ip_str3` [INFO] [stderr] --> src/chat_window.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | let ip_str3 = host_ip.clone(); [INFO] [stderr] | ^^^^^^^ help: consider using `_ip_str3` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `received_store` [INFO] [stderr] --> src/chat_window.rs:264:25 [INFO] [stderr] | [INFO] [stderr] 264 | fn modify_received_list(received_store :Option, received_files: Arc>>) -> ::glib::Continue { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_received_store` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `received_files` [INFO] [stderr] --> src/chat_window.rs:264:60 [INFO] [stderr] | [INFO] [stderr] 264 | fn modify_received_list(received_store :Option, received_files: Arc>>) -> ::glib::Continue { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_received_files` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `metadata` [INFO] [stderr] --> src/download.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | let metadata: Metadata = fs::metadata(path)?; [INFO] [stderr] | ^^^^^^^^ help: consider using `_metadata` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `path_info` [INFO] [stderr] --> src/download.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | for path_info in path_infos { [INFO] [stderr] | ^^^^^^^^^ help: consider using `_path_info` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `name` [INFO] [stderr] --> src/app.rs:111:17 [INFO] [stderr] | [INFO] [stderr] 111 | let name = model.get_value(&iter, 0).get::().unwrap(); [INFO] [stderr] | ^^^^ help: consider using `_name` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tree_path` [INFO] [stderr] --> src/app.rs:107:49 [INFO] [stderr] | [INFO] [stderr] 107 | tree.connect_row_activated(move |tree_view, tree_path, tree_view_column| { [INFO] [stderr] | ^^^^^^^^^ help: consider using `_tree_path` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tree_view_column` [INFO] [stderr] --> src/app.rs:107:60 [INFO] [stderr] | [INFO] [stderr] 107 | tree.connect_row_activated(move |tree_view, tree_path, tree_view_column| { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using `_tree_view_column` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `window_quit` [INFO] [stderr] --> src/app.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | let window_quit = window.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: consider using `_window_quit` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `opt` [INFO] [stderr] --> src/download.rs:110:25 [INFO] [stderr] | [INFO] [stderr] 110 | let opt = constant::get_opt(file_attr); [INFO] [stderr] | ^^^ help: consider using `_opt` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/demons.rs:205:33 [INFO] [stderr] | [INFO] [stderr] 205 | let mut packet = Packet::from(String::from(v[0]), [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/chat_window.rs:78:26 [INFO] [stderr] | [INFO] [stderr] 78 | let (start_iter, mut end_iter) = text_view_presend_clone.get_buffer().unwrap().get_bounds(); [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/download.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | let mut base_file_location = path.to_path_buf(); [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/download.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | let mut buffer = BufReader::new(stream); [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/download.rs:77:13 [INFO] [stderr] | [INFO] [stderr] 77 | let mut path_infos = PathInfos{ [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/download.rs:140:19 [INFO] [stderr] | [INFO] [stderr] 140 | fn read_delimiter(mut stream : & mut BufReader) -> Result, DownLoadError> { [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/download.rs:155:15 [INFO] [stderr] | [INFO] [stderr] 155 | fn read_bytes(mut stream : & mut BufReader, len: u64) -> String { [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/download.rs:162:23 [INFO] [stderr] | [INFO] [stderr] 162 | fn read_bytes_to_file(mut stream : & mut BufReader, len: u64, file_path: &PathBuf) { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_NOOPERATION` [INFO] [stderr] --> src/constant.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | pub const IPMSG_NOOPERATION: u32 = 0x00000000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_BR_ABSENCE` [INFO] [stderr] --> src/constant.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | pub const IPMSG_BR_ABSENCE: u32 = 0x00000004; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_BR_ISGETLIST` [INFO] [stderr] --> src/constant.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | pub const IPMSG_BR_ISGETLIST: u32 = 0x00000010; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_OKGETLIST` [INFO] [stderr] --> src/constant.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | pub const IPMSG_OKGETLIST: u32 = 0x00000011; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_GETLIST` [INFO] [stderr] --> src/constant.rs:25:1 [INFO] [stderr] | [INFO] [stderr] 25 | pub const IPMSG_GETLIST: u32 = 0x00000012; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_ANSLIST` [INFO] [stderr] --> src/constant.rs:27:1 [INFO] [stderr] | [INFO] [stderr] 27 | pub const IPMSG_ANSLIST: u32 = 0x00000013; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_BR_ISGETLIST2` [INFO] [stderr] --> src/constant.rs:29:1 [INFO] [stderr] | [INFO] [stderr] 29 | pub const IPMSG_BR_ISGETLIST2: u32 = 0x00000018; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_READMSG` [INFO] [stderr] --> src/constant.rs:37:1 [INFO] [stderr] | [INFO] [stderr] 37 | pub const IPMSG_READMSG: u32 = 0x00000030; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_DELMSG` [INFO] [stderr] --> src/constant.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | pub const IPMSG_DELMSG: u32 = 0x00000031; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_ANSREADMSG` [INFO] [stderr] --> src/constant.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | pub const IPMSG_ANSREADMSG: u32 = 0x00000032; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_GETINFO` [INFO] [stderr] --> src/constant.rs:44:1 [INFO] [stderr] | [INFO] [stderr] 44 | pub const IPMSG_GETINFO: u32 = 0x00000040; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_SENDINFO` [INFO] [stderr] --> src/constant.rs:46:1 [INFO] [stderr] | [INFO] [stderr] 46 | pub const IPMSG_SENDINFO: u32 = 0x00000041; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_GETABSENCEINFO` [INFO] [stderr] --> src/constant.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | pub const IPMSG_GETABSENCEINFO: u32 = 0x00000050; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_SENDABSENCEINFO` [INFO] [stderr] --> src/constant.rs:51:1 [INFO] [stderr] | [INFO] [stderr] 51 | pub const IPMSG_SENDABSENCEINFO: u32 = 0x00000051; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_RELEASEFILES` [INFO] [stderr] --> src/constant.rs:56:1 [INFO] [stderr] | [INFO] [stderr] 56 | pub const IPMSG_RELEASEFILES: u32 = 0x00000061; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_GETPUBKEY` [INFO] [stderr] --> src/constant.rs:61:1 [INFO] [stderr] | [INFO] [stderr] 61 | pub const IPMSG_GETPUBKEY: u32 = 0x00000072; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_ANSPUBKEY` [INFO] [stderr] --> src/constant.rs:63:1 [INFO] [stderr] | [INFO] [stderr] 63 | pub const IPMSG_ANSPUBKEY: u32 = 0x00000073; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_SYMLINK` [INFO] [stderr] --> src/constant.rs:69:1 [INFO] [stderr] | [INFO] [stderr] 69 | pub const IPMSG_FILE_SYMLINK: u32 = 0x00000004; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_CDEV` [INFO] [stderr] --> src/constant.rs:70:1 [INFO] [stderr] | [INFO] [stderr] 70 | pub const IPMSG_FILE_CDEV: u32 = 0x00000005;// for UNIX [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_BDEV` [INFO] [stderr] --> src/constant.rs:71:1 [INFO] [stderr] | [INFO] [stderr] 71 | pub const IPMSG_FILE_BDEV: u32 = 0x00000006;// for UNIX [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_FIFO` [INFO] [stderr] --> src/constant.rs:72:1 [INFO] [stderr] | [INFO] [stderr] 72 | pub const IPMSG_FILE_FIFO: u32 = 0x00000007;// for UNIX [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_RESFORK` [INFO] [stderr] --> src/constant.rs:73:1 [INFO] [stderr] | [INFO] [stderr] 73 | pub const IPMSG_FILE_RESFORK: u32 = 0x00000010;// for mac [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_RONLYOPT` [INFO] [stderr] --> src/constant.rs:76:1 [INFO] [stderr] | [INFO] [stderr] 76 | pub const IPMSG_FILE_RONLYOPT: u32 = 0x00000100; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_HIDDENOPT` [INFO] [stderr] --> src/constant.rs:77:1 [INFO] [stderr] | [INFO] [stderr] 77 | pub const IPMSG_FILE_HIDDENOPT: u32 = 0x00001000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_EXHIDDENOPT` [INFO] [stderr] --> src/constant.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | pub const IPMSG_FILE_EXHIDDENOPT: u32 = 0x00002000;// for MacOS X [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_ARCHIVEOPT` [INFO] [stderr] --> src/constant.rs:79:1 [INFO] [stderr] | [INFO] [stderr] 79 | pub const IPMSG_FILE_ARCHIVEOPT: u32 = 0x00004000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_FILE_SYSTEMOPT` [INFO] [stderr] --> src/constant.rs:80:1 [INFO] [stderr] | [INFO] [stderr] 80 | pub const IPMSG_FILE_SYSTEMOPT: u32 = 0x00008000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `HOSTLIST_SEPARATOR` [INFO] [stderr] --> src/constant.rs:87:1 [INFO] [stderr] | [INFO] [stderr] 87 | pub const HOSTLIST_SEPARATOR: char = '\u{7}'; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_ABSENCEOPT` [INFO] [stderr] --> src/constant.rs:91:1 [INFO] [stderr] | [INFO] [stderr] 91 | pub const IPMSG_ABSENCEOPT: u32 = 0x00000100; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_SERVEROPT` [INFO] [stderr] --> src/constant.rs:93:1 [INFO] [stderr] | [INFO] [stderr] 93 | pub const IPMSG_SERVEROPT: u32 = 0x00000200; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_DIALUPOPT` [INFO] [stderr] --> src/constant.rs:95:1 [INFO] [stderr] | [INFO] [stderr] 95 | pub const IPMSG_DIALUPOPT: u32 = 0x00010000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_ENCRYPTOPT` [INFO] [stderr] --> src/constant.rs:99:1 [INFO] [stderr] | [INFO] [stderr] 99 | pub const IPMSG_ENCRYPTOPT: u32 = 0x00400000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_UTF8OPT` [INFO] [stderr] --> src/constant.rs:101:1 [INFO] [stderr] | [INFO] [stderr] 101 | pub const IPMSG_UTF8OPT: u32 = 0x00800000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_CAPUTF8OPT` [INFO] [stderr] --> src/constant.rs:103:1 [INFO] [stderr] | [INFO] [stderr] 103 | pub const IPMSG_CAPUTF8OPT: u32 = 0x01000000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_ENCEXTMSGOPT` [INFO] [stderr] --> src/constant.rs:105:1 [INFO] [stderr] | [INFO] [stderr] 105 | pub const IPMSG_ENCEXTMSGOPT: u32 = 0x04000000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_CLIPBOARDOPT` [INFO] [stderr] --> src/constant.rs:107:1 [INFO] [stderr] | [INFO] [stderr] 107 | pub const IPMSG_CLIPBOARDOPT: u32 = 0x08000000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_CAPFILEENC_OBSLT` [INFO] [stderr] --> src/constant.rs:108:1 [INFO] [stderr] | [INFO] [stderr] 108 | pub const IPMSG_CAPFILEENC_OBSLT: u32 = 0x00001000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_CAPFILEENCOPT` [INFO] [stderr] --> src/constant.rs:109:1 [INFO] [stderr] | [INFO] [stderr] 109 | pub const IPMSG_CAPFILEENCOPT: u32 = 0x00040000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_MULTICASTOPT` [INFO] [stderr] --> src/constant.rs:119:1 [INFO] [stderr] | [INFO] [stderr] 119 | pub const IPMSG_MULTICASTOPT: u32 = 0x00000800; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_AUTORETOPT` [INFO] [stderr] --> src/constant.rs:121:1 [INFO] [stderr] | [INFO] [stderr] 121 | pub const IPMSG_AUTORETOPT: u32 = 0x00002000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_RETRYOPT` [INFO] [stderr] --> src/constant.rs:123:1 [INFO] [stderr] | [INFO] [stderr] 123 | pub const IPMSG_RETRYOPT: u32 = 0x00004000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_PASSWORDOPT` [INFO] [stderr] --> src/constant.rs:125:1 [INFO] [stderr] | [INFO] [stderr] 125 | pub const IPMSG_PASSWORDOPT: u32 = 0x00008000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_NOLOGOPT` [INFO] [stderr] --> src/constant.rs:127:1 [INFO] [stderr] | [INFO] [stderr] 127 | pub const IPMSG_NOLOGOPT: u32 = 0x00020000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_NOADDLISTOPT` [INFO] [stderr] --> src/constant.rs:129:1 [INFO] [stderr] | [INFO] [stderr] 129 | pub const IPMSG_NOADDLISTOPT: u32 = 0x00080000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_READCHECKOPT` [INFO] [stderr] --> src/constant.rs:131:1 [INFO] [stderr] | [INFO] [stderr] 131 | pub const IPMSG_READCHECKOPT: u32 = 0x00100000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `IPMSG_SECRETEXOPT` [INFO] [stderr] --> src/constant.rs:132:1 [INFO] [stderr] | [INFO] [stderr] 132 | pub const IPMSG_SECRETEXOPT: u32 = IPMSG_READCHECKOPT|IPMSG_SECRETOPT; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `ExtStr` [INFO] [stderr] --> src/model.rs:26:1 [INFO] [stderr] | [INFO] [stderr] 26 | type ExtStr = String; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `command` [INFO] [stderr] --> src/model.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | fn command(command_no: u32) -> PacketBuilder { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `command_opt` [INFO] [stderr] --> src/model.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | fn command_opt(mut self, ext_command_no: u32) -> PacketBuilder { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `modify_received_list` [INFO] [stderr] --> src/chat_window.rs:264:1 [INFO] [stderr] | [INFO] [stderr] 264 | fn modify_received_list(received_store :Option, received_files: Arc>>) -> ::glib::Continue { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `InValidType` [INFO] [stderr] --> src/download.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | InValidType, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:61:33 [INFO] [stderr] | [INFO] [stderr] 61 | sender.send(packet); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/demons.rs:81:27 [INFO] [stderr] | [INFO] [stderr] 81 | thread::spawn(move || { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 82 | | loop { [INFO] [stderr] 83 | | let packet: Packet = receiver.recv().unwrap(); [INFO] [stderr] 84 | | let mut extstr = String::new(); [INFO] [stderr] ... | [INFO] [stderr] 180 | | } [INFO] [stderr] 181 | | }); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:100:25 [INFO] [stderr] | [INFO] [stderr] 100 | sender.send(OperUser::new(user, Operate::REMOVE)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:119:25 [INFO] [stderr] | [INFO] [stderr] 119 | sender.send(OperUser::new(user, Operate::ADD)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/demons.rs:120:42 [INFO] [stderr] | [INFO] [stderr] 120 | ::glib::idle_add(move || receive()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `receive` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:123:25 [INFO] [stderr] | [INFO] [stderr] 123 | sender.send(OperUser::new(user, Operate::ADD)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/demons.rs:131:42 [INFO] [stderr] | [INFO] [stderr] 131 | let msg_str = if ext_vec.len() > 0 { ext_vec[0] } else { "" }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ext_vec.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: identical conversion [INFO] [stderr] --> src/demons.rs:138:45 [INFO] [stderr] | [INFO] [stderr] 138 | let files = files_str.split(constant::FILELIST_SEPARATOR).into_iter().filter(|x: &&str| !x.is_empty()).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `files_str.split(constant::FILELIST_SEPARATOR)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/demons.rs:141:53 [INFO] [stderr] | [INFO] [stderr] 141 | let file_attr = file_str.splitn(6, |c| c == ':').into_iter().filter(|x: &&str| !x.is_empty()).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `file_str.splitn(6, |c| c == ':')` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/demons.rs:168:36 [INFO] [stderr] | [INFO] [stderr] 168 | if simple_file_infos.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!simple_file_infos.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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:175:25 [INFO] [stderr] | [INFO] [stderr] 175 | remained_sender.send(received_packet_inner); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/demons.rs:199:25 [INFO] [stderr] | [INFO] [stderr] 199 | stream_echo.read(&mut buf[..]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/demons.rs:216:53 [INFO] [stderr] | [INFO] [stderr] 216 | let file_attr = v[5].splitn(4, |c| c == ':').into_iter().filter(|x: &&str| !x.is_empty()).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `v[5].splitn(4, |c| c == ':')` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/demons.rs:225:49 [INFO] [stderr] | [INFO] [stderr] 225 | let ref vec: Vec = *search; [INFO] [stderr] | ----^^^^^^^--------------------------- help: try: `let vec: &Vec = &(*search);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/demons.rs:237:53 [INFO] [stderr] | [INFO] [stderr] 237 | buffer.write(&buf[..bytes_read]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/demons.rs:246:53 [INFO] [stderr] | [INFO] [stderr] 246 | let file_attr = v[5].splitn(3, |c| c == ':').into_iter().filter(|x: &&str| !x.is_empty()).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `v[5].splitn(3, |c| c == ':')` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/demons.rs:254:49 [INFO] [stderr] | [INFO] [stderr] 254 | let ref vec: Vec = *search; [INFO] [stderr] | ----^^^^^^^--------------------------- help: try: `let vec: &Vec = &(*search);` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/demons.rs:261:53 [INFO] [stderr] | [INFO] [stderr] 261 | let ref root_path: PathBuf = file_info.file_name; [INFO] [stderr] | ----^^^^^^^^^^^^^-------------------------------- help: try: `let root_path: &PathBuf = &file_info.file_name;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:281:5 [INFO] [stderr] | [INFO] [stderr] 281 | buffer.write(util::utf8_to_gb18030(&make_header(&root_path)).as_slice());//root dir [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:288:17 [INFO] [stderr] | [INFO] [stderr] 288 | buffer.write(util::utf8_to_gb18030(&header).as_slice()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:294:21 [INFO] [stderr] | [INFO] [stderr] 294 | buffer.write(&buf[..bytes_read]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/demons.rs:302:5 [INFO] [stderr] | [INFO] [stderr] 302 | buffer.write("000D:.:0:3:0:".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/demons.rs:302:18 [INFO] [stderr] | [INFO] [stderr] 302 | buffer.write("000D:.:0:3:0:".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"000D:.:0:3:0:"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: variable `receivedPacketInner` should have a snake case name such as `received_packet_inner` [INFO] [stderr] --> src/demons.rs:332:23 [INFO] [stderr] | [INFO] [stderr] 332 | if let Ok(receivedPacketInner) = rx.try_recv() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/demons.rs:334:90 [INFO] [stderr] | [INFO] [stderr] 334 | let name = receivedPacketInner.clone().packet.map(|pac| pac.sender_name).unwrap_or("".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_owned())` [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: identical conversion [INFO] [stderr] --> src/demons.rs:342:37 [INFO] [stderr] | [INFO] [stderr] 342 | let v = additional_section.split('\0').into_iter().collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `additional_section.split('\0')` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/demons.rs:360:53 [INFO] [stderr] | [INFO] [stderr] 360 | num = num + 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `num += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/demons.rs:416:37 [INFO] [stderr] | [INFO] [stderr] 416 | num = num + 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `num += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/demons.rs:453:33 [INFO] [stderr] | [INFO] [stderr] 453 | num = num + 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `num += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/demons.rs:478:33 [INFO] [stderr] | [INFO] [stderr] 478 | num = num + 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `num += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/message.rs:34:30 [INFO] [stderr] | [INFO] [stderr] 34 | let commond = if (&files).len() > 0 { IPMSG_SENDMSG|IPMSG_FILEATTACHOPT } else { IPMSG_SENDMSG };//如果有文件,需要扩展文件 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!(&files).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/message.rs:36:33 [INFO] [stderr] | [INFO] [stderr] 36 | let share_info = if (&files).len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!(&files).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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/util.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn utf8_to_gb18030<'a>(ori_str :&'a str) -> Vec { [INFO] [stderr] 10 | | GB18030.encode(&ori_str, EncoderTrap::Strict).unwrap() [INFO] [stderr] 11 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/chat_window.rs:58:28 [INFO] [stderr] | [INFO] [stderr] 58 | let v: Vec<&str> = additional_section.split('\0').into_iter().collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `additional_section.split('\0')` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/chat_window.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | &text_view_history.get_buffer().unwrap().set_text(format!("{}:{}\n", name, v[0]).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `text_view_history.get_buffer().unwrap().set_text(format!("{}:{}\n", name, v[0]).as_str());` [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: statement can be reduced [INFO] [stderr] --> src/chat_window.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | &text_view_history_clone.get_buffer().unwrap().insert(&mut his_end_iter, format!("{}:{}\n", "我", context).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `text_view_history_clone.get_buffer().unwrap().insert(&mut his_end_iter, format!("{}:{}\n", "我", context).as_str());` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/chat_window.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | &text_view_presend_clone.get_buffer().unwrap().set_text(""); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `text_view_presend_clone.get_buffer().unwrap().set_text("");` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/chat_window.rs:108:26 [INFO] [stderr] | [INFO] [stderr] 108 | let p1 = pid.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `pid` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/chat_window.rs:109:26 [INFO] [stderr] | [INFO] [stderr] 109 | let f1 = fid.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `fid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/chat_window.rs:110:26 [INFO] [stderr] | [INFO] [stderr] 110 | let p2 = pid.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `pid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/chat_window.rs:111:26 [INFO] [stderr] | [INFO] [stderr] 111 | let f2 = fid.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `fid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/chat_window.rs:114:28 [INFO] [stderr] | [INFO] [stderr] 114 | if let Ok(_) = ::download::download(target_ip, base_filename_clone, p1, f1, name, file_type as u32) { [INFO] [stderr] | _____________________- ^^^^^ [INFO] [stderr] 115 | | //::成功删除 [INFO] [stderr] 116 | | ::glib::idle_add(move || ::demons::remove_downloaded_file(&in_ip, p2, f2)); [INFO] [stderr] 117 | | }else { [INFO] [stderr] 118 | | error!("download error!!"); [INFO] [stderr] 119 | | } [INFO] [stderr] | |_____________________- help: try this: `if ::download::download(target_ip, base_filename_clone, p1, f1, name, file_type as u32).is_ok()` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/chat_window.rs:114:103 [INFO] [stderr] | [INFO] [stderr] 114 | if let Ok(_) = ::download::download(target_ip, base_filename_clone, p1, f1, name, file_type as u32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(file_type)` [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: statement can be reduced [INFO] [stderr] --> src/chat_window.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | &text_view_presend_clone.get_buffer().unwrap().set_text(""); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `text_view_presend_clone.get_buffer().unwrap().set_text("");` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/chat_window.rs:168:17 [INFO] [stderr] | [INFO] [stderr] 168 | let ref mut files_add = *pre_send_files_open_file.borrow_mut(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^------------------------------------------ help: try: `let files_add = &mut (*pre_send_files_open_file.borrow_mut());` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/chat_window.rs:212:17 [INFO] [stderr] | [INFO] [stderr] 212 | let ref mut files_add = *pre_send_files_open_dir.borrow_mut(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^----------------------------------------- help: try: `let files_add = &mut (*pre_send_files_open_dir.borrow_mut());` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/download.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | stream.write(packet.to_string().as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/download.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | file.write(&buffer[0..num])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/download.rs:98:13 [INFO] [stderr] | [INFO] [stderr] 98 | let ref mut stream = self.inner; [INFO] [stderr] | ----^^^^^^^^^^^^^^-------------- help: try: `let stream = &mut self.inner;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/download.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | let ref mut next_path = self.next_path.clone(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^-------------------------- help: try: `let next_path = &mut self.next_path.clone();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/download.rs:116:29 [INFO] [stderr] | [INFO] [stderr] 116 | fs::create_dir(&next_path); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/download.rs:158:5 [INFO] [stderr] | [INFO] [stderr] 158 | handler.read_to_end(&mut s_buffer); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/download.rs:170:9 [INFO] [stderr] | [INFO] [stderr] 170 | f.write(&buf[..bytes_read]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/app.rs:23:32 [INFO] [stderr] | [INFO] [stderr] 23 | pub static GLOBAL_WINDOWS: RefCell, mpsc::Receiver)>> = RefCell::new(None);//聊天窗口列表 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a value that implements Copy. Dropping a copy leaves the original intact. [INFO] [stderr] --> src/app.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | drop(::env_logger::init().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::drop_copy)] on by default [INFO] [stderr] note: argument has type () [INFO] [stderr] --> src/app.rs:29:10 [INFO] [stderr] | [INFO] [stderr] 29 | drop(::env_logger::init().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_copy [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/app.rs:29:10 [INFO] [stderr] | [INFO] [stderr] 29 | drop(::env_logger::init().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 29 | drop(()); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/app.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | &label.set_text(&format!("-- {} --", model.get_value(&iter, 0).get::().unwrap())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `label.set_text(&format!("-- {} --", model.get_value(&iter, 0).get::().unwrap()));` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/app.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | remained_sender1.send(ReceivedPacketInner::new(ip_str)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `raudient`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "78a7387365b817bf7108202dd64f99c196e41c8a54e2d75b631525377e0782c9"` [INFO] running `"docker" "rm" "-f" "78a7387365b817bf7108202dd64f99c196e41c8a54e2d75b631525377e0782c9"` [INFO] [stdout] 78a7387365b817bf7108202dd64f99c196e41c8a54e2d75b631525377e0782c9