[INFO] fetching crate raudient 0.4.0...
[INFO] testing raudient-0.4.0 against try#0abe69e6c16114311cc2700e972492e64d69c28f for pr-154065-1
[INFO] extracting crate raudient 0.4.0 into /workspace/builds/worker-2-tc2/source
[INFO] started tweaking crates.io crate raudient 0.4.0
[INFO] finished tweaking crates.io crate raudient 0.4.0
[INFO] tweaked toml for crates.io crate raudient 0.4.0 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate raudient 0.4.0 on toolchain 0abe69e6c16114311cc2700e972492e64d69c28f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate raudient 0.4.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1d7e9f2568870819c1249f2de0104238ac56509b1fd7082246bf6c75981cf896
[INFO] running `Command { std: "docker" "start" "-a" "1d7e9f2568870819c1249f2de0104238ac56509b1fd7082246bf6c75981cf896", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1d7e9f2568870819c1249f2de0104238ac56509b1fd7082246bf6c75981cf896", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1d7e9f2568870819c1249f2de0104238ac56509b1fd7082246bf6c75981cf896", kill_on_drop: false }`
[INFO] [stdout] 1d7e9f2568870819c1249f2de0104238ac56509b1fd7082246bf6c75981cf896
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7d14e0b6d994eba556f02c4751267faa09a7c3626e14b5e424279e4e6de13f43
[INFO] running `Command { std: "docker" "start" "-a" "7d14e0b6d994eba556f02c4751267faa09a7c3626e14b5e424279e4e6de13f43", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.36
[INFO] [stderr]    Compiling unicode-xid v0.2.2
[INFO] [stderr]    Compiling syn v1.0.84
[INFO] [stderr]    Compiling serde v1.0.133
[INFO] [stderr]    Compiling unicode-segmentation v1.8.0
[INFO] [stderr]    Compiling anyhow v1.0.52
[INFO] [stderr]    Compiling either v1.6.1
[INFO] [stderr]    Compiling smallvec v1.7.0
[INFO] [stderr]    Compiling pkg-config v0.3.24
[INFO] [stderr]    Compiling cfg-expr v0.8.1
[INFO] [stderr]    Compiling heck v0.3.3
[INFO] [stderr]    Compiling itertools v0.10.3
[INFO] [stderr]    Compiling version-compare v0.0.11
[INFO] [stderr]    Compiling strum v0.21.0
[INFO] [stderr]    Compiling libc v0.2.112
[INFO] [stderr]    Compiling autocfg v1.0.1
[INFO] [stderr]    Compiling version_check v0.9.4
[INFO] [stderr]    Compiling futures-core v0.3.19
[INFO] [stderr]    Compiling quote v1.0.14
[INFO] [stderr]    Compiling futures-task v0.3.19
[INFO] [stderr]    Compiling futures-util v0.3.19
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling memchr v2.4.1
[INFO] [stderr]    Compiling futures-channel v0.3.19
[INFO] [stderr]    Compiling pin-project-lite v0.2.8
[INFO] [stderr]    Compiling slab v0.4.5
[INFO] [stderr]    Compiling ucd-trie v0.1.3
[INFO] [stderr]    Compiling once_cell v1.9.0
[INFO] [stderr]    Compiling gio v0.14.8
[INFO] [stderr]    Compiling pest v2.1.3
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling miniz_oxide v0.4.4
[INFO] [stderr]    Compiling futures-io v0.3.19
[INFO] [stderr]    Compiling cc v1.0.72
[INFO] [stderr]    Compiling aho-corasick v0.7.18
[INFO] [stderr]    Compiling regex-syntax v0.6.25
[INFO] [stderr]    Compiling thread-id v2.0.0
[INFO] [stderr]    Compiling memchr v0.1.11
[INFO] [stderr]    Compiling backtrace v0.3.63
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling serde_derive v1.0.133
[INFO] [stderr]    Compiling semver-parser v0.10.2
[INFO] [stderr]    Compiling gimli v0.26.1
[INFO] [stderr]    Compiling log v0.4.14
[INFO] [stderr]    Compiling crossbeam-utils v0.8.5
[INFO] [stderr]    Compiling adler v1.0.2
[INFO] [stderr]    Compiling semver v0.11.0
[INFO] [stderr]    Compiling rustc_version v0.3.3
[INFO] [stderr]    Compiling regex v1.5.4
[INFO] [stderr]    Compiling futures-executor v0.3.19
[INFO] [stderr]    Compiling toml v0.5.8
[INFO] [stderr]    Compiling field-offset v0.3.4
[INFO] [stderr]    Compiling aho-corasick v0.5.3
[INFO] [stderr]    Compiling thread_local v0.2.7
[INFO] [stderr]    Compiling object v0.27.1
[INFO] [stderr]    Compiling getrandom v0.2.3
[INFO] [stderr]    Compiling gtk v0.14.3
[INFO] [stderr]    Compiling termcolor v1.1.2
[INFO] [stderr]    Compiling addr2line v0.17.0
[INFO] [stderr]    Compiling rustc-demangle v0.1.21
[INFO] [stderr]    Compiling lazy_static v1.4.0
[INFO] [stderr]    Compiling regex v0.1.80
[INFO] [stderr]    Compiling os_type v2.4.0
[INFO] [stderr]    Compiling uuid v0.8.2
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling time v0.1.43
[INFO] [stderr]    Compiling humantime v2.1.0
[INFO] [stderr]    Compiling bytes v1.1.0
[INFO] [stderr]    Compiling match_cfg v0.1.0
[INFO] [stderr]    Compiling hostname v0.3.1
[INFO] [stderr]    Compiling env_logger v0.9.0
[INFO] [stderr]    Compiling chrono v0.4.19
[INFO] [stderr]    Compiling crossbeam-channel v0.5.1
[INFO] [stderr]    Compiling local-ip v0.1.0
[INFO] [stderr]    Compiling combine v4.6.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.30
[INFO] [stderr]    Compiling strum_macros v0.21.1
[INFO] [stderr]    Compiling thiserror v1.0.30
[INFO] [stderr]    Compiling proc-macro-crate v1.1.0
[INFO] [stderr]    Compiling system-deps v3.2.0
[INFO] [stderr]    Compiling glib-macros v0.14.1
[INFO] [stderr]    Compiling gtk3-macros v0.14.0
[INFO] [stderr]    Compiling glib-sys v0.14.0
[INFO] [stderr]    Compiling gobject-sys v0.14.0
[INFO] [stderr]    Compiling gio-sys v0.14.0
[INFO] [stderr]    Compiling gdk-pixbuf-sys v0.14.0
[INFO] [stderr]    Compiling cairo-sys-rs v0.14.9
[INFO] [stderr]    Compiling pango-sys v0.14.0
[INFO] [stderr]    Compiling gdk-sys v0.14.0
[INFO] [stderr]    Compiling atk-sys v0.14.0
[INFO] [stderr]    Compiling gtk-sys v0.14.0
[INFO] [stderr]    Compiling glib v0.14.8
[INFO] [stderr]    Compiling human-panic v1.0.3
[INFO] [stderr]    Compiling pango v0.14.8
[INFO] [stderr]    Compiling cairo-rs v0.14.9
[INFO] [stderr]    Compiling atk v0.14.0
[INFO] [stderr]    Compiling gdk-pixbuf v0.14.0
[INFO] [stderr]    Compiling gdk v0.14.3
[INFO] [stderr]    Compiling raudient v0.4.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::net::TcpStream`
[INFO] [stdout]  --> src/model.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::TcpStream;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/model.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::path::{PathBuf, Path};
[INFO] [stdout]   |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/message.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/message.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/message.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::UdpSocket`
[INFO] [stdout]  --> src/message.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::net::UdpSocket;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DecoderTrap`, `EncoderTrap`, and `Encoding`
[INFO] [stdout]  --> src/message.rs:5:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `encoding::all::GB18030`
[INFO] [stdout]  --> src/message.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use encoding::all::GB18030;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `trace` and `warn`
[INFO] [stdout]  --> src/message.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 | use log::{info, trace, warn};
[INFO] [stdout]   |                 ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IPMSG_BROADCASTOPT`, `IPMSG_BR_ENTRY`, `IPMSG_DEFAULT_PORT`, and `self`
[INFO] [stdout]   --> src/message.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::constant::{self, IPMSG_SENDMSG, IPMSG_FILEATTACHOPT, IPMSG_DEFAULT_PORT, IPMSG_BR_ENTRY, IPMSG_BROADCASTOPT};
[INFO] [stdout]    |                       ^^^^                                      ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DecoderTrap`
[INFO] [stdout]  --> src/util.rs:1:39
[INFO] [stdout]   |
[INFO] [stdout] 1 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]   |                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/util.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::{Duration, SystemTime};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `any`, `choice`, `optional`, `sep_by`, `skip_many1`, and `skip_many`
[INFO] [stdout]  --> src/util.rs:9:44
[INFO] [stdout]   |
[INFO] [stdout] 9 | use combine::{many1, many, Parser, Stream, sep_by, token, skip_many, skip_many1, satisfy, choice, optional, any};
[INFO] [stdout]   |                                            ^^^^^^         ^^^^^^^^^  ^^^^^^^^^^           ^^^^^^  ^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `take_until_range`, `take_while1`, and `take_while`
[INFO] [stdout]   --> src/util.rs:10:30
[INFO] [stdout]    |
[INFO] [stdout] 10 | use combine::parser::range::{take_while, take_while1, take_until_range};
[INFO] [stdout]    |                              ^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `char`, `digit`, `letter`, and `space`
[INFO] [stdout]   --> src/util.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 | use combine::parser::char::{letter, space, digit, char};
[INFO] [stdout]    |                             ^^^^^^  ^^^^^  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AboutDialog`, `ButtonBox`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `Label`, `MenuBar`, `MenuItem`, `Menu`, `Orientation`, `ReliefStyle`, `ScrolledWindow`, `Widget`, `WindowPosition`, and `WindowType`
[INFO] [stdout]  --> src/chat_window.rs:3:29
[INFO] [stdout]   |
[INFO] [stdout] 3 |     self, CellRendererText, AboutDialog, CheckMenuItem, IconSize, Image, Label, Menu, MenuBar, MenuItem, Window,
[INFO] [stdout]   |                             ^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^  ^^^^^  ^^^^  ^^^^^^^  ^^^^^^^^
[INFO] [stdout] 4 |     WindowPosition, WindowType, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^  ^^^^^^^^^^                                                ^^^^          ^^^^^^^^^^^
[INFO] [stdout] 5 |     ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, ButtonBox, WrapMode
[INFO] [stdout]   |     ^^^^^^^^^^^  ^^^^^^            ^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/chat_window.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]  --> src/chat_window.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::sync::mpsc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> src/chat_window.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]   --> src/chat_window.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::path::{PathBuf, Path};
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `ReadDir`
[INFO] [stdout]   --> src/chat_window.rs:12:21
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::fs::{self, File, Metadata, ReadDir};
[INFO] [stdout]    |                     ^^^^            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `SystemTime`, and `UNIX_EPOCH`
[INFO] [stdout]   --> src/chat_window.rs:13:23
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::time::{self, Duration, SystemTime, UNIX_EPOCH};
[INFO] [stdout]    |                       ^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `trace` and `warn`
[INFO] [stdout]   --> src/chat_window.rs:15:17
[INFO] [stdout]    |
[INFO] [stdout] 15 | use log::{info, trace, warn};
[INFO] [stdout]    |                 ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Packet` and `ShareInfo`
[INFO] [stdout]   --> src/chat_window.rs:17:26
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::model::{self, Packet, ShareInfo, ReceivedSimpleFileInfo};
[INFO] [stdout]    |                          ^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::constant`
[INFO] [stdout]   --> src/chat_window.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::constant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ReadDir`
[INFO] [stdout]  --> src/download.rs:8:37
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::fs::{self, File, Metadata, ReadDir};
[INFO] [stdout]   |                                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EncoderTrap`
[INFO] [stdout]   --> src/download.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]    |                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `trace` and `warn`
[INFO] [stdout]   --> src/download.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 | use log::{info, trace, warn, debug};
[INFO] [stdout]    |                 ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FileInfo`
[INFO] [stdout]   --> src/download.rs:18:20
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::model::{FileInfo, ReceivedSimpleFileInfo};
[INFO] [stdout]    |                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/download.rs:167:65
[INFO] [stdout]     |
[INFO] [stdout] 167 | ...   let header_context_str = read_bytes(stream, (header_size - 1 - header_size_str.as_bytes().len() as u64));//-1是减去的那个冒号
[INFO] [stdout]     |                                                   ^                                                         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 167 -                     let header_context_str = read_bytes(stream, (header_size - 1 - header_size_str.as_bytes().len() as u64));//-1是减去的那个冒号
[INFO] [stdout] 167 +                     let header_context_str = read_bytes(stream, header_size - 1 - header_size_str.as_bytes().len() as u64 );//-1是减去的那个冒号
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EncoderTrap`
[INFO] [stdout]  --> src/events/model.rs:4:26
[INFO] [stdout]   |
[INFO] [stdout] 4 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]   |                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `trace`, and `warn`
[INFO] [stdout]  --> src/events/model.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use log::{info, trace, warn, debug, error};
[INFO] [stdout]   |                 ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FileInfo`
[INFO] [stdout]   --> src/events/model.rs:11:79
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::model::{Packet, User, ReceivedSimpleFileInfo, ReceivedPacketInner, FileInfo, ShareInfo};
[INFO] [stdout]    |                                                                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IPMSG_FILEATTACHOPT` and `IPMSG_SENDMSG`
[INFO] [stdout]   --> src/events/model.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::constant::{self, IPMSG_SENDMSG, IPMSG_FILEATTACHOPT, IPMSG_DEFAULT_PORT, IPMSG_BR_ENTRY, IPMSG_BROADCASTOPT, IPMSG_LIMITE...
[INFO] [stdout]    |                             ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/events/model.rs:192:9
[INFO] [stdout]     |
[INFO] [stdout] 192 |         ///扩展段 用户名|用户组
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 193 |         let ext_vec = extstr.splitn(2, |c| c == ':').collect::<Vec<&str>>();
[INFO] [stdout]     |         -------------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FileInfo` and `ReceivedPacketInner`
[INFO] [stdout]  --> src/events/ui.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::model::{User, ReceivedPacketInner, Packet, ReceivedSimpleFileInfo, FileInfo, ShareInfo};
[INFO] [stdout]   |                          ^^^^^^^^^^^^^^^^^^^                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ReadDir`
[INFO] [stdout]  --> src/fileserver.rs:7:37
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fs::{self, File, Metadata, ReadDir};
[INFO] [stdout]   |                                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EncoderTrap`
[INFO] [stdout]  --> src/fileserver.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]   |                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `trace`, and `warn`
[INFO] [stdout]   --> src/fileserver.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | use log::{info, trace, warn, debug};
[INFO] [stdout]    |                 ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FileInfo` and `Packet`
[INFO] [stdout]   --> src/fileserver.rs:13:20
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::model::{FileInfo, Packet, ShareInfo};
[INFO] [stdout]    |                    ^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::prelude::*`
[INFO] [stdout]  --> src/main_win.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]  --> src/main_win.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::{TcpListener, TcpStream};
[INFO] [stdout]   |                ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/main_win.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/main_win.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/main_win.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]  --> src/main_win.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::mpsc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, `SocketAddrV4`, `SocketAddrV6`, `SocketAddr`, and `ToSocketAddrs`
[INFO] [stdout]  --> src/main_win.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6, Ipv4Addr, Ipv6Addr, ToSocketAddrs};
[INFO] [stdout]   |                ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::args`
[INFO] [stdout]   --> src/main_win.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::env::args;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `human_panic::setup_panic`
[INFO] [stdout]   --> src/main_win.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use human_panic::setup_panic;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gio::ApplicationFlags`
[INFO] [stdout]   --> src/main_win.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use gio::ApplicationFlags;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Builder`, `Button`, `CellRendererProgress`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `ListBoxRow`, `ListBox`, `Orientation`, `ReliefStyle`, `TextView`, `Widget`, `WindowPosition`, `WindowType`, and `Window`
[INFO] [stdout]   --> src/main_win.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 |     self, CellRendererText, CellRendererProgress, AboutDialog, CheckMenuItem, IconSize, Image, Label, Menu, MenuBar, MenuItem, Window,
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^               ^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^                                  ^^^^^^
[INFO] [stdout] 16 |     WindowPosition, WindowType, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^  ^^^^^^^^^^                                       ^^^^^^^  ^^^^  ^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 17 |     ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, ListBox, ListBoxRow, Application
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^  ^^^^^^^^  ^^^^^                  ^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Receiver`
[INFO] [stdout]   --> src/main_win.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | use glib::{Receiver, MainContext};
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `trace`, and `warn`
[INFO] [stdout]   --> src/main_win.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 | use log::{info, trace, warn, debug};
[INFO] [stdout]    |                 ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ErrMsg`, `FileInfo`, `OperUser`, `Operate`, `Packet`, `ReceivedPacketInner`, `ReceivedSimpleFileInfo`, `ShareInfo`, `User`, and `self`
[INFO] [stdout]   --> src/main_win.rs:24:20
[INFO] [stdout]    |
[INFO] [stdout] 24 | use crate::model::{self, User, OperUser, Operate, ShareInfo, Packet, FileInfo, ReceivedSimpleFileInfo, ReceivedPacketInner, ErrMsg};
[INFO] [stdout]    |                    ^^^^  ^^^^  ^^^^^^^^  ^^^^^^^  ^^^^^^^^^  ^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::prelude::*`
[INFO] [stdout]  --> src/app.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]  --> src/app.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::{TcpListener, TcpStream};
[INFO] [stdout]   |                ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/app.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/app.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/app.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]  --> src/app.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::mpsc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/app.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::UdpSocket`
[INFO] [stdout]  --> src/app.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::net::UdpSocket;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, `SocketAddrV4`, `SocketAddrV6`, `SocketAddr`, and `ToSocketAddrs`
[INFO] [stdout]  --> src/app.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6, Ipv4Addr, Ipv6Addr, ToSocketAddrs};
[INFO] [stdout]   |                ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::args`
[INFO] [stdout]   --> src/app.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::env::args;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]   --> src/app.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     setup_panic!();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout]    = note: this warning originates in the macro `setup_panic` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/download.rs:40:52
[INFO] [stdout]    |
[INFO] [stdout] 40 |             DownLoadError::IoError(ref err) => err.description(),
[INFO] [stdout]    |                                                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/message.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 |     for (i, file) in (&files).iter().enumerate() {
[INFO] [stdout]    |          ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]   --> src/util.rs:39:23
[INFO] [stdout]    |
[INFO] [stdout] 39 |         many(satisfy(|c| true)),
[INFO] [stdout]    |                       ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/chat_window.rs:77:26
[INFO] [stdout]    |
[INFO] [stdout] 77 |         let (start_iter, mut end_iter) = text_view_presend.buffer().unwrap().bounds();
[INFO] [stdout]    |                          ----^^^^^^^^
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `local_time`
[INFO] [stdout]    --> src/chat_window.rs:194:17
[INFO] [stdout]     |
[INFO] [stdout] 194 |             let local_time = chrono_time.with_timezone(&::chrono::Local);
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `local_time`
[INFO] [stdout]    --> src/chat_window.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |             let local_time = chrono_time.with_timezone(&::chrono::Local);
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_path`
[INFO] [stdout]   --> src/chat_window.rs:88:111
[INFO] [stdout]    |
[INFO] [stdout] 88 | ...ip => move |tree_view, tree_path, tree_view_column| {
[INFO] [stdout]    |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_view_column`
[INFO] [stdout]   --> src/chat_window.rs:88:122
[INFO] [stdout]    |
[INFO] [stdout] 88 | ...iew, tree_path, tree_view_column| {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_view_column`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `text_view_history_clone`
[INFO] [stdout]   --> src/chat_window.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |     let text_view_history_clone = text_view_history.clone();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_text_view_history_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `received_store`
[INFO] [stdout]    --> src/chat_window.rs:251:25
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn modify_received_list(received_store :Option<ListStore>, received_files: Arc<RefCell<Vec<ReceivedSimpleFileInfo>>>) -> ::glib::Co...
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_received_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `received_files`
[INFO] [stdout]    --> src/chat_window.rs:251:60
[INFO] [stdout]     |
[INFO] [stdout] 251 | ...ption<ListStore>, received_files: Arc<RefCell<Vec<ReceivedSimpleFileInfo>>>) -> ::glib::Continue {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_received_files`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/download.rs:65:16
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub fn run(mut self, file_info: ReceivedSimpleFileInfo, save_path: PathBuf, download_ip: String) {
[INFO] [stdout]    |                ----^^^^
[INFO] [stdout]    |                |
[INFO] [stdout]    |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:136:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let mut base_file_location = path.to_path_buf();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut buffer = BufReader::new(stream);
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |         let mut path_infos = PathInfos{
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `metadata`
[INFO] [stdout]    --> src/download.rs:124:9
[INFO] [stdout]     |
[INFO] [stdout] 124 |     let metadata: Metadata = fs::metadata(path)?;
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path_info`
[INFO] [stdout]    --> src/download.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |         for path_info in path_infos {
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_path_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `opt`
[INFO] [stdout]    --> src/download.rs:172:25
[INFO] [stdout]     |
[INFO] [stdout] 172 |                     let opt = constant::get_opt(file_attr);
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_opt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:202:19
[INFO] [stdout]     |
[INFO] [stdout] 202 | fn read_delimiter(mut stream : & mut BufReader<TcpStream>) -> Result<Option<String>, DownLoadError> {
[INFO] [stdout]     |                   ----^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:217:15
[INFO] [stdout]     |
[INFO] [stdout] 217 | fn read_bytes(mut stream : & mut BufReader<TcpStream>, len: u64) -> String {
[INFO] [stdout]     |               ----^^^^^^
[INFO] [stdout]     |               |
[INFO] [stdout]     |               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:224:23
[INFO] [stdout]     |
[INFO] [stdout] 224 | fn read_bytes_to_file(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stdout]     |                       ----^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:238:30
[INFO] [stdout]     |
[INFO] [stdout] 238 | fn read_bytes_to_file_unsize(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stdout]     |                              ----^^^^^^
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `len`
[INFO] [stdout]    --> src/download.rs:238:71
[INFO] [stdout]     |
[INFO] [stdout] 238 | fn read_bytes_to_file_unsize(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stdout]     |                                                                       ^^^ help: if this is intentional, prefix it with an underscore: `_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg_str`
[INFO] [stdout]    --> src/events/model.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let msg_str = if ext_vec.len() > 0 { ext_vec[0] } else { "" };
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_msg_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ntime`
[INFO] [stdout]    --> src/events/model.rs:240:29
[INFO] [stdout]     |
[INFO] [stdout] 240 |                         let ntime = NaiveDateTime::from_timestamp(mmtime_num, 0);
[INFO] [stdout]     |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_ntime`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/fileserver.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |                     let mut tmp_buf = &buf[0..byte_size];
[INFO] [stdout]    |                         ----^^^^^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/fileserver.rs:75:58
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn process_dir(pool_tmp: Arc<Mutex<Vec<ShareInfo>>>, mut stream_echo: TcpStream, ext_str: String) -> () {
[INFO] [stdout]    |                                                          ----^^^^^^^^^^^
[INFO] [stdout]    |                                                          |
[INFO] [stdout]    |                                                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `search_result` is never read
[INFO] [stdout]   --> src/fileserver.rs:81:56
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let mut search_result: Option<ShareInfo> = Option::None;
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/fileserver.rs:99:60
[INFO] [stdout]    |
[INFO] [stdout] 99 |     fn process_file(pool_tmp: &Arc<Mutex<Vec<ShareInfo>>>, mut stream_echo: &mut TcpStream, ext_str: String) -> () {
[INFO] [stdout]    |                                                            ----^^^^^^^^^^^
[INFO] [stdout]    |                                                            |
[INFO] [stdout]    |                                                            help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/fileserver.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |             let offset = file_attr[2].parse::<u32>().unwrap();
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `search_result` is never read
[INFO] [stdout]    --> src/fileserver.rs:106:56
[INFO] [stdout]     |
[INFO] [stdout] 106 |             let mut search_result: Option<ShareInfo> = Option::None;
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main_win.rs:266:17
[INFO] [stdout]     |
[INFO] [stdout] 266 |                 _ => {
[INFO] [stdout]     |                 ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/main_win.rs:266:17
[INFO] [stdout]     |
[INFO] [stdout] 129 |                 UiEvent::OpenOrReOpenChatWindow {name, ip} => {
[INFO] [stdout]     |                 ------------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 139 |                 UiEvent::UpdateUserListFooterStatus(text) => {
[INFO] [stdout]     |                 ----------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 142 |                 UiEvent::UserListRemoveOne(ip) => {
[INFO] [stdout]     |                 ------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 164 |                 UiEvent::UserListAddOne(income_user) => {
[INFO] [stdout]     |                 ------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 266 |                 _ => {
[INFO] [stdout]     |                 ^ ...and 5 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `win`
[INFO] [stdout]    --> src/main_win.rs:131:30
[INFO] [stdout]     |
[INFO] [stdout] 131 |                         Some(win) => {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `win`
[INFO] [stdout]    --> src/main_win.rs:193:30
[INFO] [stdout]     |
[INFO] [stdout] 193 |                         Some(win) => {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `packet`
[INFO] [stdout]    --> src/main_win.rs:200:62
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 UiEvent::OpenOrReOpenChatWindow1 { name, ip, packet} => {
[INFO] [stdout]     |                                                              ^^^^^^ help: try ignoring the field: `packet: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `win`
[INFO] [stdout]    --> src/main_win.rs:202:30
[INFO] [stdout]     |
[INFO] [stdout] 202 |                         Some(win) => {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `files`
[INFO] [stdout]    --> src/main_win.rs:212:67
[INFO] [stdout]     |
[INFO] [stdout] 212 |                 UiEvent::DisplaySelfSendMsgInHis {to_ip, context, files} => {
[INFO] [stdout]     |                                                                   ^^^^^ help: try ignoring the field: `files: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `his_start_iter`
[INFO] [stdout]    --> src/main_win.rs:215:34
[INFO] [stdout]     |
[INFO] [stdout] 215 | ...                   let (his_start_iter, mut his_end_iter) = win.his_view.buffer().unwrap().bounds();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_his_start_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `his_start_iter`
[INFO] [stdout]    --> src/main_win.rs:225:34
[INFO] [stdout]     |
[INFO] [stdout] 225 | ...                   let (his_start_iter, mut his_end_iter) = win.his_view.buffer().unwrap().bounds();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_his_start_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_path`
[INFO] [stdout]    --> src/main_win.rs:106:84
[INFO] [stdout]     |
[INFO] [stdout] 106 |         tree.connect_row_activated(clone!(@strong model_sender => move |tree_view, tree_path, tree_view_column| {
[INFO] [stdout]     |                                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_view_column`
[INFO] [stdout]    --> src/main_win.rs:106:95
[INFO] [stdout]     |
[INFO] [stdout] 106 |         tree.connect_row_activated(clone!(@strong model_sender => move |tree_view, tree_path, tree_view_column| {
[INFO] [stdout]     |                                                                                               ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_view_column`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_BR_ISGETLIST` is never used
[INFO] [stdout]   --> src/constant.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const IPMSG_BR_ISGETLIST: u32 = 0x00000010;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_OKGETLIST` is never used
[INFO] [stdout]   --> src/constant.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const IPMSG_OKGETLIST: u32 = 0x00000011;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_GETLIST` is never used
[INFO] [stdout]   --> src/constant.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const IPMSG_GETLIST: u32 = 0x00000012;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ANSLIST` is never used
[INFO] [stdout]   --> src/constant.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const IPMSG_ANSLIST: u32 = 0x00000013;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_BR_ISGETLIST2` is never used
[INFO] [stdout]   --> src/constant.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const IPMSG_BR_ISGETLIST2: u32 = 0x00000018;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_READMSG` is never used
[INFO] [stdout]   --> src/constant.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const IPMSG_READMSG: u32 = 0x00000030;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_DELMSG` is never used
[INFO] [stdout]   --> src/constant.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const IPMSG_DELMSG: u32 = 0x00000031;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ANSREADMSG` is never used
[INFO] [stdout]   --> src/constant.rs:42:11
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub const IPMSG_ANSREADMSG: u32 = 0x00000032;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_GETINFO` is never used
[INFO] [stdout]   --> src/constant.rs:44:11
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub const IPMSG_GETINFO: u32 = 0x00000040;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_SENDINFO` is never used
[INFO] [stdout]   --> src/constant.rs:46:11
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub const IPMSG_SENDINFO: u32 = 0x00000041;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_GETABSENCEINFO` is never used
[INFO] [stdout]   --> src/constant.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub const IPMSG_GETABSENCEINFO: u32 = 0x00000050;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_SENDABSENCEINFO` is never used
[INFO] [stdout]   --> src/constant.rs:51:11
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub const IPMSG_SENDABSENCEINFO: u32 = 0x00000051;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_RELEASEFILES` is never used
[INFO] [stdout]   --> src/constant.rs:56:11
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub const IPMSG_RELEASEFILES: u32 = 0x00000061;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_GETPUBKEY` is never used
[INFO] [stdout]   --> src/constant.rs:61:11
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub const IPMSG_GETPUBKEY: u32 = 0x00000072;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ANSPUBKEY` is never used
[INFO] [stdout]   --> src/constant.rs:63:11
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub const IPMSG_ANSPUBKEY: u32 = 0x00000073;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_SYMLINK` is never used
[INFO] [stdout]   --> src/constant.rs:69:11
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub const IPMSG_FILE_SYMLINK: u32 = 0x00000004;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_CDEV` is never used
[INFO] [stdout]   --> src/constant.rs:70:11
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub const IPMSG_FILE_CDEV: u32 = 0x00000005;// for UNIX
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_BDEV` is never used
[INFO] [stdout]   --> src/constant.rs:71:11
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub const IPMSG_FILE_BDEV: u32 = 0x00000006;// for UNIX
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_FIFO` is never used
[INFO] [stdout]   --> src/constant.rs:72:11
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub const IPMSG_FILE_FIFO: u32 = 0x00000007;// for UNIX
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_RESFORK` is never used
[INFO] [stdout]   --> src/constant.rs:73:11
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub const IPMSG_FILE_RESFORK: u32 = 0x00000010;// for mac
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_RONLYOPT` is never used
[INFO] [stdout]   --> src/constant.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub const IPMSG_FILE_RONLYOPT: u32 = 0x00000100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_HIDDENOPT` is never used
[INFO] [stdout]   --> src/constant.rs:77:11
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub const IPMSG_FILE_HIDDENOPT: u32 = 0x00001000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_EXHIDDENOPT` is never used
[INFO] [stdout]   --> src/constant.rs:78:11
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub const IPMSG_FILE_EXHIDDENOPT: u32 = 0x00002000;// for MacOS X
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_ARCHIVEOPT` is never used
[INFO] [stdout]   --> src/constant.rs:79:11
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub const IPMSG_FILE_ARCHIVEOPT: u32 = 0x00004000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_SYSTEMOPT` is never used
[INFO] [stdout]   --> src/constant.rs:80:11
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub const IPMSG_FILE_SYSTEMOPT: u32 = 0x00008000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HOSTLIST_SEPARATOR` is never used
[INFO] [stdout]   --> src/constant.rs:87:11
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub const HOSTLIST_SEPARATOR: char = '\u{7}';
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ABSENCEOPT` is never used
[INFO] [stdout]   --> src/constant.rs:91:11
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub const IPMSG_ABSENCEOPT: u32 = 0x00000100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_SERVEROPT` is never used
[INFO] [stdout]   --> src/constant.rs:93:11
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub const IPMSG_SERVEROPT: u32 = 0x00000200;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_DIALUPOPT` is never used
[INFO] [stdout]   --> src/constant.rs:95:11
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub const IPMSG_DIALUPOPT: u32 = 0x00010000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ENCRYPTOPT` is never used
[INFO] [stdout]   --> src/constant.rs:99:11
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub const IPMSG_ENCRYPTOPT: u32 = 0x00400000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_UTF8OPT` is never used
[INFO] [stdout]    --> src/constant.rs:101:11
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub const IPMSG_UTF8OPT: u32 = 0x00800000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_CAPUTF8OPT` is never used
[INFO] [stdout]    --> src/constant.rs:103:11
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub const IPMSG_CAPUTF8OPT: u32 = 0x01000000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ENCEXTMSGOPT` is never used
[INFO] [stdout]    --> src/constant.rs:105:11
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub const IPMSG_ENCEXTMSGOPT: u32 = 0x04000000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_CLIPBOARDOPT` is never used
[INFO] [stdout]    --> src/constant.rs:107:11
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub const IPMSG_CLIPBOARDOPT: u32 = 0x08000000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_CAPFILEENC_OBSLT` is never used
[INFO] [stdout]    --> src/constant.rs:108:11
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub const IPMSG_CAPFILEENC_OBSLT: u32 = 0x00001000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_CAPFILEENCOPT` is never used
[INFO] [stdout]    --> src/constant.rs:109:11
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub const IPMSG_CAPFILEENCOPT: u32 = 0x00040000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_MULTICASTOPT` is never used
[INFO] [stdout]    --> src/constant.rs:119:11
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub const IPMSG_MULTICASTOPT: u32 = 0x00000800;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_AUTORETOPT` is never used
[INFO] [stdout]    --> src/constant.rs:121:11
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub const IPMSG_AUTORETOPT: u32 = 0x00002000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_RETRYOPT` is never used
[INFO] [stdout]    --> src/constant.rs:123:11
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub const IPMSG_RETRYOPT: u32 = 0x00004000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_PASSWORDOPT` is never used
[INFO] [stdout]    --> src/constant.rs:125:11
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub const IPMSG_PASSWORDOPT: u32 = 0x00008000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_NOLOGOPT` is never used
[INFO] [stdout]    --> src/constant.rs:127:11
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub const IPMSG_NOLOGOPT: u32 = 0x00020000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_NOADDLISTOPT` is never used
[INFO] [stdout]    --> src/constant.rs:129:11
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub const IPMSG_NOADDLISTOPT: u32 = 0x00080000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_READCHECKOPT` is never used
[INFO] [stdout]    --> src/constant.rs:131:11
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub const IPMSG_READCHECKOPT: u32 = 0x00100000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_SECRETEXOPT` is never used
[INFO] [stdout]    --> src/constant.rs:132:11
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub const IPMSG_SECRETEXOPT: u32 = IPMSG_READCHECKOPT|IPMSG_SECRETOPT;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_local_ip` is never used
[INFO] [stdout]    --> src/constant.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub fn get_local_ip() -> Option<IpAddr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ExtStr` is never used
[INFO] [stdout]   --> src/model.rs:26:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | type ExtStr = String;
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExtMsg` is never used
[INFO] [stdout]   --> src/model.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | trait ExtMsg {
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PacketBuilder` is never constructed
[INFO] [stdout]   --> src/model.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct PacketBuilder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `command` and `command_opt` are never used
[INFO] [stdout]   --> src/model.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl PacketBuilder {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 49 |     ///命令
[INFO] [stdout] 50 |     fn command(command_no: u32) -> PacketBuilder {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     fn command_opt(mut self, ext_command_no: u32) -> PacketBuilder {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Operate` is never used
[INFO] [stdout]    --> src/model.rs:148:10
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub enum Operate {
[INFO] [stdout]     |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OperUser` is never constructed
[INFO] [stdout]    --> src/model.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub struct OperUser{
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/model.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | impl OperUser {
[INFO] [stdout]     | ------------- associated function in this implementation
[INFO] [stdout] 159 |     pub fn new(user: User, oper :Operate) -> OperUser{
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `host`, `host_cnt`, `file_cnt`, and `attach_time` are never read
[INFO] [stdout]    --> src/model.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub struct ShareInfo {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub host: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 173 |     // 要发送的目的机器个数
[INFO] [stdout] 174 |     pub host_cnt: u32,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub file_cnt: u32,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 180 |     //文件添加时间
[INFO] [stdout] 181 |     pub attach_time: NaiveTime,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ShareInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `atime`, and `crtime` are never read
[INFO] [stdout]    --> src/model.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub struct FileInfo {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub atime: NaiveTime,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 199 |     //文件创建时间
[INFO] [stdout] 200 |     pub crtime: NaiveTime
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FileInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `opt_files` is never used
[INFO] [stdout]    --> src/model.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | impl ReceivedPacketInner {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn opt_files(mut self, opt_files: Vec<ReceivedSimpleFileInfo>) -> ReceivedPacketInner {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ErrMsg` is never constructed
[INFO] [stdout]    --> src/model.rs:259:12
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub struct ErrMsg {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `win`, `ip`, and `pre_send_files` are never read
[INFO] [stdout]   --> src/chat_window.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct ChatWindow {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 28 |     pub win :Window,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 29 |     pub his_view :TextView,
[INFO] [stdout] 30 |     pub ip :String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 31 |     pub pre_send_files :Arc<RefCell<Vec<model::FileInfo>>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChatWindow` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modify_received_list` is never used
[INFO] [stdout]    --> src/chat_window.rs:251:4
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn modify_received_list(received_store :Option<ListStore>, received_files: Arc<RefCell<Vec<ReceivedSimpleFileInfo>>>) -> ::glib::Co...
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `InValidType` is never constructed
[INFO] [stdout]   --> src/download.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum DownLoadError {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] 22 |     IoError(io::Error),
[INFO] [stdout] 23 |     InValidType,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DownLoadError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_bytes_to_file_unsize` is never used
[INFO] [stdout]    --> src/download.rs:238:4
[INFO] [stdout]     |
[INFO] [stdout] 238 | fn read_bytes_to_file_unsize(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PutInTcpFilePool` is never constructed
[INFO] [stdout]   --> src/events/model.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum ModelEvent {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 30 |     PutInTcpFilePool(),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `hostname` should have an upper case name
[INFO] [stdout]    --> src/constant.rs:161:20
[INFO] [stdout]     |
[INFO] [stdout] 161 |     pub static ref hostname: String = get_host_name();
[INFO] [stdout]     |                    ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 161 -     pub static ref hostname: String = get_host_name();
[INFO] [stdout] 161 +     pub static ref HOSTNAME: String = get_host_name();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `localip` should have an upper case name
[INFO] [stdout]    --> src/constant.rs:162:20
[INFO] [stdout]     |
[INFO] [stdout] 162 |     pub static ref localip: String = get_local_ip().unwrap().to_string();
[INFO] [stdout]     |                    ^^^^^^^ help: convert the identifier to upper case: `LOCALIP`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `addr` should have an upper case name
[INFO] [stdout]    --> src/constant.rs:163:20
[INFO] [stdout]     |
[INFO] [stdout] 163 |     pub static ref addr: String = format!("{}{}", "0.0.0.0:", IPMSG_DEFAULT_PORT);
[INFO] [stdout]     |                    ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 163 -     pub static ref addr: String = format!("{}{}", "0.0.0.0:", IPMSG_DEFAULT_PORT);
[INFO] [stdout] 163 +     pub static ref ADDR: String = format!("{}{}", "0.0.0.0:", IPMSG_DEFAULT_PORT);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]   --> src/chat_window.rs:83:9
[INFO] [stdout]    |
[INFO] [stdout] 83 |         &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 83 |         let _ = &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/chat_window.rs:106:17
[INFO] [stdout]     |
[INFO] [stdout] 106 | /                 model_sender.send(ModelEvent::PutDownloadTaskInPool{ file: ReceivedSimpleFileInfo{
[INFO] [stdout] 107 | |                     file_id: fid,
[INFO] [stdout] 108 | |                     packet_id: pid,
[INFO] [stdout] 109 | |                     name: name,
[INFO] [stdout] ...   |
[INFO] [stdout] 112 | |                     mtime
[INFO] [stdout] 113 | |                 }, save_base_path, download_ip: host_ip.clone() });
[INFO] [stdout]     | |__________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 106 |                 let _ = model_sender.send(ModelEvent::PutDownloadTaskInPool{ file: ReceivedSimpleFileInfo{
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/chat_window.rs:123:9
[INFO] [stdout]     |
[INFO] [stdout] 123 |         &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 123 |         let _ = &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/download.rs:74:21
[INFO] [stdout]    |
[INFO] [stdout] 74 |                     sender.send(ModelEvent::DownloadIsBusy{ file: file_info });
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 74 |                     let _ = sender.send(ModelEvent::DownloadIsBusy{ file: file_info });
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/download.rs:92:25
[INFO] [stdout]    |
[INFO] [stdout] 92 | ...   sender.send(ModelEvent::RemoveDownloadTaskInPool{ packet_id: file_info.packet_id, file_id: file_info.file_id, download_ip });
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 92 |                         let _ = sender.send(ModelEvent::RemoveDownloadTaskInPool{ packet_id: file_info.packet_id, file_id: file_info.file_id, download_ip });
[INFO] [stdout]    |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/download.rs:220:5
[INFO] [stdout]     |
[INFO] [stdout] 220 |     handler.read_to_end(&mut s_buffer);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 220 |     let _ = handler.read_to_end(&mut s_buffer);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/download.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 |         f.write(&buf[..bytes_read]);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 231 |         let _ = f.write(&buf[..bytes_read]);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/events/model.rs:187:9
[INFO] [stdout]     |
[INFO] [stdout] 187 |         model_event_sender.send(ModelEvent::RecMsgReply{packet: recvmsg, from_ip: (&packet).ip.to_owned()});
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 187 |         let _ = model_event_sender.send(ModelEvent::RecMsgReply{packet: recvmsg, from_ip: (&packet).ip.to_owned()});
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/events/model.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |         model_event_sender.send(ModelEvent::BroadcastExit((&packet).sender_host.to_owned()));
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 190 |         let _ = model_event_sender.send(ModelEvent::BroadcastExit((&packet).sender_host.to_owned()));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/events/model.rs:209:9
[INFO] [stdout]     |
[INFO] [stdout] 209 |         model_event_sender.send(ModelEvent::RecOnlineMsgReply{packet: ansentry_packet, from_user: user});
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 209 |         let _ = model_event_sender.send(ModelEvent::RecOnlineMsgReply{packet: ansentry_packet, from_user: user});
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/events/model.rs:212:9
[INFO] [stdout]     |
[INFO] [stdout] 212 |         model_event_sender.send(ModelEvent::NotifyOnline{user});
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 212 |         let _ = model_event_sender.send(ModelEvent::NotifyOnline{user});
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]   --> src/main_win.rs:45:17
[INFO] [stdout]    |
[INFO] [stdout] 45 |                 &window.destroy();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 45 |                 let _ = &window.destroy();
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]   --> src/main_win.rs:79:17
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 &window.destroy();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 let _ = &window.destroy();
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main_win.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |         main_context.acquire();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let _ = main_context.acquire();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/main_win.rs:135:29
[INFO] [stdout]     |
[INFO] [stdout] 135 | ...                   &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |                             let _ = &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/main_win.rs:140:21
[INFO] [stdout]     |
[INFO] [stdout] 140 |                     &label.set_text(&format!("-- {} --", text));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 140 |                     let _ = &label.set_text(&format!("-- {} --", text));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/main_win.rs:194:29
[INFO] [stdout]     |
[INFO] [stdout] 194 | ...                   &chat_windows.remove(&ip);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 194 |                             let _ = &chat_windows.remove(&ip);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/main_win.rs:208:29
[INFO] [stdout]     |
[INFO] [stdout] 208 | ...                   &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 208 |                             let _ = &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stdout]   --> src/app.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     drop(env_logger::init());
[INFO] [stdout]    |     ^^^^^------------------^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          argument has type `()`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dropping_copy_types)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]    |
[INFO] [stdout] 20 -     drop(env_logger::init());
[INFO] [stdout] 20 +     let _ = env_logger::init();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 11s
[INFO] running `Command { std: "docker" "inspect" "7d14e0b6d994eba556f02c4751267faa09a7c3626e14b5e424279e4e6de13f43", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7d14e0b6d994eba556f02c4751267faa09a7c3626e14b5e424279e4e6de13f43", kill_on_drop: false }`
[INFO] [stdout] 7d14e0b6d994eba556f02c4751267faa09a7c3626e14b5e424279e4e6de13f43
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b6e824238866c119920a39f3cbaf2707508ff1cdd497c14e313c6e9968dbe0a7
[INFO] running `Command { std: "docker" "start" "-a" "b6e824238866c119920a39f3cbaf2707508ff1cdd497c14e313c6e9968dbe0a7", kill_on_drop: false }`
[INFO] [stdout] warning: unused import: `std::net::TcpStream`
[INFO] [stdout]  --> src/model.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::TcpStream;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/model.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::path::{PathBuf, Path};
[INFO] [stdout]   |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/message.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/message.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/message.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::UdpSocket`
[INFO] [stdout]  --> src/message.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::net::UdpSocket;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DecoderTrap`, `EncoderTrap`, and `Encoding`
[INFO] [stdout]  --> src/message.rs:5:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `encoding::all::GB18030`
[INFO] [stdout]  --> src/message.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use encoding::all::GB18030;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `trace` and `warn`
[INFO] [stdout]  --> src/message.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 | use log::{info, trace, warn};
[INFO] [stdout]   |                 ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IPMSG_BROADCASTOPT`, `IPMSG_BR_ENTRY`, `IPMSG_DEFAULT_PORT`, and `self`
[INFO] [stdout]   --> src/message.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::constant::{self, IPMSG_SENDMSG, IPMSG_FILEATTACHOPT, IPMSG_DEFAULT_PORT, IPMSG_BR_ENTRY, IPMSG_BROADCASTOPT};
[INFO] [stdout]    |                       ^^^^                                      ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DecoderTrap`
[INFO] [stdout]  --> src/util.rs:1:39
[INFO] [stdout]   |
[INFO] [stdout] 1 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]   |                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/util.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::{Duration, SystemTime};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `any`, `choice`, `optional`, `sep_by`, `skip_many1`, and `skip_many`
[INFO] [stdout]  --> src/util.rs:9:44
[INFO] [stdout]   |
[INFO] [stdout] 9 | use combine::{many1, many, Parser, Stream, sep_by, token, skip_many, skip_many1, satisfy, choice, optional, any};
[INFO] [stdout]   |                                            ^^^^^^         ^^^^^^^^^  ^^^^^^^^^^           ^^^^^^  ^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `take_until_range`, `take_while1`, and `take_while`
[INFO] [stdout]   --> src/util.rs:10:30
[INFO] [stdout]    |
[INFO] [stdout] 10 | use combine::parser::range::{take_while, take_while1, take_until_range};
[INFO] [stdout]    |                              ^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `char`, `digit`, `letter`, and `space`
[INFO] [stdout]   --> src/util.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 | use combine::parser::char::{letter, space, digit, char};
[INFO] [stdout]    |                             ^^^^^^  ^^^^^  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AboutDialog`, `ButtonBox`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `Label`, `MenuBar`, `MenuItem`, `Menu`, `Orientation`, `ReliefStyle`, `ScrolledWindow`, `Widget`, `WindowPosition`, and `WindowType`
[INFO] [stdout]  --> src/chat_window.rs:3:29
[INFO] [stdout]   |
[INFO] [stdout] 3 |     self, CellRendererText, AboutDialog, CheckMenuItem, IconSize, Image, Label, Menu, MenuBar, MenuItem, Window,
[INFO] [stdout]   |                             ^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^  ^^^^^  ^^^^  ^^^^^^^  ^^^^^^^^
[INFO] [stdout] 4 |     WindowPosition, WindowType, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^  ^^^^^^^^^^                                                ^^^^          ^^^^^^^^^^^
[INFO] [stdout] 5 |     ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, ButtonBox, WrapMode
[INFO] [stdout]   |     ^^^^^^^^^^^  ^^^^^^            ^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/chat_window.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]  --> src/chat_window.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::sync::mpsc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> src/chat_window.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]   --> src/chat_window.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::path::{PathBuf, Path};
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `ReadDir`
[INFO] [stdout]   --> src/chat_window.rs:12:21
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::fs::{self, File, Metadata, ReadDir};
[INFO] [stdout]    |                     ^^^^            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `SystemTime`, and `UNIX_EPOCH`
[INFO] [stdout]   --> src/chat_window.rs:13:23
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::time::{self, Duration, SystemTime, UNIX_EPOCH};
[INFO] [stdout]    |                       ^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `trace` and `warn`
[INFO] [stdout]   --> src/chat_window.rs:15:17
[INFO] [stdout]    |
[INFO] [stdout] 15 | use log::{info, trace, warn};
[INFO] [stdout]    |                 ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Packet` and `ShareInfo`
[INFO] [stdout]   --> src/chat_window.rs:17:26
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::model::{self, Packet, ShareInfo, ReceivedSimpleFileInfo};
[INFO] [stdout]    |                          ^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::constant`
[INFO] [stdout]   --> src/chat_window.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::constant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ReadDir`
[INFO] [stdout]  --> src/download.rs:8:37
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::fs::{self, File, Metadata, ReadDir};
[INFO] [stdout]   |                                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EncoderTrap`
[INFO] [stdout]   --> src/download.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]    |                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `trace` and `warn`
[INFO] [stdout]   --> src/download.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 | use log::{info, trace, warn, debug};
[INFO] [stdout]    |                 ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FileInfo`
[INFO] [stdout]   --> src/download.rs:18:20
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::model::{FileInfo, ReceivedSimpleFileInfo};
[INFO] [stdout]    |                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/download.rs:167:65
[INFO] [stdout]     |
[INFO] [stdout] 167 | ...   let header_context_str = read_bytes(stream, (header_size - 1 - header_size_str.as_bytes().len() as u64));//-1是减去的那个冒号
[INFO] [stdout]     |                                                   ^                                                         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 167 -                     let header_context_str = read_bytes(stream, (header_size - 1 - header_size_str.as_bytes().len() as u64));//-1是减去的那个冒号
[INFO] [stdout] 167 +                     let header_context_str = read_bytes(stream, header_size - 1 - header_size_str.as_bytes().len() as u64 );//-1是减去的那个冒号
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EncoderTrap`
[INFO] [stdout]  --> src/events/model.rs:4:26
[INFO] [stdout]   |
[INFO] [stdout] 4 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]   |                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `trace`, and `warn`
[INFO] [stdout]  --> src/events/model.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use log::{info, trace, warn, debug, error};
[INFO] [stdout]   |                 ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FileInfo`
[INFO] [stdout]   --> src/events/model.rs:11:79
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::model::{Packet, User, ReceivedSimpleFileInfo, ReceivedPacketInner, FileInfo, ShareInfo};
[INFO] [stdout]    |                                                                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IPMSG_FILEATTACHOPT` and `IPMSG_SENDMSG`
[INFO] [stdout]   --> src/events/model.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::constant::{self, IPMSG_SENDMSG, IPMSG_FILEATTACHOPT, IPMSG_DEFAULT_PORT, IPMSG_BR_ENTRY, IPMSG_BROADCASTOPT, IPMSG_LIMITE...
[INFO] [stdout]    |                             ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/events/model.rs:192:9
[INFO] [stdout]     |
[INFO] [stdout] 192 |         ///扩展段 用户名|用户组
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 193 |         let ext_vec = extstr.splitn(2, |c| c == ':').collect::<Vec<&str>>();
[INFO] [stdout]     |         -------------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FileInfo` and `ReceivedPacketInner`
[INFO] [stdout]  --> src/events/ui.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::model::{User, ReceivedPacketInner, Packet, ReceivedSimpleFileInfo, FileInfo, ShareInfo};
[INFO] [stdout]   |                          ^^^^^^^^^^^^^^^^^^^                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ReadDir`
[INFO] [stdout]  --> src/fileserver.rs:7:37
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fs::{self, File, Metadata, ReadDir};
[INFO] [stdout]   |                                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EncoderTrap`
[INFO] [stdout]  --> src/fileserver.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]   |                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `trace`, and `warn`
[INFO] [stdout]   --> src/fileserver.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | use log::{info, trace, warn, debug};
[INFO] [stdout]    |                 ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FileInfo` and `Packet`
[INFO] [stdout]   --> src/fileserver.rs:13:20
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::model::{FileInfo, Packet, ShareInfo};
[INFO] [stdout]    |                    ^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::prelude::*`
[INFO] [stdout]  --> src/main_win.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]  --> src/main_win.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::{TcpListener, TcpStream};
[INFO] [stdout]   |                ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/main_win.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/main_win.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/main_win.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]  --> src/main_win.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::mpsc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, `SocketAddrV4`, `SocketAddrV6`, `SocketAddr`, and `ToSocketAddrs`
[INFO] [stdout]  --> src/main_win.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6, Ipv4Addr, Ipv6Addr, ToSocketAddrs};
[INFO] [stdout]   |                ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::args`
[INFO] [stdout]   --> src/main_win.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::env::args;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `human_panic::setup_panic`
[INFO] [stdout]   --> src/main_win.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use human_panic::setup_panic;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gio::ApplicationFlags`
[INFO] [stdout]   --> src/main_win.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use gio::ApplicationFlags;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Builder`, `Button`, `CellRendererProgress`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `ListBoxRow`, `ListBox`, `Orientation`, `ReliefStyle`, `TextView`, `Widget`, `WindowPosition`, `WindowType`, and `Window`
[INFO] [stdout]   --> src/main_win.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 |     self, CellRendererText, CellRendererProgress, AboutDialog, CheckMenuItem, IconSize, Image, Label, Menu, MenuBar, MenuItem, Window,
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^               ^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^                                  ^^^^^^
[INFO] [stdout] 16 |     WindowPosition, WindowType, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^  ^^^^^^^^^^                                       ^^^^^^^  ^^^^  ^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 17 |     ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, ListBox, ListBoxRow, Application
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^  ^^^^^^^^  ^^^^^                  ^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Receiver`
[INFO] [stdout]   --> src/main_win.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | use glib::{Receiver, MainContext};
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `trace`, and `warn`
[INFO] [stdout]   --> src/main_win.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 | use log::{info, trace, warn, debug};
[INFO] [stdout]    |                 ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ErrMsg`, `FileInfo`, `OperUser`, `Operate`, `Packet`, `ReceivedPacketInner`, `ReceivedSimpleFileInfo`, `ShareInfo`, `User`, and `self`
[INFO] [stdout]   --> src/main_win.rs:24:20
[INFO] [stdout]    |
[INFO] [stdout] 24 | use crate::model::{self, User, OperUser, Operate, ShareInfo, Packet, FileInfo, ReceivedSimpleFileInfo, ReceivedPacketInner, ErrMsg};
[INFO] [stdout]    |                    ^^^^  ^^^^  ^^^^^^^^  ^^^^^^^  ^^^^^^^^^  ^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::prelude::*`
[INFO] [stdout]  --> src/app.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]  --> src/app.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::{TcpListener, TcpStream};
[INFO] [stdout]   |                ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/app.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/app.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/app.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]  --> src/app.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::mpsc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/app.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::UdpSocket`
[INFO] [stdout]  --> src/app.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::net::UdpSocket;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, `SocketAddrV4`, `SocketAddrV6`, `SocketAddr`, and `ToSocketAddrs`
[INFO] [stdout]  --> src/app.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6, Ipv4Addr, Ipv6Addr, ToSocketAddrs};
[INFO] [stdout]   |                ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::args`
[INFO] [stdout]   --> src/app.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::env::args;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]   --> src/app.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     setup_panic!();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout]    = note: this warning originates in the macro `setup_panic` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/download.rs:40:52
[INFO] [stdout]    |
[INFO] [stdout] 40 |             DownLoadError::IoError(ref err) => err.description(),
[INFO] [stdout]    |                                                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/message.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 |     for (i, file) in (&files).iter().enumerate() {
[INFO] [stdout]    |          ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]   --> src/util.rs:39:23
[INFO] [stdout]    |
[INFO] [stdout] 39 |         many(satisfy(|c| true)),
[INFO] [stdout]    |                       ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/chat_window.rs:77:26
[INFO] [stdout]    |
[INFO] [stdout] 77 |         let (start_iter, mut end_iter) = text_view_presend.buffer().unwrap().bounds();
[INFO] [stdout]    |                          ----^^^^^^^^
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `local_time`
[INFO] [stdout]    --> src/chat_window.rs:194:17
[INFO] [stdout]     |
[INFO] [stdout] 194 |             let local_time = chrono_time.with_timezone(&::chrono::Local);
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `local_time`
[INFO] [stdout]    --> src/chat_window.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |             let local_time = chrono_time.with_timezone(&::chrono::Local);
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_path`
[INFO] [stdout]   --> src/chat_window.rs:88:111
[INFO] [stdout]    |
[INFO] [stdout] 88 | ...ip => move |tree_view, tree_path, tree_view_column| {
[INFO] [stdout]    |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_view_column`
[INFO] [stdout]   --> src/chat_window.rs:88:122
[INFO] [stdout]    |
[INFO] [stdout] 88 | ...iew, tree_path, tree_view_column| {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_view_column`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `text_view_history_clone`
[INFO] [stdout]   --> src/chat_window.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |     let text_view_history_clone = text_view_history.clone();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_text_view_history_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `received_store`
[INFO] [stdout]    --> src/chat_window.rs:251:25
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn modify_received_list(received_store :Option<ListStore>, received_files: Arc<RefCell<Vec<ReceivedSimpleFileInfo>>>) -> ::glib::Co...
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_received_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `received_files`
[INFO] [stdout]    --> src/chat_window.rs:251:60
[INFO] [stdout]     |
[INFO] [stdout] 251 | ...ption<ListStore>, received_files: Arc<RefCell<Vec<ReceivedSimpleFileInfo>>>) -> ::glib::Continue {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_received_files`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/download.rs:65:16
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub fn run(mut self, file_info: ReceivedSimpleFileInfo, save_path: PathBuf, download_ip: String) {
[INFO] [stdout]    |                ----^^^^
[INFO] [stdout]    |                |
[INFO] [stdout]    |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:136:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let mut base_file_location = path.to_path_buf();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut buffer = BufReader::new(stream);
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |         let mut path_infos = PathInfos{
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `metadata`
[INFO] [stdout]    --> src/download.rs:124:9
[INFO] [stdout]     |
[INFO] [stdout] 124 |     let metadata: Metadata = fs::metadata(path)?;
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path_info`
[INFO] [stdout]    --> src/download.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |         for path_info in path_infos {
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_path_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `opt`
[INFO] [stdout]    --> src/download.rs:172:25
[INFO] [stdout]     |
[INFO] [stdout] 172 |                     let opt = constant::get_opt(file_attr);
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_opt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:202:19
[INFO] [stdout]     |
[INFO] [stdout] 202 | fn read_delimiter(mut stream : & mut BufReader<TcpStream>) -> Result<Option<String>, DownLoadError> {
[INFO] [stdout]     |                   ----^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:217:15
[INFO] [stdout]     |
[INFO] [stdout] 217 | fn read_bytes(mut stream : & mut BufReader<TcpStream>, len: u64) -> String {
[INFO] [stdout]     |               ----^^^^^^
[INFO] [stdout]     |               |
[INFO] [stdout]     |               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:224:23
[INFO] [stdout]     |
[INFO] [stdout] 224 | fn read_bytes_to_file(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stdout]     |                       ----^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:238:30
[INFO] [stdout]     |
[INFO] [stdout] 238 | fn read_bytes_to_file_unsize(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stdout]     |                              ----^^^^^^
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `len`
[INFO] [stdout]    --> src/download.rs:238:71
[INFO] [stdout]     |
[INFO] [stdout] 238 | fn read_bytes_to_file_unsize(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stdout]     |                                                                       ^^^ help: if this is intentional, prefix it with an underscore: `_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg_str`
[INFO] [stdout]    --> src/events/model.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let msg_str = if ext_vec.len() > 0 { ext_vec[0] } else { "" };
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_msg_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ntime`
[INFO] [stdout]    --> src/events/model.rs:240:29
[INFO] [stdout]     |
[INFO] [stdout] 240 |                         let ntime = NaiveDateTime::from_timestamp(mmtime_num, 0);
[INFO] [stdout]     |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_ntime`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/fileserver.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |                     let mut tmp_buf = &buf[0..byte_size];
[INFO] [stdout]    |                         ----^^^^^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/fileserver.rs:75:58
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn process_dir(pool_tmp: Arc<Mutex<Vec<ShareInfo>>>, mut stream_echo: TcpStream, ext_str: String) -> () {
[INFO] [stdout]    |                                                          ----^^^^^^^^^^^
[INFO] [stdout]    |                                                          |
[INFO] [stdout]    |                                                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `search_result` is never read
[INFO] [stdout]   --> src/fileserver.rs:81:56
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let mut search_result: Option<ShareInfo> = Option::None;
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/fileserver.rs:99:60
[INFO] [stdout]    |
[INFO] [stdout] 99 |     fn process_file(pool_tmp: &Arc<Mutex<Vec<ShareInfo>>>, mut stream_echo: &mut TcpStream, ext_str: String) -> () {
[INFO] [stdout]    |                                                            ----^^^^^^^^^^^
[INFO] [stdout]    |                                                            |
[INFO] [stdout]    |                                                            help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/fileserver.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |             let offset = file_attr[2].parse::<u32>().unwrap();
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `search_result` is never read
[INFO] [stdout]    --> src/fileserver.rs:106:56
[INFO] [stdout]     |
[INFO] [stdout] 106 |             let mut search_result: Option<ShareInfo> = Option::None;
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main_win.rs:266:17
[INFO] [stdout]     |
[INFO] [stdout] 266 |                 _ => {
[INFO] [stdout]     |                 ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/main_win.rs:266:17
[INFO] [stdout]     |
[INFO] [stdout] 129 |                 UiEvent::OpenOrReOpenChatWindow {name, ip} => {
[INFO] [stdout]     |                 ------------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 139 |                 UiEvent::UpdateUserListFooterStatus(text) => {
[INFO] [stdout]     |                 ----------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 142 |                 UiEvent::UserListRemoveOne(ip) => {
[INFO] [stdout]     |                 ------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 164 |                 UiEvent::UserListAddOne(income_user) => {
[INFO] [stdout]     |                 ------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 266 |                 _ => {
[INFO] [stdout]     |                 ^ ...and 5 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `win`
[INFO] [stdout]    --> src/main_win.rs:131:30
[INFO] [stdout]     |
[INFO] [stdout] 131 |                         Some(win) => {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `win`
[INFO] [stdout]    --> src/main_win.rs:193:30
[INFO] [stdout]     |
[INFO] [stdout] 193 |                         Some(win) => {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `packet`
[INFO] [stdout]    --> src/main_win.rs:200:62
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 UiEvent::OpenOrReOpenChatWindow1 { name, ip, packet} => {
[INFO] [stdout]     |                                                              ^^^^^^ help: try ignoring the field: `packet: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `win`
[INFO] [stdout]    --> src/main_win.rs:202:30
[INFO] [stdout]     |
[INFO] [stdout] 202 |                         Some(win) => {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `files`
[INFO] [stdout]    --> src/main_win.rs:212:67
[INFO] [stdout]     |
[INFO] [stdout] 212 |                 UiEvent::DisplaySelfSendMsgInHis {to_ip, context, files} => {
[INFO] [stdout]     |                                                                   ^^^^^ help: try ignoring the field: `files: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `his_start_iter`
[INFO] [stdout]    --> src/main_win.rs:215:34
[INFO] [stdout]     |
[INFO] [stdout] 215 | ...                   let (his_start_iter, mut his_end_iter) = win.his_view.buffer().unwrap().bounds();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_his_start_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `his_start_iter`
[INFO] [stdout]    --> src/main_win.rs:225:34
[INFO] [stdout]     |
[INFO] [stdout] 225 | ...                   let (his_start_iter, mut his_end_iter) = win.his_view.buffer().unwrap().bounds();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_his_start_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_path`
[INFO] [stdout]    --> src/main_win.rs:106:84
[INFO] [stdout]     |
[INFO] [stdout] 106 |         tree.connect_row_activated(clone!(@strong model_sender => move |tree_view, tree_path, tree_view_column| {
[INFO] [stdout]     |                                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_view_column`
[INFO] [stdout]    --> src/main_win.rs:106:95
[INFO] [stdout]     |
[INFO] [stdout] 106 |         tree.connect_row_activated(clone!(@strong model_sender => move |tree_view, tree_path, tree_view_column| {
[INFO] [stdout]     |                                                                                               ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_view_column`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_BR_ISGETLIST` is never used
[INFO] [stdout]   --> src/constant.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const IPMSG_BR_ISGETLIST: u32 = 0x00000010;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_OKGETLIST` is never used
[INFO] [stdout]   --> src/constant.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const IPMSG_OKGETLIST: u32 = 0x00000011;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_GETLIST` is never used
[INFO] [stdout]   --> src/constant.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const IPMSG_GETLIST: u32 = 0x00000012;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ANSLIST` is never used
[INFO] [stdout]   --> src/constant.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const IPMSG_ANSLIST: u32 = 0x00000013;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_BR_ISGETLIST2` is never used
[INFO] [stdout]   --> src/constant.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const IPMSG_BR_ISGETLIST2: u32 = 0x00000018;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_READMSG` is never used
[INFO] [stdout]   --> src/constant.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const IPMSG_READMSG: u32 = 0x00000030;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_DELMSG` is never used
[INFO] [stdout]   --> src/constant.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const IPMSG_DELMSG: u32 = 0x00000031;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ANSREADMSG` is never used
[INFO] [stdout]   --> src/constant.rs:42:11
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub const IPMSG_ANSREADMSG: u32 = 0x00000032;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_GETINFO` is never used
[INFO] [stdout]   --> src/constant.rs:44:11
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub const IPMSG_GETINFO: u32 = 0x00000040;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_SENDINFO` is never used
[INFO] [stdout]   --> src/constant.rs:46:11
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub const IPMSG_SENDINFO: u32 = 0x00000041;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_GETABSENCEINFO` is never used
[INFO] [stdout]   --> src/constant.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub const IPMSG_GETABSENCEINFO: u32 = 0x00000050;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_SENDABSENCEINFO` is never used
[INFO] [stdout]   --> src/constant.rs:51:11
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub const IPMSG_SENDABSENCEINFO: u32 = 0x00000051;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_RELEASEFILES` is never used
[INFO] [stdout]   --> src/constant.rs:56:11
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub const IPMSG_RELEASEFILES: u32 = 0x00000061;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_GETPUBKEY` is never used
[INFO] [stdout]   --> src/constant.rs:61:11
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub const IPMSG_GETPUBKEY: u32 = 0x00000072;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ANSPUBKEY` is never used
[INFO] [stdout]   --> src/constant.rs:63:11
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub const IPMSG_ANSPUBKEY: u32 = 0x00000073;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_SYMLINK` is never used
[INFO] [stdout]   --> src/constant.rs:69:11
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub const IPMSG_FILE_SYMLINK: u32 = 0x00000004;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_CDEV` is never used
[INFO] [stdout]   --> src/constant.rs:70:11
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub const IPMSG_FILE_CDEV: u32 = 0x00000005;// for UNIX
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_BDEV` is never used
[INFO] [stdout]   --> src/constant.rs:71:11
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub const IPMSG_FILE_BDEV: u32 = 0x00000006;// for UNIX
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_FIFO` is never used
[INFO] [stdout]   --> src/constant.rs:72:11
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub const IPMSG_FILE_FIFO: u32 = 0x00000007;// for UNIX
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_RESFORK` is never used
[INFO] [stdout]   --> src/constant.rs:73:11
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub const IPMSG_FILE_RESFORK: u32 = 0x00000010;// for mac
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_RONLYOPT` is never used
[INFO] [stdout]   --> src/constant.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub const IPMSG_FILE_RONLYOPT: u32 = 0x00000100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_HIDDENOPT` is never used
[INFO] [stdout]   --> src/constant.rs:77:11
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub const IPMSG_FILE_HIDDENOPT: u32 = 0x00001000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_EXHIDDENOPT` is never used
[INFO] [stdout]   --> src/constant.rs:78:11
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub const IPMSG_FILE_EXHIDDENOPT: u32 = 0x00002000;// for MacOS X
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_ARCHIVEOPT` is never used
[INFO] [stdout]   --> src/constant.rs:79:11
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub const IPMSG_FILE_ARCHIVEOPT: u32 = 0x00004000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_SYSTEMOPT` is never used
[INFO] [stdout]   --> src/constant.rs:80:11
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub const IPMSG_FILE_SYSTEMOPT: u32 = 0x00008000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HOSTLIST_SEPARATOR` is never used
[INFO] [stdout]   --> src/constant.rs:87:11
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub const HOSTLIST_SEPARATOR: char = '\u{7}';
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ABSENCEOPT` is never used
[INFO] [stdout]   --> src/constant.rs:91:11
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub const IPMSG_ABSENCEOPT: u32 = 0x00000100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_SERVEROPT` is never used
[INFO] [stdout]   --> src/constant.rs:93:11
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub const IPMSG_SERVEROPT: u32 = 0x00000200;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_DIALUPOPT` is never used
[INFO] [stdout]   --> src/constant.rs:95:11
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub const IPMSG_DIALUPOPT: u32 = 0x00010000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ENCRYPTOPT` is never used
[INFO] [stdout]   --> src/constant.rs:99:11
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub const IPMSG_ENCRYPTOPT: u32 = 0x00400000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_UTF8OPT` is never used
[INFO] [stdout]    --> src/constant.rs:101:11
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub const IPMSG_UTF8OPT: u32 = 0x00800000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_CAPUTF8OPT` is never used
[INFO] [stdout]    --> src/constant.rs:103:11
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub const IPMSG_CAPUTF8OPT: u32 = 0x01000000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ENCEXTMSGOPT` is never used
[INFO] [stdout]    --> src/constant.rs:105:11
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub const IPMSG_ENCEXTMSGOPT: u32 = 0x04000000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_CLIPBOARDOPT` is never used
[INFO] [stdout]    --> src/constant.rs:107:11
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub const IPMSG_CLIPBOARDOPT: u32 = 0x08000000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_CAPFILEENC_OBSLT` is never used
[INFO] [stdout]    --> src/constant.rs:108:11
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub const IPMSG_CAPFILEENC_OBSLT: u32 = 0x00001000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_CAPFILEENCOPT` is never used
[INFO] [stdout]    --> src/constant.rs:109:11
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub const IPMSG_CAPFILEENCOPT: u32 = 0x00040000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_MULTICASTOPT` is never used
[INFO] [stdout]    --> src/constant.rs:119:11
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub const IPMSG_MULTICASTOPT: u32 = 0x00000800;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_AUTORETOPT` is never used
[INFO] [stdout]    --> src/constant.rs:121:11
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub const IPMSG_AUTORETOPT: u32 = 0x00002000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_RETRYOPT` is never used
[INFO] [stdout]    --> src/constant.rs:123:11
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub const IPMSG_RETRYOPT: u32 = 0x00004000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_PASSWORDOPT` is never used
[INFO] [stdout]    --> src/constant.rs:125:11
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub const IPMSG_PASSWORDOPT: u32 = 0x00008000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_NOLOGOPT` is never used
[INFO] [stdout]    --> src/constant.rs:127:11
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub const IPMSG_NOLOGOPT: u32 = 0x00020000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_NOADDLISTOPT` is never used
[INFO] [stdout]    --> src/constant.rs:129:11
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub const IPMSG_NOADDLISTOPT: u32 = 0x00080000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_READCHECKOPT` is never used
[INFO] [stdout]    --> src/constant.rs:131:11
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub const IPMSG_READCHECKOPT: u32 = 0x00100000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_SECRETEXOPT` is never used
[INFO] [stdout]    --> src/constant.rs:132:11
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub const IPMSG_SECRETEXOPT: u32 = IPMSG_READCHECKOPT|IPMSG_SECRETOPT;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_local_ip` is never used
[INFO] [stdout]    --> src/constant.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub fn get_local_ip() -> Option<IpAddr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ExtStr` is never used
[INFO] [stdout]   --> src/model.rs:26:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | type ExtStr = String;
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExtMsg` is never used
[INFO] [stdout]   --> src/model.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | trait ExtMsg {
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PacketBuilder` is never constructed
[INFO] [stdout]   --> src/model.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct PacketBuilder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `command` and `command_opt` are never used
[INFO] [stdout]   --> src/model.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl PacketBuilder {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 49 |     ///命令
[INFO] [stdout] 50 |     fn command(command_no: u32) -> PacketBuilder {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     fn command_opt(mut self, ext_command_no: u32) -> PacketBuilder {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Operate` is never used
[INFO] [stdout]    --> src/model.rs:148:10
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub enum Operate {
[INFO] [stdout]     |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OperUser` is never constructed
[INFO] [stdout]    --> src/model.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub struct OperUser{
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/model.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | impl OperUser {
[INFO] [stdout]     | ------------- associated function in this implementation
[INFO] [stdout] 159 |     pub fn new(user: User, oper :Operate) -> OperUser{
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `host`, `host_cnt`, `file_cnt`, and `attach_time` are never read
[INFO] [stdout]    --> src/model.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub struct ShareInfo {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub host: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 173 |     // 要发送的目的机器个数
[INFO] [stdout] 174 |     pub host_cnt: u32,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub file_cnt: u32,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 180 |     //文件添加时间
[INFO] [stdout] 181 |     pub attach_time: NaiveTime,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ShareInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `atime`, and `crtime` are never read
[INFO] [stdout]    --> src/model.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub struct FileInfo {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub atime: NaiveTime,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 199 |     //文件创建时间
[INFO] [stdout] 200 |     pub crtime: NaiveTime
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FileInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `opt_files` is never used
[INFO] [stdout]    --> src/model.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | impl ReceivedPacketInner {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn opt_files(mut self, opt_files: Vec<ReceivedSimpleFileInfo>) -> ReceivedPacketInner {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ErrMsg` is never constructed
[INFO] [stdout]    --> src/model.rs:259:12
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub struct ErrMsg {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `win`, `ip`, and `pre_send_files` are never read
[INFO] [stdout]   --> src/chat_window.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct ChatWindow {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 28 |     pub win :Window,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 29 |     pub his_view :TextView,
[INFO] [stdout] 30 |     pub ip :String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 31 |     pub pre_send_files :Arc<RefCell<Vec<model::FileInfo>>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChatWindow` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modify_received_list` is never used
[INFO] [stdout]    --> src/chat_window.rs:251:4
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn modify_received_list(received_store :Option<ListStore>, received_files: Arc<RefCell<Vec<ReceivedSimpleFileInfo>>>) -> ::glib::Co...
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `InValidType` is never constructed
[INFO] [stdout]   --> src/download.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum DownLoadError {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] 22 |     IoError(io::Error),
[INFO] [stdout] 23 |     InValidType,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DownLoadError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_bytes_to_file_unsize` is never used
[INFO] [stdout]    --> src/download.rs:238:4
[INFO] [stdout]     |
[INFO] [stdout] 238 | fn read_bytes_to_file_unsize(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PutInTcpFilePool` is never constructed
[INFO] [stdout]   --> src/events/model.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum ModelEvent {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 30 |     PutInTcpFilePool(),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `hostname` should have an upper case name
[INFO] [stdout]    --> src/constant.rs:161:20
[INFO] [stdout]     |
[INFO] [stdout] 161 |     pub static ref hostname: String = get_host_name();
[INFO] [stdout]     |                    ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 161 -     pub static ref hostname: String = get_host_name();
[INFO] [stdout] 161 +     pub static ref HOSTNAME: String = get_host_name();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `localip` should have an upper case name
[INFO] [stdout]    --> src/constant.rs:162:20
[INFO] [stdout]     |
[INFO] [stdout] 162 |     pub static ref localip: String = get_local_ip().unwrap().to_string();
[INFO] [stdout]     |                    ^^^^^^^ help: convert the identifier to upper case: `LOCALIP`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `addr` should have an upper case name
[INFO] [stdout]    --> src/constant.rs:163:20
[INFO] [stdout]     |
[INFO] [stdout] 163 |     pub static ref addr: String = format!("{}{}", "0.0.0.0:", IPMSG_DEFAULT_PORT);
[INFO] [stdout]     |                    ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 163 -     pub static ref addr: String = format!("{}{}", "0.0.0.0:", IPMSG_DEFAULT_PORT);
[INFO] [stdout] 163 +     pub static ref ADDR: String = format!("{}{}", "0.0.0.0:", IPMSG_DEFAULT_PORT);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]   --> src/chat_window.rs:83:9
[INFO] [stdout]    |
[INFO] [stdout] 83 |         &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 83 |         let _ = &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/chat_window.rs:106:17
[INFO] [stdout]     |
[INFO] [stdout] 106 | /                 model_sender.send(ModelEvent::PutDownloadTaskInPool{ file: ReceivedSimpleFileInfo{
[INFO] [stdout] 107 | |                     file_id: fid,
[INFO] [stdout] 108 | |                     packet_id: pid,
[INFO] [stdout] 109 | |                     name: name,
[INFO] [stdout] ...   |
[INFO] [stdout] 112 | |                     mtime
[INFO] [stdout] 113 | |                 }, save_base_path, download_ip: host_ip.clone() });
[INFO] [stdout]     | |__________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 106 |                 let _ = model_sender.send(ModelEvent::PutDownloadTaskInPool{ file: ReceivedSimpleFileInfo{
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/chat_window.rs:123:9
[INFO] [stdout]     |
[INFO] [stdout] 123 |         &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 123 |         let _ = &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/download.rs:74:21
[INFO] [stdout]    |
[INFO] [stdout] 74 |                     sender.send(ModelEvent::DownloadIsBusy{ file: file_info });
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 74 |                     let _ = sender.send(ModelEvent::DownloadIsBusy{ file: file_info });
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/download.rs:92:25
[INFO] [stdout]    |
[INFO] [stdout] 92 | ...   sender.send(ModelEvent::RemoveDownloadTaskInPool{ packet_id: file_info.packet_id, file_id: file_info.file_id, download_ip });
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 92 |                         let _ = sender.send(ModelEvent::RemoveDownloadTaskInPool{ packet_id: file_info.packet_id, file_id: file_info.file_id, download_ip });
[INFO] [stdout]    |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/download.rs:220:5
[INFO] [stdout]     |
[INFO] [stdout] 220 |     handler.read_to_end(&mut s_buffer);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 220 |     let _ = handler.read_to_end(&mut s_buffer);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/download.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 |         f.write(&buf[..bytes_read]);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 231 |         let _ = f.write(&buf[..bytes_read]);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/events/model.rs:187:9
[INFO] [stdout]     |
[INFO] [stdout] 187 |         model_event_sender.send(ModelEvent::RecMsgReply{packet: recvmsg, from_ip: (&packet).ip.to_owned()});
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 187 |         let _ = model_event_sender.send(ModelEvent::RecMsgReply{packet: recvmsg, from_ip: (&packet).ip.to_owned()});
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/events/model.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |         model_event_sender.send(ModelEvent::BroadcastExit((&packet).sender_host.to_owned()));
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 190 |         let _ = model_event_sender.send(ModelEvent::BroadcastExit((&packet).sender_host.to_owned()));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/events/model.rs:209:9
[INFO] [stdout]     |
[INFO] [stdout] 209 |         model_event_sender.send(ModelEvent::RecOnlineMsgReply{packet: ansentry_packet, from_user: user});
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 209 |         let _ = model_event_sender.send(ModelEvent::RecOnlineMsgReply{packet: ansentry_packet, from_user: user});
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling raudient v0.4.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/events/model.rs:212:9
[INFO] [stdout]     |
[INFO] [stdout] 212 |         model_event_sender.send(ModelEvent::NotifyOnline{user});
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 212 |         let _ = model_event_sender.send(ModelEvent::NotifyOnline{user});
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]   --> src/main_win.rs:45:17
[INFO] [stdout]    |
[INFO] [stdout] 45 |                 &window.destroy();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 45 |                 let _ = &window.destroy();
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]   --> src/main_win.rs:79:17
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 &window.destroy();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 let _ = &window.destroy();
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main_win.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |         main_context.acquire();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let _ = main_context.acquire();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/main_win.rs:135:29
[INFO] [stdout]     |
[INFO] [stdout] 135 | ...                   &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |                             let _ = &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/main_win.rs:140:21
[INFO] [stdout]     |
[INFO] [stdout] 140 |                     &label.set_text(&format!("-- {} --", text));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 140 |                     let _ = &label.set_text(&format!("-- {} --", text));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/main_win.rs:194:29
[INFO] [stdout]     |
[INFO] [stdout] 194 | ...                   &chat_windows.remove(&ip);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 194 |                             let _ = &chat_windows.remove(&ip);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/main_win.rs:208:29
[INFO] [stdout]     |
[INFO] [stdout] 208 | ...                   &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 208 |                             let _ = &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stdout]   --> src/app.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     drop(env_logger::init());
[INFO] [stdout]    |     ^^^^^------------------^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          argument has type `()`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dropping_copy_types)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]    |
[INFO] [stdout] 20 -     drop(env_logger::init());
[INFO] [stdout] 20 +     let _ = env_logger::init();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::TcpStream`
[INFO] [stdout]  --> src/model.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::net::TcpStream;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/model.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::path::{PathBuf, Path};
[INFO] [stdout]   |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/message.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/message.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/message.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::UdpSocket`
[INFO] [stdout]  --> src/message.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::net::UdpSocket;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DecoderTrap`, `EncoderTrap`, and `Encoding`
[INFO] [stdout]  --> src/message.rs:5:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `encoding::all::GB18030`
[INFO] [stdout]  --> src/message.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use encoding::all::GB18030;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `trace` and `warn`
[INFO] [stdout]  --> src/message.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 | use log::{info, trace, warn};
[INFO] [stdout]   |                 ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IPMSG_BROADCASTOPT`, `IPMSG_BR_ENTRY`, `IPMSG_DEFAULT_PORT`, and `self`
[INFO] [stdout]   --> src/message.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::constant::{self, IPMSG_SENDMSG, IPMSG_FILEATTACHOPT, IPMSG_DEFAULT_PORT, IPMSG_BR_ENTRY, IPMSG_BROADCASTOPT};
[INFO] [stdout]    |                       ^^^^                                      ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DecoderTrap`
[INFO] [stdout]  --> src/util.rs:1:39
[INFO] [stdout]   |
[INFO] [stdout] 1 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]   |                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/util.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::{Duration, SystemTime};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `any`, `choice`, `optional`, `sep_by`, `skip_many1`, and `skip_many`
[INFO] [stdout]  --> src/util.rs:9:44
[INFO] [stdout]   |
[INFO] [stdout] 9 | use combine::{many1, many, Parser, Stream, sep_by, token, skip_many, skip_many1, satisfy, choice, optional, any};
[INFO] [stdout]   |                                            ^^^^^^         ^^^^^^^^^  ^^^^^^^^^^           ^^^^^^  ^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `take_until_range`, `take_while1`, and `take_while`
[INFO] [stdout]   --> src/util.rs:10:30
[INFO] [stdout]    |
[INFO] [stdout] 10 | use combine::parser::range::{take_while, take_while1, take_until_range};
[INFO] [stdout]    |                              ^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `char`, `digit`, `letter`, and `space`
[INFO] [stdout]   --> src/util.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 | use combine::parser::char::{letter, space, digit, char};
[INFO] [stdout]    |                             ^^^^^^  ^^^^^  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AboutDialog`, `ButtonBox`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `Label`, `MenuBar`, `MenuItem`, `Menu`, `Orientation`, `ReliefStyle`, `ScrolledWindow`, `Widget`, `WindowPosition`, and `WindowType`
[INFO] [stdout]  --> src/chat_window.rs:3:29
[INFO] [stdout]   |
[INFO] [stdout] 3 |     self, CellRendererText, AboutDialog, CheckMenuItem, IconSize, Image, Label, Menu, MenuBar, MenuItem, Window,
[INFO] [stdout]   |                             ^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^  ^^^^^  ^^^^  ^^^^^^^  ^^^^^^^^
[INFO] [stdout] 4 |     WindowPosition, WindowType, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^  ^^^^^^^^^^                                                ^^^^          ^^^^^^^^^^^
[INFO] [stdout] 5 |     ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, ButtonBox, WrapMode
[INFO] [stdout]   |     ^^^^^^^^^^^  ^^^^^^            ^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/chat_window.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]  --> src/chat_window.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::sync::mpsc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> src/chat_window.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]   --> src/chat_window.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::path::{PathBuf, Path};
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `ReadDir`
[INFO] [stdout]   --> src/chat_window.rs:12:21
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::fs::{self, File, Metadata, ReadDir};
[INFO] [stdout]    |                     ^^^^            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `SystemTime`, and `UNIX_EPOCH`
[INFO] [stdout]   --> src/chat_window.rs:13:23
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::time::{self, Duration, SystemTime, UNIX_EPOCH};
[INFO] [stdout]    |                       ^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `trace` and `warn`
[INFO] [stdout]   --> src/chat_window.rs:15:17
[INFO] [stdout]    |
[INFO] [stdout] 15 | use log::{info, trace, warn};
[INFO] [stdout]    |                 ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Packet` and `ShareInfo`
[INFO] [stdout]   --> src/chat_window.rs:17:26
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::model::{self, Packet, ShareInfo, ReceivedSimpleFileInfo};
[INFO] [stdout]    |                          ^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::constant`
[INFO] [stdout]   --> src/chat_window.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::constant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ReadDir`
[INFO] [stdout]  --> src/download.rs:8:37
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::fs::{self, File, Metadata, ReadDir};
[INFO] [stdout]   |                                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EncoderTrap`
[INFO] [stdout]   --> src/download.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]    |                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `trace` and `warn`
[INFO] [stdout]   --> src/download.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 | use log::{info, trace, warn, debug};
[INFO] [stdout]    |                 ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FileInfo`
[INFO] [stdout]   --> src/download.rs:18:20
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::model::{FileInfo, ReceivedSimpleFileInfo};
[INFO] [stdout]    |                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/download.rs:167:65
[INFO] [stdout]     |
[INFO] [stdout] 167 | ...   let header_context_str = read_bytes(stream, (header_size - 1 - header_size_str.as_bytes().len() as u64));//-1是减去的那个冒号
[INFO] [stdout]     |                                                   ^                                                         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 167 -                     let header_context_str = read_bytes(stream, (header_size - 1 - header_size_str.as_bytes().len() as u64));//-1是减去的那个冒号
[INFO] [stdout] 167 +                     let header_context_str = read_bytes(stream, header_size - 1 - header_size_str.as_bytes().len() as u64 );//-1是减去的那个冒号
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EncoderTrap`
[INFO] [stdout]  --> src/events/model.rs:4:26
[INFO] [stdout]   |
[INFO] [stdout] 4 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]   |                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `trace`, and `warn`
[INFO] [stdout]  --> src/events/model.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use log::{info, trace, warn, debug, error};
[INFO] [stdout]   |                 ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FileInfo`
[INFO] [stdout]   --> src/events/model.rs:11:79
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::model::{Packet, User, ReceivedSimpleFileInfo, ReceivedPacketInner, FileInfo, ShareInfo};
[INFO] [stdout]    |                                                                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IPMSG_FILEATTACHOPT` and `IPMSG_SENDMSG`
[INFO] [stdout]   --> src/events/model.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::constant::{self, IPMSG_SENDMSG, IPMSG_FILEATTACHOPT, IPMSG_DEFAULT_PORT, IPMSG_BR_ENTRY, IPMSG_BROADCASTOPT, IPMSG_LIMITE...
[INFO] [stdout]    |                             ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/events/model.rs:192:9
[INFO] [stdout]     |
[INFO] [stdout] 192 |         ///扩展段 用户名|用户组
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 193 |         let ext_vec = extstr.splitn(2, |c| c == ':').collect::<Vec<&str>>();
[INFO] [stdout]     |         -------------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FileInfo` and `ReceivedPacketInner`
[INFO] [stdout]  --> src/events/ui.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::model::{User, ReceivedPacketInner, Packet, ReceivedSimpleFileInfo, FileInfo, ShareInfo};
[INFO] [stdout]   |                          ^^^^^^^^^^^^^^^^^^^                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ReadDir`
[INFO] [stdout]  --> src/fileserver.rs:7:37
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fs::{self, File, Metadata, ReadDir};
[INFO] [stdout]   |                                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EncoderTrap`
[INFO] [stdout]  --> src/fileserver.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stdout]   |                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `trace`, and `warn`
[INFO] [stdout]   --> src/fileserver.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | use log::{info, trace, warn, debug};
[INFO] [stdout]    |                 ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FileInfo` and `Packet`
[INFO] [stdout]   --> src/fileserver.rs:13:20
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::model::{FileInfo, Packet, ShareInfo};
[INFO] [stdout]    |                    ^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::prelude::*`
[INFO] [stdout]  --> src/main_win.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]  --> src/main_win.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::{TcpListener, TcpStream};
[INFO] [stdout]   |                ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/main_win.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/main_win.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/main_win.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]  --> src/main_win.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::mpsc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, `SocketAddrV4`, `SocketAddrV6`, `SocketAddr`, and `ToSocketAddrs`
[INFO] [stdout]  --> src/main_win.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6, Ipv4Addr, Ipv6Addr, ToSocketAddrs};
[INFO] [stdout]   |                ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::args`
[INFO] [stdout]   --> src/main_win.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::env::args;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `human_panic::setup_panic`
[INFO] [stdout]   --> src/main_win.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use human_panic::setup_panic;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gio::ApplicationFlags`
[INFO] [stdout]   --> src/main_win.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use gio::ApplicationFlags;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Builder`, `Button`, `CellRendererProgress`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `ListBoxRow`, `ListBox`, `Orientation`, `ReliefStyle`, `TextView`, `Widget`, `WindowPosition`, `WindowType`, and `Window`
[INFO] [stdout]   --> src/main_win.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 |     self, CellRendererText, CellRendererProgress, AboutDialog, CheckMenuItem, IconSize, Image, Label, Menu, MenuBar, MenuItem, Window,
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^               ^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^                                  ^^^^^^
[INFO] [stdout] 16 |     WindowPosition, WindowType, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^  ^^^^^^^^^^                                       ^^^^^^^  ^^^^  ^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 17 |     ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, ListBox, ListBoxRow, Application
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^  ^^^^^^^^  ^^^^^                  ^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Receiver`
[INFO] [stdout]   --> src/main_win.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | use glib::{Receiver, MainContext};
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `trace`, and `warn`
[INFO] [stdout]   --> src/main_win.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 | use log::{info, trace, warn, debug};
[INFO] [stdout]    |                 ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ErrMsg`, `FileInfo`, `OperUser`, `Operate`, `Packet`, `ReceivedPacketInner`, `ReceivedSimpleFileInfo`, `ShareInfo`, `User`, and `self`
[INFO] [stdout]   --> src/main_win.rs:24:20
[INFO] [stdout]    |
[INFO] [stdout] 24 | use crate::model::{self, User, OperUser, Operate, ShareInfo, Packet, FileInfo, ReceivedSimpleFileInfo, ReceivedPacketInner, ErrMsg};
[INFO] [stdout]    |                    ^^^^  ^^^^  ^^^^^^^^  ^^^^^^^  ^^^^^^^^^  ^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::prelude::*`
[INFO] [stdout]  --> src/app.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]  --> src/app.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::{TcpListener, TcpStream};
[INFO] [stdout]   |                ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/app.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/app.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/app.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]  --> src/app.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::mpsc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/app.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::UdpSocket`
[INFO] [stdout]  --> src/app.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::net::UdpSocket;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, `SocketAddrV4`, `SocketAddrV6`, `SocketAddr`, and `ToSocketAddrs`
[INFO] [stdout]  --> src/app.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6, Ipv4Addr, Ipv6Addr, ToSocketAddrs};
[INFO] [stdout]   |                ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::args`
[INFO] [stdout]   --> src/app.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::env::args;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]   --> src/app.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     setup_panic!();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout]    = note: this warning originates in the macro `setup_panic` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/download.rs:40:52
[INFO] [stdout]    |
[INFO] [stdout] 40 |             DownLoadError::IoError(ref err) => err.description(),
[INFO] [stdout]    |                                                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/message.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 |     for (i, file) in (&files).iter().enumerate() {
[INFO] [stdout]    |          ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]   --> src/util.rs:39:23
[INFO] [stdout]    |
[INFO] [stdout] 39 |         many(satisfy(|c| true)),
[INFO] [stdout]    |                       ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/chat_window.rs:77:26
[INFO] [stdout]    |
[INFO] [stdout] 77 |         let (start_iter, mut end_iter) = text_view_presend.buffer().unwrap().bounds();
[INFO] [stdout]    |                          ----^^^^^^^^
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `local_time`
[INFO] [stdout]    --> src/chat_window.rs:194:17
[INFO] [stdout]     |
[INFO] [stdout] 194 |             let local_time = chrono_time.with_timezone(&::chrono::Local);
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `local_time`
[INFO] [stdout]    --> src/chat_window.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |             let local_time = chrono_time.with_timezone(&::chrono::Local);
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_path`
[INFO] [stdout]   --> src/chat_window.rs:88:111
[INFO] [stdout]    |
[INFO] [stdout] 88 | ...ip => move |tree_view, tree_path, tree_view_column| {
[INFO] [stdout]    |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_view_column`
[INFO] [stdout]   --> src/chat_window.rs:88:122
[INFO] [stdout]    |
[INFO] [stdout] 88 | ...iew, tree_path, tree_view_column| {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_view_column`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `text_view_history_clone`
[INFO] [stdout]   --> src/chat_window.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |     let text_view_history_clone = text_view_history.clone();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_text_view_history_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `received_store`
[INFO] [stdout]    --> src/chat_window.rs:251:25
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn modify_received_list(received_store :Option<ListStore>, received_files: Arc<RefCell<Vec<ReceivedSimpleFileInfo>>>) -> ::glib::Co...
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_received_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `received_files`
[INFO] [stdout]    --> src/chat_window.rs:251:60
[INFO] [stdout]     |
[INFO] [stdout] 251 | ...ption<ListStore>, received_files: Arc<RefCell<Vec<ReceivedSimpleFileInfo>>>) -> ::glib::Continue {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_received_files`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/download.rs:65:16
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub fn run(mut self, file_info: ReceivedSimpleFileInfo, save_path: PathBuf, download_ip: String) {
[INFO] [stdout]    |                ----^^^^
[INFO] [stdout]    |                |
[INFO] [stdout]    |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:136:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let mut base_file_location = path.to_path_buf();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut buffer = BufReader::new(stream);
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |         let mut path_infos = PathInfos{
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `metadata`
[INFO] [stdout]    --> src/download.rs:124:9
[INFO] [stdout]     |
[INFO] [stdout] 124 |     let metadata: Metadata = fs::metadata(path)?;
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path_info`
[INFO] [stdout]    --> src/download.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |         for path_info in path_infos {
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_path_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `opt`
[INFO] [stdout]    --> src/download.rs:172:25
[INFO] [stdout]     |
[INFO] [stdout] 172 |                     let opt = constant::get_opt(file_attr);
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_opt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:202:19
[INFO] [stdout]     |
[INFO] [stdout] 202 | fn read_delimiter(mut stream : & mut BufReader<TcpStream>) -> Result<Option<String>, DownLoadError> {
[INFO] [stdout]     |                   ----^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:217:15
[INFO] [stdout]     |
[INFO] [stdout] 217 | fn read_bytes(mut stream : & mut BufReader<TcpStream>, len: u64) -> String {
[INFO] [stdout]     |               ----^^^^^^
[INFO] [stdout]     |               |
[INFO] [stdout]     |               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:224:23
[INFO] [stdout]     |
[INFO] [stdout] 224 | fn read_bytes_to_file(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stdout]     |                       ----^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/download.rs:238:30
[INFO] [stdout]     |
[INFO] [stdout] 238 | fn read_bytes_to_file_unsize(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stdout]     |                              ----^^^^^^
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `len`
[INFO] [stdout]    --> src/download.rs:238:71
[INFO] [stdout]     |
[INFO] [stdout] 238 | fn read_bytes_to_file_unsize(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stdout]     |                                                                       ^^^ help: if this is intentional, prefix it with an underscore: `_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg_str`
[INFO] [stdout]    --> src/events/model.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let msg_str = if ext_vec.len() > 0 { ext_vec[0] } else { "" };
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_msg_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ntime`
[INFO] [stdout]    --> src/events/model.rs:240:29
[INFO] [stdout]     |
[INFO] [stdout] 240 |                         let ntime = NaiveDateTime::from_timestamp(mmtime_num, 0);
[INFO] [stdout]     |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_ntime`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/fileserver.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |                     let mut tmp_buf = &buf[0..byte_size];
[INFO] [stdout]    |                         ----^^^^^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/fileserver.rs:75:58
[INFO] [stdout]    |
[INFO] [stdout] 75 |     fn process_dir(pool_tmp: Arc<Mutex<Vec<ShareInfo>>>, mut stream_echo: TcpStream, ext_str: String) -> () {
[INFO] [stdout]    |                                                          ----^^^^^^^^^^^
[INFO] [stdout]    |                                                          |
[INFO] [stdout]    |                                                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `search_result` is never read
[INFO] [stdout]   --> src/fileserver.rs:81:56
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let mut search_result: Option<ShareInfo> = Option::None;
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/fileserver.rs:99:60
[INFO] [stdout]    |
[INFO] [stdout] 99 |     fn process_file(pool_tmp: &Arc<Mutex<Vec<ShareInfo>>>, mut stream_echo: &mut TcpStream, ext_str: String) -> () {
[INFO] [stdout]    |                                                            ----^^^^^^^^^^^
[INFO] [stdout]    |                                                            |
[INFO] [stdout]    |                                                            help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/fileserver.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |             let offset = file_attr[2].parse::<u32>().unwrap();
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `search_result` is never read
[INFO] [stdout]    --> src/fileserver.rs:106:56
[INFO] [stdout]     |
[INFO] [stdout] 106 |             let mut search_result: Option<ShareInfo> = Option::None;
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main_win.rs:266:17
[INFO] [stdout]     |
[INFO] [stdout] 266 |                 _ => {
[INFO] [stdout]     |                 ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/main_win.rs:266:17
[INFO] [stdout]     |
[INFO] [stdout] 129 |                 UiEvent::OpenOrReOpenChatWindow {name, ip} => {
[INFO] [stdout]     |                 ------------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 139 |                 UiEvent::UpdateUserListFooterStatus(text) => {
[INFO] [stdout]     |                 ----------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 142 |                 UiEvent::UserListRemoveOne(ip) => {
[INFO] [stdout]     |                 ------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 164 |                 UiEvent::UserListAddOne(income_user) => {
[INFO] [stdout]     |                 ------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 266 |                 _ => {
[INFO] [stdout]     |                 ^ ...and 5 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `win`
[INFO] [stdout]    --> src/main_win.rs:131:30
[INFO] [stdout]     |
[INFO] [stdout] 131 |                         Some(win) => {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `win`
[INFO] [stdout]    --> src/main_win.rs:193:30
[INFO] [stdout]     |
[INFO] [stdout] 193 |                         Some(win) => {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `packet`
[INFO] [stdout]    --> src/main_win.rs:200:62
[INFO] [stdout]     |
[INFO] [stdout] 200 |                 UiEvent::OpenOrReOpenChatWindow1 { name, ip, packet} => {
[INFO] [stdout]     |                                                              ^^^^^^ help: try ignoring the field: `packet: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `win`
[INFO] [stdout]    --> src/main_win.rs:202:30
[INFO] [stdout]     |
[INFO] [stdout] 202 |                         Some(win) => {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `files`
[INFO] [stdout]    --> src/main_win.rs:212:67
[INFO] [stdout]     |
[INFO] [stdout] 212 |                 UiEvent::DisplaySelfSendMsgInHis {to_ip, context, files} => {
[INFO] [stdout]     |                                                                   ^^^^^ help: try ignoring the field: `files: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `his_start_iter`
[INFO] [stdout]    --> src/main_win.rs:215:34
[INFO] [stdout]     |
[INFO] [stdout] 215 | ...                   let (his_start_iter, mut his_end_iter) = win.his_view.buffer().unwrap().bounds();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_his_start_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `his_start_iter`
[INFO] [stdout]    --> src/main_win.rs:225:34
[INFO] [stdout]     |
[INFO] [stdout] 225 | ...                   let (his_start_iter, mut his_end_iter) = win.his_view.buffer().unwrap().bounds();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_his_start_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_path`
[INFO] [stdout]    --> src/main_win.rs:106:84
[INFO] [stdout]     |
[INFO] [stdout] 106 |         tree.connect_row_activated(clone!(@strong model_sender => move |tree_view, tree_path, tree_view_column| {
[INFO] [stdout]     |                                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_view_column`
[INFO] [stdout]    --> src/main_win.rs:106:95
[INFO] [stdout]     |
[INFO] [stdout] 106 |         tree.connect_row_activated(clone!(@strong model_sender => move |tree_view, tree_path, tree_view_column| {
[INFO] [stdout]     |                                                                                               ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_view_column`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_BR_ISGETLIST` is never used
[INFO] [stdout]   --> src/constant.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const IPMSG_BR_ISGETLIST: u32 = 0x00000010;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_OKGETLIST` is never used
[INFO] [stdout]   --> src/constant.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const IPMSG_OKGETLIST: u32 = 0x00000011;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_GETLIST` is never used
[INFO] [stdout]   --> src/constant.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const IPMSG_GETLIST: u32 = 0x00000012;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ANSLIST` is never used
[INFO] [stdout]   --> src/constant.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const IPMSG_ANSLIST: u32 = 0x00000013;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_BR_ISGETLIST2` is never used
[INFO] [stdout]   --> src/constant.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const IPMSG_BR_ISGETLIST2: u32 = 0x00000018;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_READMSG` is never used
[INFO] [stdout]   --> src/constant.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const IPMSG_READMSG: u32 = 0x00000030;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_DELMSG` is never used
[INFO] [stdout]   --> src/constant.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const IPMSG_DELMSG: u32 = 0x00000031;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ANSREADMSG` is never used
[INFO] [stdout]   --> src/constant.rs:42:11
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub const IPMSG_ANSREADMSG: u32 = 0x00000032;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_GETINFO` is never used
[INFO] [stdout]   --> src/constant.rs:44:11
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub const IPMSG_GETINFO: u32 = 0x00000040;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_SENDINFO` is never used
[INFO] [stdout]   --> src/constant.rs:46:11
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub const IPMSG_SENDINFO: u32 = 0x00000041;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_GETABSENCEINFO` is never used
[INFO] [stdout]   --> src/constant.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub const IPMSG_GETABSENCEINFO: u32 = 0x00000050;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_SENDABSENCEINFO` is never used
[INFO] [stdout]   --> src/constant.rs:51:11
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub const IPMSG_SENDABSENCEINFO: u32 = 0x00000051;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_RELEASEFILES` is never used
[INFO] [stdout]   --> src/constant.rs:56:11
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub const IPMSG_RELEASEFILES: u32 = 0x00000061;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_GETPUBKEY` is never used
[INFO] [stdout]   --> src/constant.rs:61:11
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub const IPMSG_GETPUBKEY: u32 = 0x00000072;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ANSPUBKEY` is never used
[INFO] [stdout]   --> src/constant.rs:63:11
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub const IPMSG_ANSPUBKEY: u32 = 0x00000073;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_SYMLINK` is never used
[INFO] [stdout]   --> src/constant.rs:69:11
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub const IPMSG_FILE_SYMLINK: u32 = 0x00000004;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_CDEV` is never used
[INFO] [stdout]   --> src/constant.rs:70:11
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub const IPMSG_FILE_CDEV: u32 = 0x00000005;// for UNIX
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_BDEV` is never used
[INFO] [stdout]   --> src/constant.rs:71:11
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub const IPMSG_FILE_BDEV: u32 = 0x00000006;// for UNIX
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_FIFO` is never used
[INFO] [stdout]   --> src/constant.rs:72:11
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub const IPMSG_FILE_FIFO: u32 = 0x00000007;// for UNIX
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_RESFORK` is never used
[INFO] [stdout]   --> src/constant.rs:73:11
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub const IPMSG_FILE_RESFORK: u32 = 0x00000010;// for mac
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_RONLYOPT` is never used
[INFO] [stdout]   --> src/constant.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub const IPMSG_FILE_RONLYOPT: u32 = 0x00000100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_HIDDENOPT` is never used
[INFO] [stdout]   --> src/constant.rs:77:11
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub const IPMSG_FILE_HIDDENOPT: u32 = 0x00001000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_EXHIDDENOPT` is never used
[INFO] [stdout]   --> src/constant.rs:78:11
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub const IPMSG_FILE_EXHIDDENOPT: u32 = 0x00002000;// for MacOS X
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_ARCHIVEOPT` is never used
[INFO] [stdout]   --> src/constant.rs:79:11
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub const IPMSG_FILE_ARCHIVEOPT: u32 = 0x00004000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_FILE_SYSTEMOPT` is never used
[INFO] [stdout]   --> src/constant.rs:80:11
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub const IPMSG_FILE_SYSTEMOPT: u32 = 0x00008000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HOSTLIST_SEPARATOR` is never used
[INFO] [stdout]   --> src/constant.rs:87:11
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub const HOSTLIST_SEPARATOR: char = '\u{7}';
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ABSENCEOPT` is never used
[INFO] [stdout]   --> src/constant.rs:91:11
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub const IPMSG_ABSENCEOPT: u32 = 0x00000100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_SERVEROPT` is never used
[INFO] [stdout]   --> src/constant.rs:93:11
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub const IPMSG_SERVEROPT: u32 = 0x00000200;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_DIALUPOPT` is never used
[INFO] [stdout]   --> src/constant.rs:95:11
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub const IPMSG_DIALUPOPT: u32 = 0x00010000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ENCRYPTOPT` is never used
[INFO] [stdout]   --> src/constant.rs:99:11
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub const IPMSG_ENCRYPTOPT: u32 = 0x00400000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_UTF8OPT` is never used
[INFO] [stdout]    --> src/constant.rs:101:11
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub const IPMSG_UTF8OPT: u32 = 0x00800000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_CAPUTF8OPT` is never used
[INFO] [stdout]    --> src/constant.rs:103:11
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub const IPMSG_CAPUTF8OPT: u32 = 0x01000000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_ENCEXTMSGOPT` is never used
[INFO] [stdout]    --> src/constant.rs:105:11
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub const IPMSG_ENCEXTMSGOPT: u32 = 0x04000000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_CLIPBOARDOPT` is never used
[INFO] [stdout]    --> src/constant.rs:107:11
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub const IPMSG_CLIPBOARDOPT: u32 = 0x08000000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_CAPFILEENC_OBSLT` is never used
[INFO] [stdout]    --> src/constant.rs:108:11
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub const IPMSG_CAPFILEENC_OBSLT: u32 = 0x00001000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_CAPFILEENCOPT` is never used
[INFO] [stdout]    --> src/constant.rs:109:11
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub const IPMSG_CAPFILEENCOPT: u32 = 0x00040000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_MULTICASTOPT` is never used
[INFO] [stdout]    --> src/constant.rs:119:11
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub const IPMSG_MULTICASTOPT: u32 = 0x00000800;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_AUTORETOPT` is never used
[INFO] [stdout]    --> src/constant.rs:121:11
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub const IPMSG_AUTORETOPT: u32 = 0x00002000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_RETRYOPT` is never used
[INFO] [stdout]    --> src/constant.rs:123:11
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub const IPMSG_RETRYOPT: u32 = 0x00004000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_PASSWORDOPT` is never used
[INFO] [stdout]    --> src/constant.rs:125:11
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub const IPMSG_PASSWORDOPT: u32 = 0x00008000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_NOLOGOPT` is never used
[INFO] [stdout]    --> src/constant.rs:127:11
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub const IPMSG_NOLOGOPT: u32 = 0x00020000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_NOADDLISTOPT` is never used
[INFO] [stdout]    --> src/constant.rs:129:11
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub const IPMSG_NOADDLISTOPT: u32 = 0x00080000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_READCHECKOPT` is never used
[INFO] [stdout]    --> src/constant.rs:131:11
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub const IPMSG_READCHECKOPT: u32 = 0x00100000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IPMSG_SECRETEXOPT` is never used
[INFO] [stdout]    --> src/constant.rs:132:11
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub const IPMSG_SECRETEXOPT: u32 = IPMSG_READCHECKOPT|IPMSG_SECRETOPT;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_local_ip` is never used
[INFO] [stdout]    --> src/constant.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub fn get_local_ip() -> Option<IpAddr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ExtStr` is never used
[INFO] [stdout]   --> src/model.rs:26:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | type ExtStr = String;
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ExtMsg` is never used
[INFO] [stdout]   --> src/model.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | trait ExtMsg {
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PacketBuilder` is never constructed
[INFO] [stdout]   --> src/model.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct PacketBuilder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `command` and `command_opt` are never used
[INFO] [stdout]   --> src/model.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl PacketBuilder {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 49 |     ///命令
[INFO] [stdout] 50 |     fn command(command_no: u32) -> PacketBuilder {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     fn command_opt(mut self, ext_command_no: u32) -> PacketBuilder {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Operate` is never used
[INFO] [stdout]    --> src/model.rs:148:10
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub enum Operate {
[INFO] [stdout]     |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OperUser` is never constructed
[INFO] [stdout]    --> src/model.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub struct OperUser{
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/model.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | impl OperUser {
[INFO] [stdout]     | ------------- associated function in this implementation
[INFO] [stdout] 159 |     pub fn new(user: User, oper :Operate) -> OperUser{
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `host`, `host_cnt`, `file_cnt`, and `attach_time` are never read
[INFO] [stdout]    --> src/model.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub struct ShareInfo {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub host: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 173 |     // 要发送的目的机器个数
[INFO] [stdout] 174 |     pub host_cnt: u32,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub file_cnt: u32,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 180 |     //文件添加时间
[INFO] [stdout] 181 |     pub attach_time: NaiveTime,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ShareInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `atime`, and `crtime` are never read
[INFO] [stdout]    --> src/model.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub struct FileInfo {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub atime: NaiveTime,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 199 |     //文件创建时间
[INFO] [stdout] 200 |     pub crtime: NaiveTime
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FileInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `opt_files` is never used
[INFO] [stdout]    --> src/model.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | impl ReceivedPacketInner {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn opt_files(mut self, opt_files: Vec<ReceivedSimpleFileInfo>) -> ReceivedPacketInner {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ErrMsg` is never constructed
[INFO] [stdout]    --> src/model.rs:259:12
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub struct ErrMsg {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `win`, `ip`, and `pre_send_files` are never read
[INFO] [stdout]   --> src/chat_window.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct ChatWindow {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 28 |     pub win :Window,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 29 |     pub his_view :TextView,
[INFO] [stdout] 30 |     pub ip :String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 31 |     pub pre_send_files :Arc<RefCell<Vec<model::FileInfo>>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChatWindow` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modify_received_list` is never used
[INFO] [stdout]    --> src/chat_window.rs:251:4
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn modify_received_list(received_store :Option<ListStore>, received_files: Arc<RefCell<Vec<ReceivedSimpleFileInfo>>>) -> ::glib::Co...
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `InValidType` is never constructed
[INFO] [stdout]   --> src/download.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum DownLoadError {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] 22 |     IoError(io::Error),
[INFO] [stdout] 23 |     InValidType,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DownLoadError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_bytes_to_file_unsize` is never used
[INFO] [stdout]    --> src/download.rs:238:4
[INFO] [stdout]     |
[INFO] [stdout] 238 | fn read_bytes_to_file_unsize(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PutInTcpFilePool` is never constructed
[INFO] [stdout]   --> src/events/model.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum ModelEvent {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 30 |     PutInTcpFilePool(),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `hostname` should have an upper case name
[INFO] [stdout]    --> src/constant.rs:161:20
[INFO] [stdout]     |
[INFO] [stdout] 161 |     pub static ref hostname: String = get_host_name();
[INFO] [stdout]     |                    ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 161 -     pub static ref hostname: String = get_host_name();
[INFO] [stdout] 161 +     pub static ref HOSTNAME: String = get_host_name();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `localip` should have an upper case name
[INFO] [stdout]    --> src/constant.rs:162:20
[INFO] [stdout]     |
[INFO] [stdout] 162 |     pub static ref localip: String = get_local_ip().unwrap().to_string();
[INFO] [stdout]     |                    ^^^^^^^ help: convert the identifier to upper case: `LOCALIP`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `addr` should have an upper case name
[INFO] [stdout]    --> src/constant.rs:163:20
[INFO] [stdout]     |
[INFO] [stdout] 163 |     pub static ref addr: String = format!("{}{}", "0.0.0.0:", IPMSG_DEFAULT_PORT);
[INFO] [stdout]     |                    ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 163 -     pub static ref addr: String = format!("{}{}", "0.0.0.0:", IPMSG_DEFAULT_PORT);
[INFO] [stdout] 163 +     pub static ref ADDR: String = format!("{}{}", "0.0.0.0:", IPMSG_DEFAULT_PORT);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]   --> src/chat_window.rs:83:9
[INFO] [stdout]    |
[INFO] [stdout] 83 |         &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 83 |         let _ = &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/chat_window.rs:106:17
[INFO] [stdout]     |
[INFO] [stdout] 106 | /                 model_sender.send(ModelEvent::PutDownloadTaskInPool{ file: ReceivedSimpleFileInfo{
[INFO] [stdout] 107 | |                     file_id: fid,
[INFO] [stdout] 108 | |                     packet_id: pid,
[INFO] [stdout] 109 | |                     name: name,
[INFO] [stdout] ...   |
[INFO] [stdout] 112 | |                     mtime
[INFO] [stdout] 113 | |                 }, save_base_path, download_ip: host_ip.clone() });
[INFO] [stdout]     | |__________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 106 |                 let _ = model_sender.send(ModelEvent::PutDownloadTaskInPool{ file: ReceivedSimpleFileInfo{
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/chat_window.rs:123:9
[INFO] [stdout]     |
[INFO] [stdout] 123 |         &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 123 |         let _ = &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/download.rs:74:21
[INFO] [stdout]    |
[INFO] [stdout] 74 |                     sender.send(ModelEvent::DownloadIsBusy{ file: file_info });
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 74 |                     let _ = sender.send(ModelEvent::DownloadIsBusy{ file: file_info });
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/download.rs:92:25
[INFO] [stdout]    |
[INFO] [stdout] 92 | ...   sender.send(ModelEvent::RemoveDownloadTaskInPool{ packet_id: file_info.packet_id, file_id: file_info.file_id, download_ip });
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 92 |                         let _ = sender.send(ModelEvent::RemoveDownloadTaskInPool{ packet_id: file_info.packet_id, file_id: file_info.file_id, download_ip });
[INFO] [stdout]    |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/download.rs:220:5
[INFO] [stdout]     |
[INFO] [stdout] 220 |     handler.read_to_end(&mut s_buffer);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 220 |     let _ = handler.read_to_end(&mut s_buffer);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/download.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 |         f.write(&buf[..bytes_read]);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 231 |         let _ = f.write(&buf[..bytes_read]);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/events/model.rs:187:9
[INFO] [stdout]     |
[INFO] [stdout] 187 |         model_event_sender.send(ModelEvent::RecMsgReply{packet: recvmsg, from_ip: (&packet).ip.to_owned()});
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 187 |         let _ = model_event_sender.send(ModelEvent::RecMsgReply{packet: recvmsg, from_ip: (&packet).ip.to_owned()});
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/events/model.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |         model_event_sender.send(ModelEvent::BroadcastExit((&packet).sender_host.to_owned()));
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 190 |         let _ = model_event_sender.send(ModelEvent::BroadcastExit((&packet).sender_host.to_owned()));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/events/model.rs:209:9
[INFO] [stdout]     |
[INFO] [stdout] 209 |         model_event_sender.send(ModelEvent::RecOnlineMsgReply{packet: ansentry_packet, from_user: user});
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 209 |         let _ = model_event_sender.send(ModelEvent::RecOnlineMsgReply{packet: ansentry_packet, from_user: user});
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/events/model.rs:212:9
[INFO] [stdout]     |
[INFO] [stdout] 212 |         model_event_sender.send(ModelEvent::NotifyOnline{user});
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 212 |         let _ = model_event_sender.send(ModelEvent::NotifyOnline{user});
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]   --> src/main_win.rs:45:17
[INFO] [stdout]    |
[INFO] [stdout] 45 |                 &window.destroy();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 45 |                 let _ = &window.destroy();
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]   --> src/main_win.rs:79:17
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 &window.destroy();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 let _ = &window.destroy();
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main_win.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |         main_context.acquire();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let _ = main_context.acquire();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/main_win.rs:135:29
[INFO] [stdout]     |
[INFO] [stdout] 135 | ...                   &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |                             let _ = &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/main_win.rs:140:21
[INFO] [stdout]     |
[INFO] [stdout] 140 |                     &label.set_text(&format!("-- {} --", text));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 140 |                     let _ = &label.set_text(&format!("-- {} --", text));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/main_win.rs:194:29
[INFO] [stdout]     |
[INFO] [stdout] 194 | ...                   &chat_windows.remove(&ip);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 194 |                             let _ = &chat_windows.remove(&ip);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/main_win.rs:208:29
[INFO] [stdout]     |
[INFO] [stdout] 208 | ...                   &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 208 |                             let _ = &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stdout]   --> src/app.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     drop(env_logger::init());
[INFO] [stdout]    |     ^^^^^------------------^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          argument has type `()`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dropping_copy_types)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]    |
[INFO] [stdout] 20 -     drop(env_logger::init());
[INFO] [stdout] 20 +     let _ = env_logger::init();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.53s
[INFO] running `Command { std: "docker" "inspect" "b6e824238866c119920a39f3cbaf2707508ff1cdd497c14e313c6e9968dbe0a7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b6e824238866c119920a39f3cbaf2707508ff1cdd497c14e313c6e9968dbe0a7", kill_on_drop: false }`
[INFO] [stdout] b6e824238866c119920a39f3cbaf2707508ff1cdd497c14e313c6e9968dbe0a7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] ccd0dfb5f6987e0a01ed383f0c096f5b4623e7fdc2398f6a760772a30bb68993
[INFO] running `Command { std: "docker" "start" "-a" "ccd0dfb5f6987e0a01ed383f0c096f5b4623e7fdc2398f6a760772a30bb68993", kill_on_drop: false }`
[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)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Path`
[INFO] [stderr]  --> src/model.rs:3:26
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::path::{PathBuf, Path};
[INFO] [stderr]   |                          ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Arc` and `Mutex`
[INFO] [stderr]  --> src/message.rs:1:17
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::sync::{Arc, Mutex};
[INFO] [stderr]   |                 ^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::cell::RefCell`
[INFO] [stderr]  --> src/message.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::cell::RefCell;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::thread`
[INFO] [stderr]  --> src/message.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::thread;
[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`, and `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: `trace` and `warn`
[INFO] [stderr]  --> src/message.rs:8:17
[INFO] [stderr]   |
[INFO] [stderr] 8 | use log::{info, trace, warn};
[INFO] [stderr]   |                 ^^^^^  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `IPMSG_BROADCASTOPT`, `IPMSG_BR_ENTRY`, `IPMSG_DEFAULT_PORT`, and `self`
[INFO] [stderr]   --> src/message.rs:10:23
[INFO] [stderr]    |
[INFO] [stderr] 10 | use crate::constant::{self, IPMSG_SENDMSG, IPMSG_FILEATTACHOPT, IPMSG_DEFAULT_PORT, IPMSG_BR_ENTRY, IPMSG_BROADCASTOPT};
[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: `any`, `choice`, `optional`, `sep_by`, `skip_many1`, and `skip_many`
[INFO] [stderr]  --> src/util.rs:9:44
[INFO] [stderr]   |
[INFO] [stderr] 9 | use combine::{many1, many, Parser, Stream, sep_by, token, skip_many, skip_many1, satisfy, choice, optional, any};
[INFO] [stderr]   |                                            ^^^^^^         ^^^^^^^^^  ^^^^^^^^^^           ^^^^^^  ^^^^^^^^  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `take_until_range`, `take_while1`, and `take_while`
[INFO] [stderr]   --> src/util.rs:10:30
[INFO] [stderr]    |
[INFO] [stderr] 10 | use combine::parser::range::{take_while, take_while1, take_until_range};
[INFO] [stderr]    |                              ^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `char`, `digit`, `letter`, and `space`
[INFO] [stderr]   --> src/util.rs:11:29
[INFO] [stderr]    |
[INFO] [stderr] 11 | use combine::parser::char::{letter, space, digit, char};
[INFO] [stderr]    |                             ^^^^^^  ^^^^^  ^^^^^  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AboutDialog`, `ButtonBox`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `Label`, `MenuBar`, `MenuItem`, `Menu`, `Orientation`, `ReliefStyle`, `ScrolledWindow`, `Widget`, `WindowPosition`, and `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, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation,
[INFO] [stderr]   |     ^^^^^^^^^^^^^^  ^^^^^^^^^^                                                ^^^^          ^^^^^^^^^^^
[INFO] [stderr] 5 |     ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, ButtonBox, WrapMode
[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: `std::thread`
[INFO] [stderr]   --> src/chat_window.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use std::thread;
[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` and `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`, and `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 imports: `trace` and `warn`
[INFO] [stderr]   --> src/chat_window.rs:15:17
[INFO] [stderr]    |
[INFO] [stderr] 15 | use log::{info, trace, warn};
[INFO] [stderr]    |                 ^^^^^  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Packet` and `ShareInfo`
[INFO] [stderr]   --> src/chat_window.rs:17:26
[INFO] [stderr]    |
[INFO] [stderr] 17 | use crate::model::{self, Packet, ShareInfo, ReceivedSimpleFileInfo};
[INFO] [stderr]    |                          ^^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::constant`
[INFO] [stderr]   --> src/chat_window.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | use crate::constant;
[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:12:26
[INFO] [stderr]    |
[INFO] [stderr] 12 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stderr]    |                          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `trace` and `warn`
[INFO] [stderr]   --> src/download.rs:14:17
[INFO] [stderr]    |
[INFO] [stderr] 14 | use log::{info, trace, warn, debug};
[INFO] [stderr]    |                 ^^^^^  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `FileInfo`
[INFO] [stderr]   --> src/download.rs:18:20
[INFO] [stderr]    |
[INFO] [stderr] 18 | use crate::model::{FileInfo, ReceivedSimpleFileInfo};
[INFO] [stderr]    |                    ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around function argument
[INFO] [stderr]    --> src/download.rs:167:65
[INFO] [stderr]     |
[INFO] [stderr] 167 | ...   let header_context_str = read_bytes(stream, (header_size - 1 - header_size_str.as_bytes().len() as u64));//-1是减去的那个冒号
[INFO] [stderr]     |                                                   ^                                                         ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 167 -                     let header_context_str = read_bytes(stream, (header_size - 1 - header_size_str.as_bytes().len() as u64));//-1是减去的那个冒号
[INFO] [stderr] 167 +                     let header_context_str = read_bytes(stream, header_size - 1 - header_size_str.as_bytes().len() as u64 );//-1是减去的那个冒号
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `EncoderTrap`
[INFO] [stderr]  --> src/events/model.rs:4:26
[INFO] [stderr]   |
[INFO] [stderr] 4 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stderr]   |                          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `debug`, `trace`, and `warn`
[INFO] [stderr]  --> src/events/model.rs:9:17
[INFO] [stderr]   |
[INFO] [stderr] 9 | use log::{info, trace, warn, debug, error};
[INFO] [stderr]   |                 ^^^^^  ^^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `FileInfo`
[INFO] [stderr]   --> src/events/model.rs:11:79
[INFO] [stderr]    |
[INFO] [stderr] 11 | use crate::model::{Packet, User, ReceivedSimpleFileInfo, ReceivedPacketInner, FileInfo, ShareInfo};
[INFO] [stderr]    |                                                                               ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `IPMSG_FILEATTACHOPT` and `IPMSG_SENDMSG`
[INFO] [stderr]   --> src/events/model.rs:15:29
[INFO] [stderr]    |
[INFO] [stderr] 15 | use crate::constant::{self, IPMSG_SENDMSG, IPMSG_FILEATTACHOPT, IPMSG_DEFAULT_PORT, IPMSG_BR_ENTRY, IPMSG_BROADCASTOPT, IPMSG_LIMITE...
[INFO] [stderr]    |                             ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> src/events/model.rs:192:9
[INFO] [stderr]     |
[INFO] [stderr] 192 |         ///扩展段 用户名|用户组
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 193 |         let ext_vec = extstr.splitn(2, |c| c == ':').collect::<Vec<&str>>();
[INFO] [stderr]     |         -------------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `FileInfo` and `ReceivedPacketInner`
[INFO] [stderr]  --> src/events/ui.rs:1:26
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::model::{User, ReceivedPacketInner, Packet, ReceivedSimpleFileInfo, FileInfo, ShareInfo};
[INFO] [stderr]   |                          ^^^^^^^^^^^^^^^^^^^                                  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ReadDir`
[INFO] [stderr]  --> src/fileserver.rs:7:37
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::fs::{self, File, Metadata, ReadDir};
[INFO] [stderr]   |                                     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `EncoderTrap`
[INFO] [stderr]  --> src/fileserver.rs:8:26
[INFO] [stderr]   |
[INFO] [stderr] 8 | use encoding::{Encoding, EncoderTrap, DecoderTrap};
[INFO] [stderr]   |                          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `debug`, `trace`, and `warn`
[INFO] [stderr]   --> src/fileserver.rs:11:17
[INFO] [stderr]    |
[INFO] [stderr] 11 | use log::{info, trace, warn, debug};
[INFO] [stderr]    |                 ^^^^^  ^^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `FileInfo` and `Packet`
[INFO] [stderr]   --> src/fileserver.rs:13:20
[INFO] [stderr]    |
[INFO] [stderr] 13 | use crate::model::{FileInfo, Packet, ShareInfo};
[INFO] [stderr]    |                    ^^^^^^^^  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `chrono::prelude::*`
[INFO] [stderr]  --> src/main_win.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use chrono::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stderr]  --> src/main_win.rs:2:16
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::net::{TcpListener, TcpStream};
[INFO] [stderr]   |                ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Arc` and `Mutex`
[INFO] [stderr]  --> src/main_win.rs:3:17
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::sync::{Arc, Mutex};
[INFO] [stderr]   |                 ^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::cell::RefCell`
[INFO] [stderr]  --> src/main_win.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::cell::RefCell;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::thread`
[INFO] [stderr]  --> src/main_win.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::thread;
[INFO] [stderr]   |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::mpsc`
[INFO] [stderr]  --> src/main_win.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use std::sync::mpsc;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, `SocketAddrV4`, `SocketAddrV6`, `SocketAddr`, and `ToSocketAddrs`
[INFO] [stderr]  --> src/main_win.rs:9:16
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6, Ipv4Addr, Ipv6Addr, ToSocketAddrs};
[INFO] [stderr]   |                ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::env::args`
[INFO] [stderr]   --> src/main_win.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use std::env::args;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `human_panic::setup_panic`
[INFO] [stderr]   --> src/main_win.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | use human_panic::setup_panic;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `gio::ApplicationFlags`
[INFO] [stderr]   --> src/main_win.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use gio::ApplicationFlags;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Builder`, `Button`, `CellRendererProgress`, `CheckMenuItem`, `Fixed`, `Grid`, `IconSize`, `Image`, `ListBoxRow`, `ListBox`, `Orientation`, `ReliefStyle`, `TextView`, `Widget`, `WindowPosition`, `WindowType`, and `Window`
[INFO] [stderr]   --> src/main_win.rs:15:29
[INFO] [stderr]    |
[INFO] [stderr] 15 |     self, CellRendererText, CellRendererProgress, AboutDialog, CheckMenuItem, IconSize, Image, Label, Menu, MenuBar, MenuItem, Window,
[INFO] [stderr]    |                             ^^^^^^^^^^^^^^^^^^^^               ^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^                                  ^^^^^^
[INFO] [stderr] 16 |     WindowPosition, WindowType, ListStore, TreeView, TreeViewColumn, Builder, Grid, Button, Orientation,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^  ^^^^^^^^^^                                       ^^^^^^^  ^^^^  ^^^^^^  ^^^^^^^^^^^
[INFO] [stderr] 17 |     ReliefStyle, Widget, TextView, Fixed, ScrolledWindow, ListBox, ListBoxRow, Application
[INFO] [stderr]    |     ^^^^^^^^^^^  ^^^^^^  ^^^^^^^^  ^^^^^                  ^^^^^^^  ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Receiver`
[INFO] [stderr]   --> src/main_win.rs:20:12
[INFO] [stderr]    |
[INFO] [stderr] 20 | use glib::{Receiver, MainContext};
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `debug`, `trace`, and `warn`
[INFO] [stderr]   --> src/main_win.rs:22:17
[INFO] [stderr]    |
[INFO] [stderr] 22 | use log::{info, trace, warn, debug};
[INFO] [stderr]    |                 ^^^^^  ^^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ErrMsg`, `FileInfo`, `OperUser`, `Operate`, `Packet`, `ReceivedPacketInner`, `ReceivedSimpleFileInfo`, `ShareInfo`, `User`, and `self`
[INFO] [stderr]   --> src/main_win.rs:24:20
[INFO] [stderr]    |
[INFO] [stderr] 24 | use crate::model::{self, User, OperUser, Operate, ShareInfo, Packet, FileInfo, ReceivedSimpleFileInfo, ReceivedPacketInner, ErrMsg};
[INFO] [stderr]    |                    ^^^^  ^^^^  ^^^^^^^^  ^^^^^^^  ^^^^^^^^^  ^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `chrono::prelude::*`
[INFO] [stderr]  --> src/app.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use chrono::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stderr]  --> src/app.rs:2:16
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::net::{TcpListener, TcpStream};
[INFO] [stderr]   |                ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Arc` and `Mutex`
[INFO] [stderr]  --> src/app.rs:3:17
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::sync::{Arc, Mutex};
[INFO] [stderr]   |                 ^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::cell::RefCell`
[INFO] [stderr]  --> src/app.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::cell::RefCell;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::thread`
[INFO] [stderr]  --> src/app.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::thread;
[INFO] [stderr]   |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::mpsc`
[INFO] [stderr]  --> src/app.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use std::sync::mpsc;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]  --> src/app.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::collections::HashMap;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::net::UdpSocket`
[INFO] [stderr]  --> src/app.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use std::net::UdpSocket;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, `SocketAddrV4`, `SocketAddrV6`, `SocketAddr`, and `ToSocketAddrs`
[INFO] [stderr]  --> src/app.rs:9:16
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6, Ipv4Addr, Ipv6Addr, ToSocketAddrs};
[INFO] [stderr]   |                ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::env::args`
[INFO] [stderr]   --> src/app.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use std::env::args;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stderr]   --> src/app.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 18 |     setup_panic!();
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(deprecated)]` on by default
[INFO] [stderr]    = note: this warning originates in the macro `setup_panic` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stderr]   --> src/download.rs:40:52
[INFO] [stderr]    |
[INFO] [stderr] 40 |             DownLoadError::IoError(ref err) => err.description(),
[INFO] [stderr]    |                                                    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]   --> src/message.rs:28:10
[INFO] [stderr]    |
[INFO] [stderr] 28 |     for (i, file) in (&files).iter().enumerate() {
[INFO] [stderr]    |          ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `c`
[INFO] [stderr]   --> src/util.rs:39:23
[INFO] [stderr]    |
[INFO] [stderr] 39 |         many(satisfy(|c| true)),
[INFO] [stderr]    |                       ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/chat_window.rs:77:26
[INFO] [stderr]    |
[INFO] [stderr] 77 |         let (start_iter, mut end_iter) = text_view_presend.buffer().unwrap().bounds();
[INFO] [stderr]    |                          ----^^^^^^^^
[INFO] [stderr]    |                          |
[INFO] [stderr]    |                          help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `local_time`
[INFO] [stderr]    --> src/chat_window.rs:194:17
[INFO] [stderr]     |
[INFO] [stderr] 194 |             let local_time = chrono_time.with_timezone(&::chrono::Local);
[INFO] [stderr]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_time`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `local_time`
[INFO] [stderr]    --> src/chat_window.rs:149:17
[INFO] [stderr]     |
[INFO] [stderr] 149 |             let local_time = chrono_time.with_timezone(&::chrono::Local);
[INFO] [stderr]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_time`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tree_path`
[INFO] [stderr]   --> src/chat_window.rs:88:111
[INFO] [stderr]    |
[INFO] [stderr] 88 | ...ip => move |tree_view, tree_path, tree_view_column| {
[INFO] [stderr]    |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_path`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tree_view_column`
[INFO] [stderr]   --> src/chat_window.rs:88:122
[INFO] [stderr]    |
[INFO] [stderr] 88 | ...iew, tree_path, tree_view_column| {
[INFO] [stderr]    |                    ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_view_column`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `text_view_history_clone`
[INFO] [stderr]   --> src/chat_window.rs:67:9
[INFO] [stderr]    |
[INFO] [stderr] 67 |     let text_view_history_clone = text_view_history.clone();
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_text_view_history_clone`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `received_store`
[INFO] [stderr]    --> src/chat_window.rs:251:25
[INFO] [stderr]     |
[INFO] [stderr] 251 | fn modify_received_list(received_store :Option<ListStore>, received_files: Arc<RefCell<Vec<ReceivedSimpleFileInfo>>>) -> ::glib::Co...
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_received_store`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `received_files`
[INFO] [stderr]    --> src/chat_window.rs:251:60
[INFO] [stderr]     |
[INFO] [stderr] 251 | ...ption<ListStore>, received_files: Arc<RefCell<Vec<ReceivedSimpleFileInfo>>>) -> ::glib::Continue {
[INFO] [stderr]     |                      ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_received_files`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/download.rs:65:16
[INFO] [stderr]    |
[INFO] [stderr] 65 |     pub fn run(mut self, file_info: ReceivedSimpleFileInfo, save_path: PathBuf, download_ip: 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:136:13
[INFO] [stderr]     |
[INFO] [stderr] 136 |         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:137:13
[INFO] [stderr]     |
[INFO] [stderr] 137 |         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:138:13
[INFO] [stderr]     |
[INFO] [stderr] 138 |         let mut path_infos = PathInfos{
[INFO] [stderr]     |             ----^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `metadata`
[INFO] [stderr]    --> src/download.rs:124:9
[INFO] [stderr]     |
[INFO] [stderr] 124 |     let metadata: Metadata = fs::metadata(path)?;
[INFO] [stderr]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `path_info`
[INFO] [stderr]    --> src/download.rs:142:13
[INFO] [stderr]     |
[INFO] [stderr] 142 |         for path_info in path_infos {
[INFO] [stderr]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_path_info`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `opt`
[INFO] [stderr]    --> src/download.rs:172:25
[INFO] [stderr]     |
[INFO] [stderr] 172 |                     let opt = constant::get_opt(file_attr);
[INFO] [stderr]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_opt`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/download.rs:202:19
[INFO] [stderr]     |
[INFO] [stderr] 202 | fn read_delimiter(mut stream : & mut BufReader<TcpStream>) -> Result<Option<String>, 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:217:15
[INFO] [stderr]     |
[INFO] [stderr] 217 | fn read_bytes(mut stream : & mut BufReader<TcpStream>, 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:224:23
[INFO] [stderr]     |
[INFO] [stderr] 224 | fn read_bytes_to_file(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[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:238:30
[INFO] [stderr]     |
[INFO] [stderr] 238 | fn read_bytes_to_file_unsize(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stderr]     |                              ----^^^^^^
[INFO] [stderr]     |                              |
[INFO] [stderr]     |                              help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `len`
[INFO] [stderr]    --> src/download.rs:238:71
[INFO] [stderr]     |
[INFO] [stderr] 238 | fn read_bytes_to_file_unsize(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stderr]     |                                                                       ^^^ help: if this is intentional, prefix it with an underscore: `_len`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `msg_str`
[INFO] [stderr]    --> src/events/model.rs:219:13
[INFO] [stderr]     |
[INFO] [stderr] 219 |         let msg_str = if ext_vec.len() > 0 { ext_vec[0] } else { "" };
[INFO] [stderr]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_msg_str`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ntime`
[INFO] [stderr]    --> src/events/model.rs:240:29
[INFO] [stderr]     |
[INFO] [stderr] 240 |                         let ntime = NaiveDateTime::from_timestamp(mmtime_num, 0);
[INFO] [stderr]     |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_ntime`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/fileserver.rs:45:25
[INFO] [stderr]    |
[INFO] [stderr] 45 |                     let mut tmp_buf = &buf[0..byte_size];
[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/fileserver.rs:75:58
[INFO] [stderr]    |
[INFO] [stderr] 75 |     fn process_dir(pool_tmp: Arc<Mutex<Vec<ShareInfo>>>, mut stream_echo: TcpStream, ext_str: String) -> () {
[INFO] [stderr]    |                                                          ----^^^^^^^^^^^
[INFO] [stderr]    |                                                          |
[INFO] [stderr]    |                                                          help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `search_result` is never read
[INFO] [stderr]   --> src/fileserver.rs:81:56
[INFO] [stderr]    |
[INFO] [stderr] 81 |             let mut search_result: Option<ShareInfo> = Option::None;
[INFO] [stderr]    |                                                        ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = help: maybe it is overwritten before being read?
[INFO] [stderr]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/fileserver.rs:99:60
[INFO] [stderr]    |
[INFO] [stderr] 99 |     fn process_file(pool_tmp: &Arc<Mutex<Vec<ShareInfo>>>, mut stream_echo: &mut TcpStream, ext_str: String) -> () {
[INFO] [stderr]    |                                                            ----^^^^^^^^^^^
[INFO] [stderr]    |                                                            |
[INFO] [stderr]    |                                                            help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `offset`
[INFO] [stderr]    --> src/fileserver.rs:105:17
[INFO] [stderr]     |
[INFO] [stderr] 105 |             let offset = file_attr[2].parse::<u32>().unwrap();
[INFO] [stderr]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `search_result` is never read
[INFO] [stderr]    --> src/fileserver.rs:106:56
[INFO] [stderr]     |
[INFO] [stderr] 106 |             let mut search_result: Option<ShareInfo> = Option::None;
[INFO] [stderr]     |                                                        ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/main_win.rs:266:17
[INFO] [stderr]     |
[INFO] [stderr] 266 |                 _ => {
[INFO] [stderr]     |                 ^ no value can reach this
[INFO] [stderr]     |
[INFO] [stderr] note: multiple earlier patterns match some of the same values
[INFO] [stderr]    --> src/main_win.rs:266:17
[INFO] [stderr]     |
[INFO] [stderr] 129 |                 UiEvent::OpenOrReOpenChatWindow {name, ip} => {
[INFO] [stderr]     |                 ------------------------------------------ matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 139 |                 UiEvent::UpdateUserListFooterStatus(text) => {
[INFO] [stderr]     |                 ----------------------------------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 142 |                 UiEvent::UserListRemoveOne(ip) => {
[INFO] [stderr]     |                 ------------------------------ matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 164 |                 UiEvent::UserListAddOne(income_user) => {
[INFO] [stderr]     |                 ------------------------------------ matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 266 |                 _ => {
[INFO] [stderr]     |                 ^ ...and 5 other patterns collectively make this unreachable
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `win`
[INFO] [stderr]    --> src/main_win.rs:131:30
[INFO] [stderr]     |
[INFO] [stderr] 131 |                         Some(win) => {
[INFO] [stderr]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `win`
[INFO] [stderr]    --> src/main_win.rs:193:30
[INFO] [stderr]     |
[INFO] [stderr] 193 |                         Some(win) => {
[INFO] [stderr]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `packet`
[INFO] [stderr]    --> src/main_win.rs:200:62
[INFO] [stderr]     |
[INFO] [stderr] 200 |                 UiEvent::OpenOrReOpenChatWindow1 { name, ip, packet} => {
[INFO] [stderr]     |                                                              ^^^^^^ help: try ignoring the field: `packet: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `win`
[INFO] [stderr]    --> src/main_win.rs:202:30
[INFO] [stderr]     |
[INFO] [stderr] 202 |                         Some(win) => {
[INFO] [stderr]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `files`
[INFO] [stderr]    --> src/main_win.rs:212:67
[INFO] [stderr]     |
[INFO] [stderr] 212 |                 UiEvent::DisplaySelfSendMsgInHis {to_ip, context, files} => {
[INFO] [stderr]     |                                                                   ^^^^^ help: try ignoring the field: `files: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `his_start_iter`
[INFO] [stderr]    --> src/main_win.rs:215:34
[INFO] [stderr]     |
[INFO] [stderr] 215 | ...                   let (his_start_iter, mut his_end_iter) = win.his_view.buffer().unwrap().bounds();
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_his_start_iter`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `his_start_iter`
[INFO] [stderr]    --> src/main_win.rs:225:34
[INFO] [stderr]     |
[INFO] [stderr] 225 | ...                   let (his_start_iter, mut his_end_iter) = win.his_view.buffer().unwrap().bounds();
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_his_start_iter`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tree_path`
[INFO] [stderr]    --> src/main_win.rs:106:84
[INFO] [stderr]     |
[INFO] [stderr] 106 |         tree.connect_row_activated(clone!(@strong model_sender => move |tree_view, tree_path, tree_view_column| {
[INFO] [stderr]     |                                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_path`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tree_view_column`
[INFO] [stderr]    --> src/main_win.rs:106:95
[INFO] [stderr]     |
[INFO] [stderr] 106 |         tree.connect_row_activated(clone!(@strong model_sender => move |tree_view, tree_path, tree_view_column| {
[INFO] [stderr]     |                                                                                               ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_view_column`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_BR_ISGETLIST` is never used
[INFO] [stderr]   --> src/constant.rs:21:11
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub const IPMSG_BR_ISGETLIST: u32 = 0x00000010;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_OKGETLIST` is never used
[INFO] [stderr]   --> src/constant.rs:23:11
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub const IPMSG_OKGETLIST: u32 = 0x00000011;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_GETLIST` is never used
[INFO] [stderr]   --> src/constant.rs:25:11
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub const IPMSG_GETLIST: u32 = 0x00000012;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_ANSLIST` is never used
[INFO] [stderr]   --> src/constant.rs:27:11
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub const IPMSG_ANSLIST: u32 = 0x00000013;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_BR_ISGETLIST2` is never used
[INFO] [stderr]   --> src/constant.rs:29:11
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub const IPMSG_BR_ISGETLIST2: u32 = 0x00000018;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_READMSG` is never used
[INFO] [stderr]   --> src/constant.rs:37:11
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub const IPMSG_READMSG: u32 = 0x00000030;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_DELMSG` is never used
[INFO] [stderr]   --> src/constant.rs:39:11
[INFO] [stderr]    |
[INFO] [stderr] 39 | pub const IPMSG_DELMSG: u32 = 0x00000031;
[INFO] [stderr]    |           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_ANSREADMSG` is never used
[INFO] [stderr]   --> src/constant.rs:42:11
[INFO] [stderr]    |
[INFO] [stderr] 42 | pub const IPMSG_ANSREADMSG: u32 = 0x00000032;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_GETINFO` is never used
[INFO] [stderr]   --> src/constant.rs:44:11
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub const IPMSG_GETINFO: u32 = 0x00000040;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_SENDINFO` is never used
[INFO] [stderr]   --> src/constant.rs:46:11
[INFO] [stderr]    |
[INFO] [stderr] 46 | pub const IPMSG_SENDINFO: u32 = 0x00000041;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_GETABSENCEINFO` is never used
[INFO] [stderr]   --> src/constant.rs:49:11
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub const IPMSG_GETABSENCEINFO: u32 = 0x00000050;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_SENDABSENCEINFO` is never used
[INFO] [stderr]   --> src/constant.rs:51:11
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub const IPMSG_SENDABSENCEINFO: u32 = 0x00000051;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_RELEASEFILES` is never used
[INFO] [stderr]   --> src/constant.rs:56:11
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub const IPMSG_RELEASEFILES: u32 = 0x00000061;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_GETPUBKEY` is never used
[INFO] [stderr]   --> src/constant.rs:61:11
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub const IPMSG_GETPUBKEY: u32 = 0x00000072;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_ANSPUBKEY` is never used
[INFO] [stderr]   --> src/constant.rs:63:11
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub const IPMSG_ANSPUBKEY: u32 = 0x00000073;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_FILE_SYMLINK` is never used
[INFO] [stderr]   --> src/constant.rs:69:11
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub const IPMSG_FILE_SYMLINK: u32 = 0x00000004;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_FILE_CDEV` is never used
[INFO] [stderr]   --> src/constant.rs:70:11
[INFO] [stderr]    |
[INFO] [stderr] 70 | pub const IPMSG_FILE_CDEV: u32 = 0x00000005;// for UNIX
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_FILE_BDEV` is never used
[INFO] [stderr]   --> src/constant.rs:71:11
[INFO] [stderr]    |
[INFO] [stderr] 71 | pub const IPMSG_FILE_BDEV: u32 = 0x00000006;// for UNIX
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_FILE_FIFO` is never used
[INFO] [stderr]   --> src/constant.rs:72:11
[INFO] [stderr]    |
[INFO] [stderr] 72 | pub const IPMSG_FILE_FIFO: u32 = 0x00000007;// for UNIX
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_FILE_RESFORK` is never used
[INFO] [stderr]   --> src/constant.rs:73:11
[INFO] [stderr]    |
[INFO] [stderr] 73 | pub const IPMSG_FILE_RESFORK: u32 = 0x00000010;// for mac
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_FILE_RONLYOPT` is never used
[INFO] [stderr]   --> src/constant.rs:76:11
[INFO] [stderr]    |
[INFO] [stderr] 76 | pub const IPMSG_FILE_RONLYOPT: u32 = 0x00000100;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_FILE_HIDDENOPT` is never used
[INFO] [stderr]   --> src/constant.rs:77:11
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub const IPMSG_FILE_HIDDENOPT: u32 = 0x00001000;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_FILE_EXHIDDENOPT` is never used
[INFO] [stderr]   --> src/constant.rs:78:11
[INFO] [stderr]    |
[INFO] [stderr] 78 | pub const IPMSG_FILE_EXHIDDENOPT: u32 = 0x00002000;// for MacOS X
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_FILE_ARCHIVEOPT` is never used
[INFO] [stderr]   --> src/constant.rs:79:11
[INFO] [stderr]    |
[INFO] [stderr] 79 | pub const IPMSG_FILE_ARCHIVEOPT: u32 = 0x00004000;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_FILE_SYSTEMOPT` is never used
[INFO] [stderr]   --> src/constant.rs:80:11
[INFO] [stderr]    |
[INFO] [stderr] 80 | pub const IPMSG_FILE_SYSTEMOPT: u32 = 0x00008000;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `HOSTLIST_SEPARATOR` is never used
[INFO] [stderr]   --> src/constant.rs:87:11
[INFO] [stderr]    |
[INFO] [stderr] 87 | pub const HOSTLIST_SEPARATOR: char = '\u{7}';
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_ABSENCEOPT` is never used
[INFO] [stderr]   --> src/constant.rs:91:11
[INFO] [stderr]    |
[INFO] [stderr] 91 | pub const IPMSG_ABSENCEOPT: u32 = 0x00000100;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_SERVEROPT` is never used
[INFO] [stderr]   --> src/constant.rs:93:11
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub const IPMSG_SERVEROPT: u32 = 0x00000200;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_DIALUPOPT` is never used
[INFO] [stderr]   --> src/constant.rs:95:11
[INFO] [stderr]    |
[INFO] [stderr] 95 | pub const IPMSG_DIALUPOPT: u32 = 0x00010000;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_ENCRYPTOPT` is never used
[INFO] [stderr]   --> src/constant.rs:99:11
[INFO] [stderr]    |
[INFO] [stderr] 99 | pub const IPMSG_ENCRYPTOPT: u32 = 0x00400000;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_UTF8OPT` is never used
[INFO] [stderr]    --> src/constant.rs:101:11
[INFO] [stderr]     |
[INFO] [stderr] 101 | pub const IPMSG_UTF8OPT: u32 = 0x00800000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_CAPUTF8OPT` is never used
[INFO] [stderr]    --> src/constant.rs:103:11
[INFO] [stderr]     |
[INFO] [stderr] 103 | pub const IPMSG_CAPUTF8OPT: u32 = 0x01000000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_ENCEXTMSGOPT` is never used
[INFO] [stderr]    --> src/constant.rs:105:11
[INFO] [stderr]     |
[INFO] [stderr] 105 | pub const IPMSG_ENCEXTMSGOPT: u32 = 0x04000000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_CLIPBOARDOPT` is never used
[INFO] [stderr]    --> src/constant.rs:107:11
[INFO] [stderr]     |
[INFO] [stderr] 107 | pub const IPMSG_CLIPBOARDOPT: u32 = 0x08000000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_CAPFILEENC_OBSLT` is never used
[INFO] [stderr]    --> src/constant.rs:108:11
[INFO] [stderr]     |
[INFO] [stderr] 108 | pub const IPMSG_CAPFILEENC_OBSLT: u32 = 0x00001000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_CAPFILEENCOPT` is never used
[INFO] [stderr]    --> src/constant.rs:109:11
[INFO] [stderr]     |
[INFO] [stderr] 109 | pub const IPMSG_CAPFILEENCOPT: u32 = 0x00040000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_MULTICASTOPT` is never used
[INFO] [stderr]    --> src/constant.rs:119:11
[INFO] [stderr]     |
[INFO] [stderr] 119 | pub const IPMSG_MULTICASTOPT: u32 = 0x00000800;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_AUTORETOPT` is never used
[INFO] [stderr]    --> src/constant.rs:121:11
[INFO] [stderr]     |
[INFO] [stderr] 121 | pub const IPMSG_AUTORETOPT: u32 = 0x00002000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_RETRYOPT` is never used
[INFO] [stderr]    --> src/constant.rs:123:11
[INFO] [stderr]     |
[INFO] [stderr] 123 | pub const IPMSG_RETRYOPT: u32 = 0x00004000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_PASSWORDOPT` is never used
[INFO] [stderr]    --> src/constant.rs:125:11
[INFO] [stderr]     |
[INFO] [stderr] 125 | pub const IPMSG_PASSWORDOPT: u32 = 0x00008000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_NOLOGOPT` is never used
[INFO] [stderr]    --> src/constant.rs:127:11
[INFO] [stderr]     |
[INFO] [stderr] 127 | pub const IPMSG_NOLOGOPT: u32 = 0x00020000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_NOADDLISTOPT` is never used
[INFO] [stderr]    --> src/constant.rs:129:11
[INFO] [stderr]     |
[INFO] [stderr] 129 | pub const IPMSG_NOADDLISTOPT: u32 = 0x00080000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_READCHECKOPT` is never used
[INFO] [stderr]    --> src/constant.rs:131:11
[INFO] [stderr]     |
[INFO] [stderr] 131 | pub const IPMSG_READCHECKOPT: u32 = 0x00100000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `IPMSG_SECRETEXOPT` is never used
[INFO] [stderr]    --> src/constant.rs:132:11
[INFO] [stderr]     |
[INFO] [stderr] 132 | pub const IPMSG_SECRETEXOPT: u32 = IPMSG_READCHECKOPT|IPMSG_SECRETOPT;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_local_ip` is never used
[INFO] [stderr]    --> src/constant.rs:151:8
[INFO] [stderr]     |
[INFO] [stderr] 151 | pub fn get_local_ip() -> Option<IpAddr> {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type alias `ExtStr` is never used
[INFO] [stderr]   --> src/model.rs:26:6
[INFO] [stderr]    |
[INFO] [stderr] 26 | type ExtStr = String;
[INFO] [stderr]    |      ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `ExtMsg` is never used
[INFO] [stderr]   --> src/model.rs:28:7
[INFO] [stderr]    |
[INFO] [stderr] 28 | trait ExtMsg {
[INFO] [stderr]    |       ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PacketBuilder` is never constructed
[INFO] [stderr]   --> src/model.rs:33:12
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub struct PacketBuilder {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `command` and `command_opt` are never used
[INFO] [stderr]   --> src/model.rs:50:8
[INFO] [stderr]    |
[INFO] [stderr] 48 | impl PacketBuilder {
[INFO] [stderr]    | ------------------ associated items in this implementation
[INFO] [stderr] 49 |     ///命令
[INFO] [stderr] 50 |     fn command(command_no: u32) -> PacketBuilder {
[INFO] [stderr]    |        ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 61 |     fn command_opt(mut self, ext_command_no: u32) -> PacketBuilder {
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Operate` is never used
[INFO] [stderr]    --> src/model.rs:148:10
[INFO] [stderr]     |
[INFO] [stderr] 148 | pub enum Operate {
[INFO] [stderr]     |          ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `OperUser` is never constructed
[INFO] [stderr]    --> src/model.rs:153:12
[INFO] [stderr]     |
[INFO] [stderr] 153 | pub struct OperUser{
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]    --> src/model.rs:159:12
[INFO] [stderr]     |
[INFO] [stderr] 158 | impl OperUser {
[INFO] [stderr]     | ------------- associated function in this implementation
[INFO] [stderr] 159 |     pub fn new(user: User, oper :Operate) -> OperUser{
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `host`, `host_cnt`, `file_cnt`, and `attach_time` are never read
[INFO] [stderr]    --> src/model.rs:172:9
[INFO] [stderr]     |
[INFO] [stderr] 168 | pub struct ShareInfo {
[INFO] [stderr]     |            --------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 172 |     pub host: String,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 173 |     // 要发送的目的机器个数
[INFO] [stderr] 174 |     pub host_cnt: u32,
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 179 |     pub file_cnt: u32,
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 180 |     //文件添加时间
[INFO] [stderr] 181 |     pub attach_time: NaiveTime,
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ShareInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `name`, `atime`, and `crtime` are never read
[INFO] [stderr]    --> src/model.rs:190:9
[INFO] [stderr]     |
[INFO] [stderr] 185 | pub struct FileInfo {
[INFO] [stderr]     |            -------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 190 |     pub name: String,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 198 |     pub atime: NaiveTime,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 199 |     //文件创建时间
[INFO] [stderr] 200 |     pub crtime: NaiveTime
[INFO] [stderr]     |         ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `FileInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `opt_files` is never used
[INFO] [stderr]    --> src/model.rs:248:12
[INFO] [stderr]     |
[INFO] [stderr] 234 | impl ReceivedPacketInner {
[INFO] [stderr]     | ------------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 248 |     pub fn opt_files(mut self, opt_files: Vec<ReceivedSimpleFileInfo>) -> ReceivedPacketInner {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ErrMsg` is never constructed
[INFO] [stderr]    --> src/model.rs:259:12
[INFO] [stderr]     |
[INFO] [stderr] 259 | pub struct ErrMsg {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `win`, `ip`, and `pre_send_files` are never read
[INFO] [stderr]   --> src/chat_window.rs:28:9
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub struct ChatWindow {
[INFO] [stderr]    |            ---------- fields in this struct
[INFO] [stderr] 28 |     pub win :Window,
[INFO] [stderr]    |         ^^^
[INFO] [stderr] 29 |     pub his_view :TextView,
[INFO] [stderr] 30 |     pub ip :String,
[INFO] [stderr]    |         ^^
[INFO] [stderr] 31 |     pub pre_send_files :Arc<RefCell<Vec<model::FileInfo>>>,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ChatWindow` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `modify_received_list` is never used
[INFO] [stderr]    --> src/chat_window.rs:251:4
[INFO] [stderr]     |
[INFO] [stderr] 251 | fn modify_received_list(received_store :Option<ListStore>, received_files: Arc<RefCell<Vec<ReceivedSimpleFileInfo>>>) -> ::glib::Co...
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `InValidType` is never constructed
[INFO] [stderr]   --> src/download.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub enum DownLoadError {
[INFO] [stderr]    |          ------------- variant in this enum
[INFO] [stderr] 22 |     IoError(io::Error),
[INFO] [stderr] 23 |     InValidType,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DownLoadError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_bytes_to_file_unsize` is never used
[INFO] [stderr]    --> src/download.rs:238:4
[INFO] [stderr]     |
[INFO] [stderr] 238 | fn read_bytes_to_file_unsize(mut stream : & mut BufReader<TcpStream>, len: u64, file_path: &PathBuf) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `PutInTcpFilePool` is never constructed
[INFO] [stderr]   --> src/events/model.rs:30:5
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub enum ModelEvent {
[INFO] [stderr]    |          ---------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 30 |     PutInTcpFilePool(),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: static variable `hostname` should have an upper case name
[INFO] [stderr]    --> src/constant.rs:161:20
[INFO] [stderr]     |
[INFO] [stderr] 161 |     pub static ref hostname: String = get_host_name();
[INFO] [stderr]     |                    ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 161 -     pub static ref hostname: String = get_host_name();
[INFO] [stderr] 161 +     pub static ref HOSTNAME: String = get_host_name();
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: static variable `localip` should have an upper case name
[INFO] [stderr]    --> src/constant.rs:162:20
[INFO] [stderr]     |
[INFO] [stderr] 162 |     pub static ref localip: String = get_local_ip().unwrap().to_string();
[INFO] [stderr]     |                    ^^^^^^^ help: convert the identifier to upper case: `LOCALIP`
[INFO] [stderr] 
[INFO] [stderr] warning: static variable `addr` should have an upper case name
[INFO] [stderr]    --> src/constant.rs:163:20
[INFO] [stderr]     |
[INFO] [stderr] 163 |     pub static ref addr: String = format!("{}{}", "0.0.0.0:", IPMSG_DEFAULT_PORT);
[INFO] [stderr]     |                    ^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 163 -     pub static ref addr: String = format!("{}{}", "0.0.0.0:", IPMSG_DEFAULT_PORT);
[INFO] [stderr] 163 +     pub static ref ADDR: String = format!("{}{}", "0.0.0.0:", IPMSG_DEFAULT_PORT);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused borrow that must be used
[INFO] [stderr]   --> src/chat_window.rs:83:9
[INFO] [stderr]    |
[INFO] [stderr] 83 |         &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 83 |         let _ = &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stderr]    |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/chat_window.rs:106:17
[INFO] [stderr]     |
[INFO] [stderr] 106 | /                 model_sender.send(ModelEvent::PutDownloadTaskInPool{ file: ReceivedSimpleFileInfo{
[INFO] [stderr] 107 | |                     file_id: fid,
[INFO] [stderr] 108 | |                     packet_id: pid,
[INFO] [stderr] 109 | |                     name: name,
[INFO] [stderr] ...   |
[INFO] [stderr] 112 | |                     mtime
[INFO] [stderr] 113 | |                 }, save_base_path, download_ip: host_ip.clone() });
[INFO] [stderr]     | |__________________________________________________________________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 106 |                 let _ = model_sender.send(ModelEvent::PutDownloadTaskInPool{ file: ReceivedSimpleFileInfo{
[INFO] [stderr]     |                 +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused borrow that must be used
[INFO] [stderr]    --> src/chat_window.rs:123:9
[INFO] [stderr]     |
[INFO] [stderr] 123 |         &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stderr]     |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 123 |         let _ = &text_view_presend.buffer().unwrap().set_text("");
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/download.rs:74:21
[INFO] [stderr]    |
[INFO] [stderr] 74 |                     sender.send(ModelEvent::DownloadIsBusy{ file: file_info });
[INFO] [stderr]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 74 |                     let _ = sender.send(ModelEvent::DownloadIsBusy{ file: file_info });
[INFO] [stderr]    |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/download.rs:92:25
[INFO] [stderr]    |
[INFO] [stderr] 92 | ...   sender.send(ModelEvent::RemoveDownloadTaskInPool{ packet_id: file_info.packet_id, file_id: file_info.file_id, download_ip });
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 92 |                         let _ = sender.send(ModelEvent::RemoveDownloadTaskInPool{ packet_id: file_info.packet_id, file_id: file_info.file_id, download_ip });
[INFO] [stderr]    |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/download.rs:220:5
[INFO] [stderr]     |
[INFO] [stderr] 220 |     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] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 220 |     let _ = handler.read_to_end(&mut s_buffer);
[INFO] [stderr]     |     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/download.rs:231:9
[INFO] [stderr]     |
[INFO] [stderr] 231 |         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] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 231 |         let _ = f.write(&buf[..bytes_read]);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/events/model.rs:187:9
[INFO] [stderr]     |
[INFO] [stderr] 187 |         model_event_sender.send(ModelEvent::RecMsgReply{packet: recvmsg, from_ip: (&packet).ip.to_owned()});
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 187 |         let _ = model_event_sender.send(ModelEvent::RecMsgReply{packet: recvmsg, from_ip: (&packet).ip.to_owned()});
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/events/model.rs:190:9
[INFO] [stderr]     |
[INFO] [stderr] 190 |         model_event_sender.send(ModelEvent::BroadcastExit((&packet).sender_host.to_owned()));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 190 |         let _ = model_event_sender.send(ModelEvent::BroadcastExit((&packet).sender_host.to_owned()));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/events/model.rs:209:9
[INFO] [stderr]     |
[INFO] [stderr] 209 |         model_event_sender.send(ModelEvent::RecOnlineMsgReply{packet: ansentry_packet, from_user: user});
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 209 |         let _ = model_event_sender.send(ModelEvent::RecOnlineMsgReply{packet: ansentry_packet, from_user: user});
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/events/model.rs:212:9
[INFO] [stderr]     |
[INFO] [stderr] 212 |         model_event_sender.send(ModelEvent::NotifyOnline{user});
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 212 |         let _ = model_event_sender.send(ModelEvent::NotifyOnline{user});
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused borrow that must be used
[INFO] [stderr]   --> src/main_win.rs:45:17
[INFO] [stderr]    |
[INFO] [stderr] 45 |                 &window.destroy();
[INFO] [stderr]    |                 ^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stderr]    |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 45 |                 let _ = &window.destroy();
[INFO] [stderr]    |                 +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused borrow that must be used
[INFO] [stderr]   --> src/main_win.rs:79:17
[INFO] [stderr]    |
[INFO] [stderr] 79 |                 &window.destroy();
[INFO] [stderr]    |                 ^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stderr]    |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 79 |                 let _ = &window.destroy();
[INFO] [stderr]    |                 +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/main_win.rs:126:9
[INFO] [stderr]     |
[INFO] [stderr] 126 |         main_context.acquire();
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 126 |         let _ = main_context.acquire();
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused borrow that must be used
[INFO] [stderr]    --> src/main_win.rs:135:29
[INFO] [stderr]     |
[INFO] [stderr] 135 | ...                   &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stderr]     |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 135 |                             let _ = &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stderr]     |                             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused borrow that must be used
[INFO] [stderr]    --> src/main_win.rs:140:21
[INFO] [stderr]     |
[INFO] [stderr] 140 |                     &label.set_text(&format!("-- {} --", text));
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stderr]     |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 140 |                     let _ = &label.set_text(&format!("-- {} --", text));
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused borrow that must be used
[INFO] [stderr]    --> src/main_win.rs:194:29
[INFO] [stderr]     |
[INFO] [stderr] 194 | ...                   &chat_windows.remove(&ip);
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stderr]     |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 194 |                             let _ = &chat_windows.remove(&ip);
[INFO] [stderr]     |                             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused borrow that must be used
[INFO] [stderr]    --> src/main_win.rs:208:29
[INFO] [stderr]     |
[INFO] [stderr] 208 | ...                   &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stderr]     |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 208 |                             let _ = &chat_windows.insert(ip.clone(), chat_win);
[INFO] [stderr]     |                             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stderr]   --> src/app.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 |     drop(env_logger::init());
[INFO] [stderr]    |     ^^^^^------------------^
[INFO] [stderr]    |          |
[INFO] [stderr]    |          argument has type `()`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dropping_copy_types)]` on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the expression or result
[INFO] [stderr]    |
[INFO] [stderr] 20 -     drop(env_logger::init());
[INFO] [stderr] 20 +     let _ = env_logger::init();
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: `raudient` (lib) generated 189 warnings (run `cargo fix --lib -p raudient` to apply 103 suggestions)
[INFO] [stderr] warning: `raudient` (lib test) generated 189 warnings (189 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.24s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/raudient-6e1f7b458b2ef2f0)
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/raudient.rs (/opt/rustwide/target/debug/deps/raudient-da58400591cb163f)
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests raudient
[INFO] [stderr] warning: unnecessary parentheses around function argument
[INFO] [stderr]    --> src/download.rs:167:65
[INFO] [stderr]     |
[INFO] [stderr] 167 | ...   let header_context_str = read_bytes(stream, (header_size - 1 - header_size_str.as_bytes().len() as u64));//-1是减去的那个冒号
[INFO] [stderr]     |                                                   ^                                                         ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 167 -                     let header_context_str = read_bytes(stream, (header_size - 1 - header_size_str.as_bytes().len() as u64));//-1是减去的那个冒号
[INFO] [stderr] 167 +                     let header_context_str = read_bytes(stream, header_size - 1 - header_size_str.as_bytes().len() as u64 );//-1是减去的那个冒号
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "ccd0dfb5f6987e0a01ed383f0c096f5b4623e7fdc2398f6a760772a30bb68993", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ccd0dfb5f6987e0a01ed383f0c096f5b4623e7fdc2398f6a760772a30bb68993", kill_on_drop: false }`
[INFO] [stdout] ccd0dfb5f6987e0a01ed383f0c096f5b4623e7fdc2398f6a760772a30bb68993
