[INFO] updating cached repository loggerhead/shadowsocks-rust [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/loggerhead/shadowsocks-rust [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/loggerhead/shadowsocks-rust" "work/ex/clippy-test-run/sources/stable/gh/loggerhead/shadowsocks-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/loggerhead/shadowsocks-rust'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/loggerhead/shadowsocks-rust" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/loggerhead/shadowsocks-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/loggerhead/shadowsocks-rust'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 12c2eaecad3aa52eeb0bb62b161317d0e9453164 [INFO] sha for GitHub repo loggerhead/shadowsocks-rust: 12c2eaecad3aa52eeb0bb62b161317d0e9453164 [INFO] validating manifest of loggerhead/shadowsocks-rust on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of loggerhead/shadowsocks-rust on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing loggerhead/shadowsocks-rust [INFO] finished frobbing loggerhead/shadowsocks-rust [INFO] frobbed toml for loggerhead/shadowsocks-rust written to work/ex/clippy-test-run/sources/stable/gh/loggerhead/shadowsocks-rust/Cargo.toml [INFO] started frobbing loggerhead/shadowsocks-rust [INFO] finished frobbing loggerhead/shadowsocks-rust [INFO] frobbed toml for loggerhead/shadowsocks-rust written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/loggerhead/shadowsocks-rust/Cargo.toml [INFO] crate loggerhead/shadowsocks-rust has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting loggerhead/shadowsocks-rust against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/loggerhead/shadowsocks-rust:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 304d8795f0c8e53e45df667b4a4856e40dcbb4a6d04d6f5fb29ec933e4e1adaa [INFO] running `"docker" "start" "-a" "304d8795f0c8e53e45df667b4a4856e40dcbb4a6d04d6f5fb29ec933e4e1adaa"` [INFO] [stderr] warning: file found to be present in multiple build targets: /opt/crater/workdir/src/bin/main.rs [INFO] [stderr] Checking slog v1.7.1 [INFO] [stderr] Checking lru_time_cache v0.5.0 [INFO] [stderr] Checking try_opt v0.1.1 [INFO] [stderr] Checking memchr v0.1.11 [INFO] [stderr] Checking net2 v0.2.31 [INFO] [stderr] Checking isatty v0.1.6 [INFO] [stderr] Checking term_size v0.2.3 [INFO] [stderr] Checking daemonize v0.2.3 [INFO] [stderr] Checking sig v1.0.0 [INFO] [stderr] Checking toml v0.1.30 [INFO] [stderr] Checking clap v2.18.0 [INFO] [stderr] Checking rust-crypto v0.2.36 [INFO] [stderr] Checking aho-corasick v0.5.3 [INFO] [stderr] Checking thread-id v2.0.0 [INFO] [stderr] Checking chrono v0.2.25 [INFO] [stderr] Checking slog-extra v0.1.2 [INFO] [stderr] Checking slog-scope v0.2.2 [INFO] [stderr] Checking miow v0.1.5 [INFO] [stderr] Checking thread_local v0.2.7 [INFO] [stderr] Checking slog-stream v1.2.1 [INFO] [stderr] Checking mio v0.5.1 [INFO] [stderr] Checking regex v0.1.80 [INFO] [stderr] Checking slog-term v1.3.5 [INFO] [stderr] Checking shadowsocks v0.6.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_relay.rs:34:17 [INFO] [stderr] | [INFO] [stderr] 34 | token: token, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_relay.rs:35:17 [INFO] [stderr] | [INFO] [stderr] 35 | listener: listener, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `listener` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_relay.rs:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | dns_token: dns_token, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dns_token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_relay.rs:37:17 [INFO] [stderr] | [INFO] [stderr] 37 | dns_resolver: dns_resolver, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dns_resolver` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_relay.rs:38:17 [INFO] [stderr] | [INFO] [stderr] 38 | server_chooser: server_chooser, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `server_chooser` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_relay.rs:39:17 [INFO] [stderr] | [INFO] [stderr] 39 | processors: processors, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `processors` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_relay.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | proxy_conf: proxy_conf, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `proxy_conf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_relay.rs:81:17 [INFO] [stderr] | [INFO] [stderr] 81 | server_chooser: server_chooser, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `server_chooser` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_relay.rs:82:17 [INFO] [stderr] | [INFO] [stderr] 82 | dns_resolver: dns_resolver, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dns_resolver` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_relay.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | token: token, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_relay.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | dns_token: dns_token, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dns_token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_relay.rs:89:17 [INFO] [stderr] | [INFO] [stderr] 89 | processors: processors, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `processors` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | proxy_conf: proxy_conf, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `proxy_conf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | stage: stage, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stage` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | local_token: local_token, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `local_token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:84:13 [INFO] [stderr] | [INFO] [stderr] 84 | local_sock: local_sock, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `local_sock` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | remote_token: remote_token, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `remote_token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | client_address: client_address, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `client_address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | server_address: server_address, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `server_address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | encryptor: encryptor, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `encryptor` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_processor.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | token: token, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_processor.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | addr: addr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `addr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_processor.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | sock: sock, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `sock` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/mode/mod.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | rtts: rtts, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `rtts` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/proxy_config.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | address: address, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/proxy_config.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/proxy_config.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/proxy_config.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | password: password, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `password` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/proxy_config.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | timeout: timeout, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `timeout` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/proxy_config.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | one_time_auth: one_time_auth, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `one_time_auth` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/running_config.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | mode: mode, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto/cipher.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | key: key, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto/cipher.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | iv: iv, [INFO] [stderr] | ^^^^^^ help: replace it with: `iv` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto/encryptor.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | key: key, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto/encryptor.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | iv_len: iv_len, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `iv_len` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto/encryptor.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto/encryptor.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | cipher: cipher, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `cipher` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/asyncdns.rs:165:13 [INFO] [stderr] | [INFO] [stderr] 165 | prefer_ipv6: prefer_ipv6, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `prefer_ipv6` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/asyncdns.rs:166:13 [INFO] [stderr] | [INFO] [stderr] 166 | token: token, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/asyncdns.rs:167:13 [INFO] [stderr] | [INFO] [stderr] 167 | servers: servers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `servers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/asyncdns.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | hosts: hosts, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `hosts` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/asyncdns.rs:174:13 [INFO] [stderr] | [INFO] [stderr] 174 | sock: sock, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `sock` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/asyncdns.rs:175:13 [INFO] [stderr] | [INFO] [stderr] 175 | qtypes: qtypes, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `qtypes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/asyncdns.rs:752:5 [INFO] [stderr] | [INFO] [stderr] 752 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deprecated_cfg_attr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/my_logger.rs:84:27 [INFO] [stderr] | [INFO] [stderr] 84 | LoggerInitError { desc: desc } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `desc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_relay.rs:34:17 [INFO] [stderr] | [INFO] [stderr] 34 | token: token, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_relay.rs:35:17 [INFO] [stderr] | [INFO] [stderr] 35 | listener: listener, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `listener` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_relay.rs:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | dns_token: dns_token, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dns_token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_relay.rs:37:17 [INFO] [stderr] | [INFO] [stderr] 37 | dns_resolver: dns_resolver, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dns_resolver` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_relay.rs:38:17 [INFO] [stderr] | [INFO] [stderr] 38 | server_chooser: server_chooser, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `server_chooser` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_relay.rs:39:17 [INFO] [stderr] | [INFO] [stderr] 39 | processors: processors, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `processors` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_relay.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | proxy_conf: proxy_conf, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `proxy_conf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_relay.rs:81:17 [INFO] [stderr] | [INFO] [stderr] 81 | server_chooser: server_chooser, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `server_chooser` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_relay.rs:82:17 [INFO] [stderr] | [INFO] [stderr] 82 | dns_resolver: dns_resolver, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dns_resolver` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_relay.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | token: token, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_relay.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | dns_token: dns_token, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dns_token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_relay.rs:89:17 [INFO] [stderr] | [INFO] [stderr] 89 | processors: processors, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `processors` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | proxy_conf: proxy_conf, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `proxy_conf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | stage: stage, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stage` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | local_token: local_token, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `local_token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:84:13 [INFO] [stderr] | [INFO] [stderr] 84 | local_sock: local_sock, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `local_sock` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | remote_token: remote_token, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `remote_token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | client_address: client_address, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `client_address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | server_address: server_address, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `server_address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/tcp_processor.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | encryptor: encryptor, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `encryptor` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_processor.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | token: token, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_processor.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | addr: addr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `addr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/relay/udp_processor.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | sock: sock, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `sock` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/mode/mod.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | rtts: rtts, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `rtts` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/proxy_config.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | address: address, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/proxy_config.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/proxy_config.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/proxy_config.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | password: password, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `password` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/proxy_config.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | timeout: timeout, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `timeout` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/proxy_config.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | one_time_auth: one_time_auth, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `one_time_auth` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config/running_config.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | mode: mode, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto/cipher.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | key: key, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto/cipher.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | iv: iv, [INFO] [stderr] | ^^^^^^ help: replace it with: `iv` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto/encryptor.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | key: key, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto/encryptor.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | iv_len: iv_len, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `iv_len` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto/encryptor.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/crypto/encryptor.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | cipher: cipher, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `cipher` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/asyncdns.rs:165:13 [INFO] [stderr] | [INFO] [stderr] 165 | prefer_ipv6: prefer_ipv6, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `prefer_ipv6` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/asyncdns.rs:166:13 [INFO] [stderr] | [INFO] [stderr] 166 | token: token, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/asyncdns.rs:167:13 [INFO] [stderr] | [INFO] [stderr] 167 | servers: servers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `servers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/asyncdns.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | hosts: hosts, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `hosts` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/asyncdns.rs:174:13 [INFO] [stderr] | [INFO] [stderr] 174 | sock: sock, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `sock` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/asyncdns.rs:175:13 [INFO] [stderr] | [INFO] [stderr] 175 | qtypes: qtypes, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `qtypes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/asyncdns.rs:752:5 [INFO] [stderr] | [INFO] [stderr] 752 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deprecated_cfg_attr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/my_logger.rs:84:27 [INFO] [stderr] | [INFO] [stderr] 84 | LoggerInitError { desc: desc } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `desc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/util.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / macro_rules! io_err { [INFO] [stderr] 10 | | ($desc:expr) => ( io::Error::new(io::ErrorKind::Other, $desc) ); [INFO] [stderr] 11 | | ($fmt:expr, $($arg:tt)*) => ( io::Error::new(io::ErrorKind::Other, format!($fmt, $($arg)*)) ); [INFO] [stderr] 12 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/relay/udp_relay.rs:115:9 [INFO] [stderr] | [INFO] [stderr] 115 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/relay/udp_relay.rs:114:19 [INFO] [stderr] | [INFO] [stderr] 114 | let res = self.cache.remove(p.borrow().addr()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/relay/udp_relay.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/relay/udp_relay.rs:138:19 [INFO] [stderr] | [INFO] [stderr] 138 | let res = p.borrow_mut().register(event_loop).map_err(|e| { [INFO] [stderr] | ___________________^ [INFO] [stderr] 139 | | self.destroy_processor(event_loop, token); [INFO] [stderr] 140 | | e [INFO] [stderr] 141 | | }); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/relay/tcp_processor.rs:150:16 [INFO] [stderr] | [INFO] [stderr] 150 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 151 | | if is_finished { [INFO] [stderr] 152 | | self.remote_interest = EventSet::readable(); [INFO] [stderr] 153 | | } else { [INFO] [stderr] 154 | | self.remote_interest = EventSet::readable() | EventSet::writable(); [INFO] [stderr] 155 | | } [INFO] [stderr] 156 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 150 | } else if is_finished { [INFO] [stderr] 151 | self.remote_interest = EventSet::readable(); [INFO] [stderr] 152 | } else { [INFO] [stderr] 153 | self.remote_interest = EventSet::readable() | EventSet::writable(); [INFO] [stderr] 154 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/mode/mod.rs:149:69 [INFO] [stderr] | [INFO] [stderr] 149 | .map(|d| d.as_secs() as u32 * 1000 + d.subsec_nanos() / 1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/mode/mod.rs:167:69 [INFO] [stderr] | [INFO] [stderr] 167 | .map(|d| d.as_secs() as u32 * 1000 + d.subsec_nanos() / 1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/config/mod.rs:159:24 [INFO] [stderr] | [INFO] [stderr] 159 | const HOST_PATHS: &'static [(&'static str, &'static str)] = &[("ident.me", "/"), [INFO] [stderr] | -^^^^^^^------------------------------- help: consider removing `'static`: `&[(&'static str, &'static str)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/config/mod.rs:159:35 [INFO] [stderr] | [INFO] [stderr] 159 | const HOST_PATHS: &'static [(&'static str, &'static str)] = &[("ident.me", "/"), [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/config/mod.rs:159:49 [INFO] [stderr] | [INFO] [stderr] 159 | const HOST_PATHS: &'static [(&'static str, &'static str)] = &[("ident.me", "/"), [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/asyncdns.rs:495:17 [INFO] [stderr] | [INFO] [stderr] 495 | if (l & 0b11000000) == 0b11000000 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1100_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/asyncdns.rs:495:32 [INFO] [stderr] | [INFO] [stderr] 495 | if (l & 0b11000000) == 0b11000000 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1100_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/asyncdns.rs:595:23 [INFO] [stderr] | [INFO] [stderr] 595 | let qr = (byte3 & 0b10000000) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/asyncdns.rs:596:23 [INFO] [stderr] | [INFO] [stderr] 596 | let tc = (byte3 & 0b00000010) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/asyncdns.rs:597:23 [INFO] [stderr] | [INFO] [stderr] 597 | let ra = (byte4 & 0b00000010) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/asyncdns.rs:598:26 [INFO] [stderr] | [INFO] [stderr] 598 | let rcode = (byte4 & 0b00001111) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/asyncdns.rs:668:16 [INFO] [stderr] | [INFO] [stderr] 668 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 669 | | if prefer_ipv6 { [INFO] [stderr] 670 | | vec!["2001:4860:4860::8888", "2001:4860:4860::8844"] [INFO] [stderr] 671 | | } else { [INFO] [stderr] 672 | | vec!["8.8.8.8", "8.8.4.4"] [INFO] [stderr] 673 | | } [INFO] [stderr] 674 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 668 | } else if prefer_ipv6 { [INFO] [stderr] 669 | vec!["2001:4860:4860::8888", "2001:4860:4860::8844"] [INFO] [stderr] 670 | } else { [INFO] [stderr] 671 | vec!["8.8.8.8", "8.8.4.4"] [INFO] [stderr] 672 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/util.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / macro_rules! io_err { [INFO] [stderr] 10 | | ($desc:expr) => ( io::Error::new(io::ErrorKind::Other, $desc) ); [INFO] [stderr] 11 | | ($fmt:expr, $($arg:tt)*) => ( io::Error::new(io::ErrorKind::Other, format!($fmt, $($arg)*)) ); [INFO] [stderr] 12 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/relay/udp_relay.rs:115:9 [INFO] [stderr] | [INFO] [stderr] 115 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/relay/udp_relay.rs:114:19 [INFO] [stderr] | [INFO] [stderr] 114 | let res = self.cache.remove(p.borrow().addr()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/relay/udp_relay.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/relay/udp_relay.rs:138:19 [INFO] [stderr] | [INFO] [stderr] 138 | let res = p.borrow_mut().register(event_loop).map_err(|e| { [INFO] [stderr] | ___________________^ [INFO] [stderr] 139 | | self.destroy_processor(event_loop, token); [INFO] [stderr] 140 | | e [INFO] [stderr] 141 | | }); [INFO] [stderr] | |__________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/relay/tcp_processor.rs:150:16 [INFO] [stderr] | [INFO] [stderr] 150 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 151 | | if is_finished { [INFO] [stderr] 152 | | self.remote_interest = EventSet::readable(); [INFO] [stderr] 153 | | } else { [INFO] [stderr] 154 | | self.remote_interest = EventSet::readable() | EventSet::writable(); [INFO] [stderr] 155 | | } [INFO] [stderr] 156 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 150 | } else if is_finished { [INFO] [stderr] 151 | self.remote_interest = EventSet::readable(); [INFO] [stderr] 152 | } else { [INFO] [stderr] 153 | self.remote_interest = EventSet::readable() | EventSet::writable(); [INFO] [stderr] 154 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/mode/mod.rs:149:69 [INFO] [stderr] | [INFO] [stderr] 149 | .map(|d| d.as_secs() as u32 * 1000 + d.subsec_nanos() / 1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/mode/mod.rs:167:69 [INFO] [stderr] | [INFO] [stderr] 167 | .map(|d| d.as_secs() as u32 * 1000 + d.subsec_nanos() / 1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/config/mod.rs:159:24 [INFO] [stderr] | [INFO] [stderr] 159 | const HOST_PATHS: &'static [(&'static str, &'static str)] = &[("ident.me", "/"), [INFO] [stderr] | -^^^^^^^------------------------------- help: consider removing `'static`: `&[(&'static str, &'static str)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/config/mod.rs:159:35 [INFO] [stderr] | [INFO] [stderr] 159 | const HOST_PATHS: &'static [(&'static str, &'static str)] = &[("ident.me", "/"), [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/config/mod.rs:159:49 [INFO] [stderr] | [INFO] [stderr] 159 | const HOST_PATHS: &'static [(&'static str, &'static str)] = &[("ident.me", "/"), [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/asyncdns.rs:495:17 [INFO] [stderr] | [INFO] [stderr] 495 | if (l & 0b11000000) == 0b11000000 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1100_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/asyncdns.rs:495:32 [INFO] [stderr] | [INFO] [stderr] 495 | if (l & 0b11000000) == 0b11000000 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1100_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/asyncdns.rs:595:23 [INFO] [stderr] | [INFO] [stderr] 595 | let qr = (byte3 & 0b10000000) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/asyncdns.rs:596:23 [INFO] [stderr] | [INFO] [stderr] 596 | let tc = (byte3 & 0b00000010) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/asyncdns.rs:597:23 [INFO] [stderr] | [INFO] [stderr] 597 | let ra = (byte4 & 0b00000010) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/asyncdns.rs:598:26 [INFO] [stderr] | [INFO] [stderr] 598 | let rcode = (byte4 & 0b00001111) as u16; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/asyncdns.rs:668:16 [INFO] [stderr] | [INFO] [stderr] 668 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 669 | | if prefer_ipv6 { [INFO] [stderr] 670 | | vec!["2001:4860:4860::8888", "2001:4860:4860::8844"] [INFO] [stderr] 671 | | } else { [INFO] [stderr] 672 | | vec!["8.8.8.8", "8.8.4.4"] [INFO] [stderr] 673 | | } [INFO] [stderr] 674 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 668 | } else if prefer_ipv6 { [INFO] [stderr] 669 | vec!["2001:4860:4860::8888", "2001:4860:4860::8844"] [INFO] [stderr] 670 | } else { [INFO] [stderr] 671 | vec!["8.8.8.8", "8.8.4.4"] [INFO] [stderr] 672 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/asyncdns.rs:741:26 [INFO] [stderr] | [INFO] [stderr] 741 | const IPV4_TESTS: [(&'static str, &'static str); 3] = [("8.8.8.8", "8.8.8.8"), [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/asyncdns.rs:741:40 [INFO] [stderr] | [INFO] [stderr] 741 | const IPV4_TESTS: [(&'static str, &'static str); 3] = [("8.8.8.8", "8.8.8.8"), [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/asyncdns.rs:746:26 [INFO] [stderr] | [INFO] [stderr] 746 | const IPV6_TESTS: [(&'static str, &'static str); 3] = [("2001:4860:4860::8888", [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/asyncdns.rs:746:40 [INFO] [stderr] | [INFO] [stderr] 746 | const IPV6_TESTS: [(&'static str, &'static str); 3] = [("2001:4860:4860::8888", [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/config/running_config.rs:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | env::home_dir() [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/config/running_config.rs:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | env::home_dir() [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/network.rs:17:22 [INFO] [stderr] | [INFO] [stderr] 17 | for i in 0..$bytes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try replacing the loop by: `arr[..$bytes.len()].clone_from_slice(&data[..])` [INFO] [stderr] ... [INFO] [stderr] 68 | Some(format!("{}", Ipv4Addr::from(slice2sized!(data, 4)))) [INFO] [stderr] | --------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/network.rs:17:22 [INFO] [stderr] | [INFO] [stderr] 17 | for i in 0..$bytes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try replacing the loop by: `arr[..$bytes.len()].clone_from_slice(&data[..])` [INFO] [stderr] ... [INFO] [stderr] 76 | Some(format!("{}", Ipv6Addr::from(slice2sized!(data, 16)))) [INFO] [stderr] | ---------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/network.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | res.ok_or(From::from(SocketError::ParseAddrFailed(format!("{}:{}", ip, port)))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| From::from(SocketError::ParseAddrFailed(format!("{}:{}", ip, port))))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/relay/mod.rs:110:25 [INFO] [stderr] | [INFO] [stderr] 110 | .and_then(|h| h.ok_or(From::from(DnsError::Timeout)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| From::from(DnsError::Timeout))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/relay/tcp_relay.rs:25:49 [INFO] [stderr] | [INFO] [stderr] 25 | TcpListener::bind(&socket_addr).or(Err(SocketError::BindAddrFailed(socket_addr)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(SocketError::BindAddrFailed(socket_addr)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/relay/tcp_relay.rs:159:9 [INFO] [stderr] | [INFO] [stderr] 159 | / self.processors.get(token).map(|p| { [INFO] [stderr] 160 | | debug!("{:?} timed out", p); [INFO] [stderr] 161 | | }); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 159 | if let Some(p) = self.processors.get(token) { if $ lvl . as_usize ( ) <= $ crate :: __slog_static_max_level ( ) . as_usize [INFO] [stderr] 160 | ( ) { [INFO] [stderr] 161 | static RS : $ crate :: RecordStatic < 'static > = $ crate :: RecordStatic { [INFO] [stderr] 162 | level : $ lvl , file : file ! ( ) , line : line ! ( ) , column : column ! ( [INFO] [stderr] 163 | ) , function : "" , module : module_path ! ( ) , target : module_path ! ( ) [INFO] [stderr] 164 | , } ; $ l . log ( [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/relay/udp_relay.rs:160:20 [INFO] [stderr] | [INFO] [stderr] 160 | if data.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!data.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/relay/udp_relay.rs:252:9 [INFO] [stderr] | [INFO] [stderr] 252 | / self.processors.get(token).map(|p| { [INFO] [stderr] 253 | | debug!("{:?} timed out", p); [INFO] [stderr] 254 | | }); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 252 | if let Some(p) = self.processors.get(token) { if $ lvl . as_usize ( ) <= $ crate :: __slog_static_max_level ( ) . as_usize [INFO] [stderr] 253 | ( ) { [INFO] [stderr] 254 | static RS : $ crate :: RecordStatic < 'static > = $ crate :: RecordStatic { [INFO] [stderr] 255 | level : $ lvl , file : file ! ( ) , line : line ! ( ) , column : column ! ( [INFO] [stderr] 256 | ) , function : "" , module : module_path ! ( ) , target : module_path ! ( ) [INFO] [stderr] 257 | , } ; $ l . log ( [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/relay/tcp_processor.rs:138:21 [INFO] [stderr] | [INFO] [stderr] 138 | let delay = self.proxy_conf.timeout as u64 * 1000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.proxy_conf.timeout)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/relay/tcp_processor.rs:251:42 [INFO] [stderr] | [INFO] [stderr] 251 | self.encryptor.decrypt(&buf).ok_or(From::from(ProcessError::DecryptFailed)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| From::from(ProcessError::DecryptFailed))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/relay/udp_processor.rs:84:21 [INFO] [stderr] | [INFO] [stderr] 84 | let delay = self.proxy_conf.timeout as u64 * 1000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.proxy_conf.timeout)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/relay/udp_processor.rs:138:46 [INFO] [stderr] | [INFO] [stderr] 138 | port_requests_map.entry(server_port).or_insert(vec![]).push(data); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/relay/udp_processor.rs:334:62 [INFO] [stderr] | [INFO] [stderr] 334 | let server_addr = my_try!(pair2addr(&ip, port.clone())); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*port` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mode::ServerChooser` [INFO] [stderr] --> src/mode/mod.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | / pub fn new() -> ServerChooser { [INFO] [stderr] 44 | | let mut rtts = Dict::default(); [INFO] [stderr] 45 | | [INFO] [stderr] 46 | | // reduce some compute... [INFO] [stderr] ... | [INFO] [stderr] 57 | | } [INFO] [stderr] 58 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | impl Default for mode::ServerChooser { [INFO] [stderr] 43 | fn default() -> Self { [INFO] [stderr] 44 | Self::new() [INFO] [stderr] 45 | } [INFO] [stderr] 46 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/mode/mod.rs:77:59 [INFO] [stderr] | [INFO] [stderr] 77 | let is_choose_min = self.rng.gen::() < (0.8 * u8::max_value() as f32) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(u8::max_value())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/mode/mod.rs:107:21 [INFO] [stderr] | [INFO] [stderr] 107 | self.rtts.get_mut(server_conf).map(|rtt| rtt.update(&time)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(rtt) = self.rtts.get_mut(server_conf) { rtt.update(&time) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/mode/mod.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | self.rtts.get_mut(server_conf).map(|rtt| rtt.punish()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(rtt) = self.rtts.get_mut(server_conf) { rtt.punish() }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/mode/mod.rs:143:20 [INFO] [stderr] | [INFO] [stderr] 143 | self.rto = self.rtt as u64 + 4 * self.dev as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(self.rtt)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/mode/mod.rs:143:42 [INFO] [stderr] | [INFO] [stderr] 143 | self.rto = self.rtt as u64 + 4 * self.dev as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(self.dev)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/mode/mod.rs:147:30 [INFO] [stderr] | [INFO] [stderr] 147 | self.last_activity = last_activity.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*last_activity` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/mode/mod.rs:149:50 [INFO] [stderr] | [INFO] [stderr] 149 | .map(|d| d.as_secs() as u32 * 1000 + d.subsec_nanos() / 1000000); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `d.subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::duration_subsec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/mode/mod.rs:167:50 [INFO] [stderr] | [INFO] [stderr] 167 | .map(|d| d.as_secs() as u32 * 1000 + d.subsec_nanos() / 1000000); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `d.subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/proxy_config.rs:92:30 [INFO] [stderr] | [INFO] [stderr] 92 | slice2str(s).ok_or(ConfigError::Other("decode config failed: invalid UTF-8 chars" [INFO] [stderr] | ______________________________^ [INFO] [stderr] 93 | | .to_string()))?; [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 92 | slice2str(s).ok_or_else(|| ConfigError::Other("decode config failed: invalid UTF-8 chars" [INFO] [stderr] 93 | .to_string()))?; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/config/proxy_config.rs:124:25 [INFO] [stderr] | [INFO] [stderr] 124 | if v < 0 || (u16::max_value() as i64) < v { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(u16::max_value())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/config/running_config.rs:109:14 [INFO] [stderr] | [INFO] [stderr] 109 | .or(Some(PathBuf::from(file_name))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| Some(PathBuf::from(file_name)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/network.rs:17:22 [INFO] [stderr] | [INFO] [stderr] 17 | for i in 0..$bytes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try replacing the loop by: `arr[..$bytes.len()].clone_from_slice(&data[..])` [INFO] [stderr] ... [INFO] [stderr] 68 | Some(format!("{}", Ipv4Addr::from(slice2sized!(data, 4)))) [INFO] [stderr] | --------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/network.rs:17:22 [INFO] [stderr] | [INFO] [stderr] 17 | for i in 0..$bytes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try replacing the loop by: `arr[..$bytes.len()].clone_from_slice(&data[..])` [INFO] [stderr] ... [INFO] [stderr] 76 | Some(format!("{}", Ipv6Addr::from(slice2sized!(data, 16)))) [INFO] [stderr] | ---------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/network.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | res.ok_or(From::from(SocketError::ParseAddrFailed(format!("{}:{}", ip, port)))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| From::from(SocketError::ParseAddrFailed(format!("{}:{}", ip, port))))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/relay/mod.rs:110:25 [INFO] [stderr] | [INFO] [stderr] 110 | .and_then(|h| h.ok_or(From::from(DnsError::Timeout)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| From::from(DnsError::Timeout))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/relay/tcp_relay.rs:25:49 [INFO] [stderr] | [INFO] [stderr] 25 | TcpListener::bind(&socket_addr).or(Err(SocketError::BindAddrFailed(socket_addr)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(SocketError::BindAddrFailed(socket_addr)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/relay/tcp_relay.rs:159:9 [INFO] [stderr] | [INFO] [stderr] 159 | / self.processors.get(token).map(|p| { [INFO] [stderr] 160 | | debug!("{:?} timed out", p); [INFO] [stderr] 161 | | }); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 159 | if let Some(p) = self.processors.get(token) { if $ lvl . as_usize ( ) <= $ crate :: __slog_static_max_level ( ) . as_usize [INFO] [stderr] 160 | ( ) { [INFO] [stderr] 161 | static RS : $ crate :: RecordStatic < 'static > = $ crate :: RecordStatic { [INFO] [stderr] 162 | level : $ lvl , file : file ! ( ) , line : line ! ( ) , column : column ! ( [INFO] [stderr] 163 | ) , function : "" , module : module_path ! ( ) , target : module_path ! ( ) [INFO] [stderr] 164 | , } ; $ l . log ( [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/relay/udp_relay.rs:160:20 [INFO] [stderr] | [INFO] [stderr] 160 | if data.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!data.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/relay/udp_relay.rs:252:9 [INFO] [stderr] | [INFO] [stderr] 252 | / self.processors.get(token).map(|p| { [INFO] [stderr] 253 | | debug!("{:?} timed out", p); [INFO] [stderr] 254 | | }); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 252 | if let Some(p) = self.processors.get(token) { if $ lvl . as_usize ( ) <= $ crate :: __slog_static_max_level ( ) . as_usize [INFO] [stderr] 253 | ( ) { [INFO] [stderr] 254 | static RS : $ crate :: RecordStatic < 'static > = $ crate :: RecordStatic { [INFO] [stderr] 255 | level : $ lvl , file : file ! ( ) , line : line ! ( ) , column : column ! ( [INFO] [stderr] 256 | ) , function : "" , module : module_path ! ( ) , target : module_path ! ( ) [INFO] [stderr] 257 | , } ; $ l . log ( [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/crypto/encryptor.rs:396:27 [INFO] [stderr] | [INFO] [stderr] 396 | static ref CACHE: Mutex>>> = [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/crypto/encryptor.rs:396:27 [INFO] [stderr] | [INFO] [stderr] 396 | static ref CACHE: Mutex>>> = [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/relay/tcp_processor.rs:138:21 [INFO] [stderr] | [INFO] [stderr] 138 | let delay = self.proxy_conf.timeout as u64 * 1000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.proxy_conf.timeout)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/relay/tcp_processor.rs:251:42 [INFO] [stderr] | [INFO] [stderr] 251 | self.encryptor.decrypt(&buf).ok_or(From::from(ProcessError::DecryptFailed)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| From::from(ProcessError::DecryptFailed))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/asyncdns.rs:188:16 [INFO] [stderr] | [INFO] [stderr] 188 | if self.hostname_to_tokens.get(&hostname).unwrap().is_empty() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.hostname_to_tokens[&hostname]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/asyncdns.rs:223:43 [INFO] [stderr] | [INFO] [stderr] 223 | fn local_resolve(&mut self, hostname: &String) -> Result> { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 223 | fn local_resolve(&mut self, hostname: &str) -> Result> { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `hostname.clone()` to [INFO] [stderr] | [INFO] [stderr] 235 | err_from!(Error::InvalidHost(hostname.to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/relay/udp_processor.rs:84:21 [INFO] [stderr] | [INFO] [stderr] 84 | let delay = self.proxy_conf.timeout as u64 * 1000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.proxy_conf.timeout)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/asyncdns.rs:595:14 [INFO] [stderr] | [INFO] [stderr] 595 | let qr = (byte3 & 0b10000000) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(byte3 & 0b10000000)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/asyncdns.rs:596:14 [INFO] [stderr] | [INFO] [stderr] 596 | let tc = (byte3 & 0b00000010) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(byte3 & 0b00000010)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/asyncdns.rs:597:14 [INFO] [stderr] | [INFO] [stderr] 597 | let ra = (byte4 & 0b00000010) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(byte4 & 0b00000010)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/asyncdns.rs:598:17 [INFO] [stderr] | [INFO] [stderr] 598 | let rcode = (byte4 & 0b00001111) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(byte4 & 0b00001111)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/relay/udp_processor.rs:138:46 [INFO] [stderr] | [INFO] [stderr] 138 | port_requests_map.entry(server_port).or_insert(vec![]).push(data); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/relay/udp_processor.rs:334:62 [INFO] [stderr] | [INFO] [stderr] 334 | let server_addr = my_try!(pair2addr(&ip, port.clone())); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*port` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mode::ServerChooser` [INFO] [stderr] --> src/mode/mod.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | / pub fn new() -> ServerChooser { [INFO] [stderr] 44 | | let mut rtts = Dict::default(); [INFO] [stderr] 45 | | [INFO] [stderr] 46 | | // reduce some compute... [INFO] [stderr] ... | [INFO] [stderr] 57 | | } [INFO] [stderr] 58 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | impl Default for mode::ServerChooser { [INFO] [stderr] 43 | fn default() -> Self { [INFO] [stderr] 44 | Self::new() [INFO] [stderr] 45 | } [INFO] [stderr] 46 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `collections::holder::Holder` [INFO] [stderr] --> src/collections/holder.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | / pub fn new() -> Holder { [INFO] [stderr] 19 | | Holder { [INFO] [stderr] 20 | | items: Dict::default(), [INFO] [stderr] 21 | | exclusions: Set::default(), [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 12 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/mode/mod.rs:77:59 [INFO] [stderr] | [INFO] [stderr] 77 | let is_choose_min = self.rng.gen::() < (0.8 * u8::max_value() as f32) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(u8::max_value())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/mode/mod.rs:107:21 [INFO] [stderr] | [INFO] [stderr] 107 | self.rtts.get_mut(server_conf).map(|rtt| rtt.update(&time)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(rtt) = self.rtts.get_mut(server_conf) { rtt.update(&time) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/mode/mod.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | self.rtts.get_mut(server_conf).map(|rtt| rtt.punish()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(rtt) = self.rtts.get_mut(server_conf) { rtt.punish() }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/mode/mod.rs:143:20 [INFO] [stderr] | [INFO] [stderr] 143 | self.rto = self.rtt as u64 + 4 * self.dev as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(self.rtt)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/mode/mod.rs:143:42 [INFO] [stderr] | [INFO] [stderr] 143 | self.rto = self.rtt as u64 + 4 * self.dev as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(self.dev)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/mode/mod.rs:147:30 [INFO] [stderr] | [INFO] [stderr] 147 | self.last_activity = last_activity.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*last_activity` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/mode/mod.rs:149:50 [INFO] [stderr] | [INFO] [stderr] 149 | .map(|d| d.as_secs() as u32 * 1000 + d.subsec_nanos() / 1000000); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `d.subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::duration_subsec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/mode/mod.rs:167:50 [INFO] [stderr] | [INFO] [stderr] 167 | .map(|d| d.as_secs() as u32 * 1000 + d.subsec_nanos() / 1000000); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `d.subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/proxy_config.rs:92:30 [INFO] [stderr] | [INFO] [stderr] 92 | slice2str(s).ok_or(ConfigError::Other("decode config failed: invalid UTF-8 chars" [INFO] [stderr] | ______________________________^ [INFO] [stderr] 93 | | .to_string()))?; [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 92 | slice2str(s).ok_or_else(|| ConfigError::Other("decode config failed: invalid UTF-8 chars" [INFO] [stderr] 93 | .to_string()))?; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/config/proxy_config.rs:124:25 [INFO] [stderr] | [INFO] [stderr] 124 | if v < 0 || (u16::max_value() as i64) < v { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(u16::max_value())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/config/running_config.rs:109:14 [INFO] [stderr] | [INFO] [stderr] 109 | .or(Some(PathBuf::from(file_name))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| Some(PathBuf::from(file_name)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/crypto/encryptor.rs:396:27 [INFO] [stderr] | [INFO] [stderr] 396 | static ref CACHE: Mutex>>> = [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/crypto/encryptor.rs:396:27 [INFO] [stderr] | [INFO] [stderr] 396 | static ref CACHE: Mutex>>> = [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/asyncdns.rs:188:16 [INFO] [stderr] | [INFO] [stderr] 188 | if self.hostname_to_tokens.get(&hostname).unwrap().is_empty() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.hostname_to_tokens[&hostname]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/asyncdns.rs:223:43 [INFO] [stderr] | [INFO] [stderr] 223 | fn local_resolve(&mut self, hostname: &String) -> Result> { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 223 | fn local_resolve(&mut self, hostname: &str) -> Result> { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `hostname.clone()` to [INFO] [stderr] | [INFO] [stderr] 235 | err_from!(Error::InvalidHost(hostname.to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/asyncdns.rs:595:14 [INFO] [stderr] | [INFO] [stderr] 595 | let qr = (byte3 & 0b10000000) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(byte3 & 0b10000000)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/asyncdns.rs:596:14 [INFO] [stderr] | [INFO] [stderr] 596 | let tc = (byte3 & 0b00000010) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(byte3 & 0b00000010)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/asyncdns.rs:597:14 [INFO] [stderr] | [INFO] [stderr] 597 | let ra = (byte4 & 0b00000010) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(byte4 & 0b00000010)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/asyncdns.rs:598:17 [INFO] [stderr] | [INFO] [stderr] 598 | let rcode = (byte4 & 0b00001111) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(byte4 & 0b00001111)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `collections::holder::Holder` [INFO] [stderr] --> src/collections/holder.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | / pub fn new() -> Holder { [INFO] [stderr] 19 | | Holder { [INFO] [stderr] 20 | | items: Dict::default(), [INFO] [stderr] 21 | | exclusions: Set::default(), [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 12 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> tests/encrypt.rs:11:18 [INFO] [stderr] | [INFO] [stderr] 11 | const PASSWORD: &'static str = "foo"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> tests/encrypt.rs:12:18 [INFO] [stderr] | [INFO] [stderr] 12 | const MESSAGES: &'static [&'static str] = &["a", "hi", "foo", "hello", "world"]; [INFO] [stderr] | -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> tests/encrypt.rs:12:28 [INFO] [stderr] | [INFO] [stderr] 12 | const MESSAGES: &'static [&'static str] = &["a", "hi", "foo", "hello", "world"]; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> tests/encrypt.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | / macro_rules! assert_raw_encrypt { [INFO] [stderr] 40 | | ($cryptor:expr, $data:expr) => ( assert_do!($cryptor, raw_encrypt, $data) ) [INFO] [stderr] 41 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> tests/encrypt.rs:43:1 [INFO] [stderr] | [INFO] [stderr] 43 | / macro_rules! assert_raw_decrypt { [INFO] [stderr] 44 | | ($cryptor:expr, $data:expr) => ( assert_do!($cryptor, raw_decrypt, $data) ) [INFO] [stderr] 45 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `MESSAGES` [INFO] [stderr] --> tests/encrypt.rs:82:18 [INFO] [stderr] | [INFO] [stderr] 82 | for i in 0..MESSAGES.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 82 | for (i, ) in MESSAGES.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> tests/encrypt.rs:108:13 [INFO] [stderr] | [INFO] [stderr] 108 | stream.write(&encrypted).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `shadowsocks`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "304d8795f0c8e53e45df667b4a4856e40dcbb4a6d04d6f5fb29ec933e4e1adaa"` [INFO] running `"docker" "rm" "-f" "304d8795f0c8e53e45df667b4a4856e40dcbb4a6d04d6f5fb29ec933e4e1adaa"` [INFO] [stdout] 304d8795f0c8e53e45df667b4a4856e40dcbb4a6d04d6f5fb29ec933e4e1adaa