[INFO] cloning repository https://github.com/hjrgrn/arti-chat [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hjrgrn/arti-chat" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhjrgrn%2Farti-chat", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhjrgrn%2Farti-chat'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] fa5a87c29b0fabf2c29b2291bc4f881d48b0e07f [INFO] linting hjrgrn/arti-chat against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhjrgrn%2Farti-chat" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/hjrgrn/arti-chat [INFO] finished tweaking git repo https://github.com/hjrgrn/arti-chat [INFO] tweaked toml for git repo https://github.com/hjrgrn/arti-chat written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/hjrgrn/arti-chat on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/hjrgrn/arti-chat already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded strum v0.27.1 [INFO] [stderr] Downloaded coarsetime v0.1.36 [INFO] [stderr] Downloaded filetime v0.2.25 [INFO] [stderr] Downloaded dyn-clone v1.0.19 [INFO] [stderr] Downloaded serde_spanned v0.6.8 [INFO] [stderr] Downloaded async-signal v0.2.10 [INFO] [stderr] Downloaded tor-log-ratelim v0.29.0 [INFO] [stderr] Downloaded bounded-vec-deque v0.1.1 [INFO] [stderr] Downloaded growable-bloom-filter v2.1.1 [INFO] [stderr] Downloaded tracing-test-macro v0.2.5 [INFO] [stderr] Downloaded const-random v0.1.18 [INFO] [stderr] Downloaded typeid v1.0.3 [INFO] [stderr] Downloaded serde_with_macros v3.12.0 [INFO] [stderr] Downloaded inventory v0.3.20 [INFO] [stderr] Downloaded typed-index-collections v3.1.0 [INFO] [stderr] Downloaded hostname-validator v1.1.1 [INFO] [stderr] Downloaded anyhow v1.0.97 [INFO] [stderr] Downloaded pest_generator v2.8.0 [INFO] [stderr] Downloaded tor-consdiff v0.29.0 [INFO] [stderr] Downloaded yaml-rust2 v0.8.1 [INFO] [stderr] Downloaded tor-hsclient v0.29.0 [INFO] [stderr] Downloaded arti-client v0.29.0 [INFO] [stderr] Downloaded pest v2.8.0 [INFO] [stderr] Downloaded rusqlite v0.32.1 [INFO] [stderr] Downloaded dynasm v3.2.0 [INFO] [stderr] Downloaded tor-proto v0.29.0 [INFO] [stderr] Downloaded tor-dirmgr v0.29.0 [INFO] [stderr] Downloaded chrono v0.4.40 [INFO] [stderr] Downloaded serde_with v3.12.0 [INFO] [stderr] Downloaded tor-guardmgr v0.29.0 [INFO] [stderr] Downloaded zerovec v0.11.1 [INFO] [stderr] Downloaded p521 v0.13.3 [INFO] [stderr] Downloaded postage v0.5.0 [INFO] [stderr] Downloaded figment v0.10.19 [INFO] [stderr] Downloaded tor-circmgr v0.29.0 [INFO] [stderr] Downloaded asn1-rs v0.7.1 [INFO] [stderr] Downloaded derive-deftly-macros v1.0.1 [INFO] [stderr] Downloaded tor-chanmgr v0.29.0 [INFO] [stderr] Downloaded tor-netdir v0.29.0 [INFO] [stderr] Downloaded tor-cell v0.29.0 [INFO] [stderr] Downloaded der-parser v10.0.0 [INFO] [stderr] Downloaded ed25519-dalek v2.1.1 [INFO] [stderr] Downloaded darling_core v0.14.4 [INFO] [stderr] Downloaded tor-ptmgr v0.29.0 [INFO] [stderr] Downloaded futures-await-test v0.3.0 [INFO] [stderr] Downloaded erased-serde v0.4.6 [INFO] [stderr] Downloaded typetag-impl v0.2.20 [INFO] [stderr] Downloaded typetag v0.2.20 [INFO] [stderr] Downloaded flate2 v1.1.1 [INFO] [stderr] Downloaded liblzma-sys v0.3.13 [INFO] [stderr] Downloaded tor-keymgr v0.29.0 [INFO] [stderr] Downloaded ssh-key v0.6.7 [INFO] [stderr] Downloaded tor-hscrypto v0.29.0 [INFO] [stderr] Downloaded derive-deftly v1.0.1 [INFO] [stderr] Downloaded bytemuck v1.22.0 [INFO] [stderr] Downloaded futures-await-test-macro v0.3.0 [INFO] [stderr] Downloaded tor-rpcbase v0.29.0 [INFO] [stderr] Downloaded pest_meta v2.8.0 [INFO] [stderr] Downloaded pest_derive v2.8.0 [INFO] [stderr] Downloaded tor-dirclient v0.29.0 [INFO] [stderr] Downloaded tor-persist v0.29.0 [INFO] [stderr] Downloaded tor-rtmock v0.29.0 [INFO] [stderr] Downloaded rangemap v1.5.1 [INFO] [stderr] Downloaded tor-llcrypto v0.29.0 [INFO] [stderr] Downloaded memmap2 v0.9.5 [INFO] [stderr] Downloaded hashx v0.3.0 [INFO] [stderr] Downloaded tor-cert v0.29.0 [INFO] [stderr] Downloaded tor-checkable v0.29.0 [INFO] [stderr] Downloaded tor-key-forge v0.29.0 [INFO] [stderr] Downloaded tor-linkspec v0.29.0 [INFO] [stderr] Downloaded cookie-factory v0.3.3 [INFO] [stderr] Downloaded amplify_derive v4.0.1 [INFO] [stderr] Downloaded amplify v4.8.0 [INFO] [stderr] Downloaded darling v0.14.4 [INFO] [stderr] Downloaded derive_builder_fork_arti v0.11.2 [INFO] [stderr] Downloaded directories v6.0.0 [INFO] [stderr] Downloaded shellexpand v3.1.0 [INFO] [stderr] Downloaded priority-queue v2.3.1 [INFO] [stderr] Downloaded num_enum_derive v0.7.3 [INFO] [stderr] Downloaded num_enum v0.7.3 [INFO] [stderr] Downloaded data-encoding v2.8.0 [INFO] [stderr] Downloaded dynasmrt v3.2.0 [INFO] [stderr] Downloaded equix v0.2.3 [INFO] [stderr] Downloaded rand_jitter v0.5.0 [INFO] [stderr] Downloaded amplify_syn v2.0.1 [INFO] [stderr] Downloaded amplify_num v0.5.3 [INFO] [stderr] Downloaded uncased v0.9.10 [INFO] [stderr] Downloaded darling_macro v0.14.4 [INFO] [stderr] Downloaded ucd-trie v0.1.7 [INFO] [stderr] Downloaded json5 v0.4.1 [INFO] [stderr] Downloaded pathdiff v0.2.3 [INFO] [stderr] Downloaded ron v0.8.1 [INFO] [stderr] Downloaded crunchy v0.2.3 [INFO] [stderr] Downloaded tiny-keccak v2.0.2 [INFO] [stderr] Downloaded const-random-macro v0.1.16 [INFO] [stderr] Downloaded rust-ini v0.20.0 [INFO] [stderr] Downloaded config v0.14.1 [INFO] [stderr] Downloaded k12 v0.3.0 [INFO] [stderr] Downloaded async-compression v0.4.22 [INFO] [stderr] Downloaded fslock v0.2.1 [INFO] [stderr] Downloaded sanitize-filename v0.6.0 [INFO] [stderr] Downloaded by_address v1.2.1 [INFO] [stderr] Downloaded tor-bytes v0.29.0 [INFO] [stderr] Downloaded caret v0.5.1 [INFO] [stderr] Downloaded tor-protover v0.29.0 [INFO] [stderr] Downloaded slotmap-careful v0.2.3 [INFO] [stderr] Downloaded ascii v1.1.0 [INFO] [stderr] Downloaded atomic v0.6.0 [INFO] [stderr] Downloaded derive_builder_core_fork_arti v0.11.2 [INFO] [stderr] Downloaded redox_users v0.5.0 [INFO] [stderr] Downloaded dirs-sys v0.5.0 [INFO] [stderr] Downloaded derive-deftly-macros v0.14.6 [INFO] [stderr] Downloaded derive-deftly v0.14.6 [INFO] [stderr] Downloaded zerocopy v0.8.24 [INFO] [stderr] Downloaded async-std v1.13.1 [INFO] [stderr] Downloaded openssl v0.10.72 [INFO] [stderr] Downloaded rustix v1.0.5 [INFO] [stderr] Downloaded syn v2.0.100 [INFO] [stderr] Downloaded dlv-list v0.5.2 [INFO] [stderr] Downloaded ordered-multimap v0.7.3 [INFO] [stderr] Downloaded arraydeque v0.5.1 [INFO] [stderr] Downloaded secrecy v0.10.3 [INFO] [stderr] Downloaded serde_bytes v0.11.17 [INFO] [stderr] Downloaded humantime-serde v1.1.1 [INFO] [stderr] Downloaded glob-match v0.2.1 [INFO] [stderr] Downloaded redox_users v0.4.6 [INFO] [stderr] Downloaded fslock-arti-fork v0.2.0 [INFO] [stderr] Downloaded fslock-guard v0.2.2 [INFO] [stderr] Downloaded assert_matches v1.5.0 [INFO] [stderr] Downloaded tracing-test v0.2.5 [INFO] [stderr] Downloaded downcast-rs v2.0.1 [INFO] [stderr] Downloaded tor-geoip v0.29.0 [INFO] [stderr] Downloaded ssh-cipher v0.2.0 [INFO] [stderr] Downloaded fluid-let v1.0.0 [INFO] [stderr] Downloaded safelog v0.4.5 [INFO] [stderr] Downloaded derive_builder_macro_fork_arti v0.11.2 [INFO] [stderr] Downloaded hashbrown v0.15.2 [INFO] [stderr] Downloaded winnow v0.7.6 [INFO] [stderr] Downloaded tor-netdoc v0.29.0 [INFO] [stderr] Downloaded icu_properties_data v1.5.1 [INFO] [stderr] Downloaded wasix v0.12.21 [INFO] [stderr] Downloaded tor-hsservice v0.29.0 [INFO] [stderr] Downloaded tracing-bunyan-formatter v0.3.10 [INFO] [stderr] Downloaded fixed-capacity-vec v1.0.1 [INFO] [stderr] Downloaded ssh-encoding v0.2.0 [INFO] [stderr] Downloaded inout v0.1.4 [INFO] [stderr] Downloaded asn1-rs-derive v0.6.0 [INFO] [stderr] Downloaded merlin v3.0.0 [INFO] [stderr] Downloaded rdrand v0.8.3 [INFO] [stderr] Downloaded base64ct v1.7.3 [INFO] [stderr] Downloaded oneshot-fused-workaround v0.2.1 [INFO] [stderr] Downloaded dirs v6.0.0 [INFO] [stderr] Downloaded indexmap v2.9.0 [INFO] [stderr] Downloaded toml_edit v0.22.24 [INFO] [stderr] Downloaded zerocopy-derive v0.8.24 [INFO] [stderr] Downloaded icu_collections v1.5.0 [INFO] [stderr] Downloaded zerovec v0.10.4 [INFO] [stderr] Downloaded libm v0.2.11 [INFO] [stderr] Downloaded cc v1.2.18 [INFO] [stderr] Downloaded tokio-util v0.7.14 [INFO] [stderr] Downloaded derive_more v2.0.1 [INFO] [stderr] Downloaded tor-rtcompat v0.29.0 [INFO] [stderr] Downloaded liblzma v0.3.6 [INFO] [stderr] Downloaded tor-socksproto v0.29.0 [INFO] [stderr] Downloaded pwd-grp v1.0.0 [INFO] [stderr] Downloaded fs-mistrust v0.9.1 [INFO] [stderr] Downloaded rand v0.9.0 [INFO] [stderr] Downloaded tor-config v0.29.0 [INFO] [stderr] Downloaded tor-memquota v0.29.0 [INFO] [stderr] Downloaded icu_normalizer_data v1.5.1 [INFO] [stderr] Downloaded icu_normalizer v1.5.0 [INFO] [stderr] Downloaded icu_locid_transform_data v1.5.1 [INFO] [stderr] Downloaded icu_locid v1.5.0 [INFO] [stderr] Downloaded writeable v0.5.5 [INFO] [stderr] Downloaded icu_provider v1.5.0 [INFO] [stderr] Downloaded icu_properties v1.5.1 [INFO] [stderr] Downloaded polling v3.7.4 [INFO] [stderr] Downloaded async-io v2.4.0 [INFO] [stderr] Downloaded event-listener v5.4.0 [INFO] [stderr] Downloaded async_executors v0.7.0 [INFO] [stderr] Downloaded bumpalo v3.17.0 [INFO] [stderr] Downloaded openssl-sys v0.9.107 [INFO] [stderr] Downloaded schannel v0.1.27 [INFO] [stderr] Downloaded tempfile v3.19.1 [INFO] [stderr] Downloaded miniz_oxide v0.8.8 [INFO] [stderr] Downloaded bitflags v2.9.0 [INFO] [stderr] Downloaded redox_syscall v0.5.11 [INFO] [stderr] Downloaded futures v0.3.31 [INFO] [stderr] Downloaded derive_more-impl v2.0.1 [INFO] [stderr] Downloaded tor-config-path v0.29.0 [INFO] [stderr] Downloaded tor-async-utils v0.29.0 [INFO] [stderr] Downloaded notify v8.0.0 [INFO] [stderr] Downloaded toml v0.8.20 [INFO] [stderr] Downloaded tor-basic-utils v0.29.0 [INFO] [stderr] Downloaded tor-relay-selection v0.29.0 [INFO] [stderr] Downloaded tinystr v0.7.6 [INFO] [stderr] Downloaded synstructure v0.13.1 [INFO] [stderr] Downloaded zerovec-derive v0.10.3 [INFO] [stderr] Downloaded futures-lite v2.6.0 [INFO] [stderr] Downloaded semver v1.0.26 [INFO] [stderr] Downloaded educe v0.4.23 [INFO] [stderr] Downloaded security-framework-sys v2.14.0 [INFO] [stderr] Downloaded errno v0.3.11 [INFO] [stderr] Downloaded socket2 v0.5.9 [INFO] [stderr] Downloaded autocfg v1.4.0 [INFO] [stderr] Downloaded rustversion v1.0.20 [INFO] [stderr] Downloaded tor-error v0.29.0 [INFO] [stderr] Downloaded derive_arbitrary v1.4.1 [INFO] [stderr] Downloaded convert_case v0.7.1 [INFO] [stderr] Downloaded proc-macro2 v1.0.94 [INFO] [stderr] Downloaded tracing-core v0.1.33 [INFO] [stderr] Downloaded tor-units v0.29.0 [INFO] [stderr] Downloaded visible v0.0.1 [INFO] [stderr] Downloaded weak-table v0.3.2 [INFO] [stderr] Downloaded utf16_iter v1.0.5 [INFO] [stderr] Downloaded write16 v1.0.0 [INFO] [stderr] Downloaded icu_locid_transform v1.5.0 [INFO] [stderr] Downloaded litemap v0.7.5 [INFO] [stderr] Downloaded icu_provider_macros v1.5.0 [INFO] [stderr] Downloaded yoke v0.7.5 [INFO] [stderr] Downloaded async-native-tls v0.5.0 [INFO] [stderr] Downloaded async-trait v0.1.88 [INFO] [stderr] Downloaded async-executor v1.13.1 [INFO] [stderr] Downloaded async-global-executor v2.4.1 [INFO] [stderr] Downloaded asynchronous-codec v0.7.0 [INFO] [stderr] Downloaded gethostname v0.2.3 [INFO] [stderr] Downloaded smallvec v1.15.0 [INFO] [stderr] Downloaded retry-error v0.6.3 [INFO] [stderr] Downloaded tor-general-addr v0.29.0 [INFO] [stderr] Downloaded tracing-attributes v0.1.28 [INFO] [stderr] Downloaded value-bag v1.11.1 [INFO] [stderr] Downloaded humantime v2.2.0 [INFO] [stderr] Downloaded yoke-derive v0.7.5 [INFO] [stderr] Downloaded idna_adapter v1.2.0 [INFO] [stderr] Downloaded async-process v2.3.0 [INFO] [stderr] Downloaded kv-log-macro v1.0.7 [INFO] [stderr] Downloaded blanket v0.3.0 [INFO] [stderr] Downloaded enum-ordinalize v3.1.15 [INFO] [stderr] Downloaded strum_macros v0.27.1 [INFO] [stderr] Downloaded serde_ignored v0.1.11 [INFO] [stderr] Downloaded async-channel v1.9.0 [INFO] [stderr] Downloaded time-macros v0.2.22 [INFO] [stderr] Downloaded tracing-log v0.1.4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] ae21c3adc2613036fbf3cad9b9ee805e300143eb916d45b9d47f971cfbc0f5f3 [INFO] running `Command { std: "docker" "start" "-a" "ae21c3adc2613036fbf3cad9b9ee805e300143eb916d45b9d47f971cfbc0f5f3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ae21c3adc2613036fbf3cad9b9ee805e300143eb916d45b9d47f971cfbc0f5f3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ae21c3adc2613036fbf3cad9b9ee805e300143eb916d45b9d47f971cfbc0f5f3", kill_on_drop: false }` [INFO] [stdout] ae21c3adc2613036fbf3cad9b9ee805e300143eb916d45b9d47f971cfbc0f5f3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 7a367d536ba84183339cc5e9a6b503d2db3a56f9f8d4fb4b62c3c6915b015618 [INFO] running `Command { std: "docker" "start" "-a" "7a367d536ba84183339cc5e9a6b503d2db3a56f9f8d4fb4b62c3c6915b015618", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.94 [INFO] [stderr] Compiling unicode-ident v1.0.18 [INFO] [stderr] Compiling libc v0.2.171 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling autocfg v1.4.0 [INFO] [stderr] Compiling typenum v1.18.0 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Checking pin-project-lite v0.2.16 [INFO] [stderr] Checking once_cell v1.21.3 [INFO] [stderr] Checking memchr v2.7.4 [INFO] [stderr] Checking futures-core v0.3.31 [INFO] [stderr] Compiling thiserror v2.0.12 [INFO] [stderr] Checking futures-io v0.3.31 [INFO] [stderr] Checking value-bag v1.11.1 [INFO] [stderr] Compiling pkg-config v0.3.32 [INFO] [stderr] Checking smallvec v1.15.0 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking futures-sink v0.3.31 [INFO] [stderr] Checking log v0.4.27 [INFO] [stderr] Checking tracing-core v0.1.33 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Checking const-oid v0.9.6 [INFO] [stderr] Checking subtle v2.6.1 [INFO] [stderr] Checking futures-task v0.3.31 [INFO] [stderr] Compiling rustversion v1.0.20 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Checking parking v2.2.1 [INFO] [stderr] Checking stable_deref_trait v1.2.0 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling hashbrown v0.15.2 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Compiling paste v1.0.15 [INFO] [stderr] Compiling semver v1.0.26 [INFO] [stderr] Compiling toml_datetime v0.6.8 [INFO] [stderr] Compiling winnow v0.7.6 [INFO] [stderr] Compiling convert_case v0.7.1 [INFO] [stderr] Compiling lock_api v0.4.12 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling fnv v1.0.7 [INFO] [stderr] Compiling jobserver v0.1.33 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling unicode-xid v0.2.6 [INFO] [stderr] Checking fastrand v2.3.0 [INFO] [stderr] Compiling ident_case v1.0.1 [INFO] [stderr] Compiling parking_lot_core v0.9.10 [INFO] [stderr] Compiling syn v2.0.100 [INFO] [stderr] Checking concurrent-queue v2.5.0 [INFO] [stderr] Compiling indexmap v2.9.0 [INFO] [stderr] Checking event-listener v5.4.0 [INFO] [stderr] Checking writeable v0.5.5 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Checking litemap v0.7.5 [INFO] [stderr] Checking scopeguard v1.2.0 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Compiling cc v1.2.18 [INFO] [stderr] Compiling libm v0.2.11 [INFO] [stderr] Compiling icu_locid_transform_data v1.5.1 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking event-listener-strategy v0.5.4 [INFO] [stderr] Checking futures-lite v2.6.0 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling zerocopy v0.8.24 [INFO] [stderr] Compiling icu_properties_data v1.5.1 [INFO] [stderr] Compiling keccak v0.1.5 [INFO] [stderr] Checking regex-syntax v0.8.5 [INFO] [stderr] Checking linux-raw-sys v0.4.15 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Compiling itertools v0.14.0 [INFO] [stderr] Compiling icu_normalizer_data v1.5.1 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Compiling void v1.0.2 [INFO] [stderr] Compiling getrandom v0.3.2 [INFO] [stderr] Checking async-lock v3.4.0 [INFO] [stderr] Checking signal-hook-registry v1.4.2 [INFO] [stderr] Checking option-ext v0.2.0 [INFO] [stderr] Checking async-task v4.7.1 [INFO] [stderr] Checking async-channel v2.3.1 [INFO] [stderr] Compiling strsim v0.10.0 [INFO] [stderr] Checking atomic-waker v1.1.2 [INFO] [stderr] Checking utf8_iter v1.0.4 [INFO] [stderr] Checking bytes v1.10.1 [INFO] [stderr] Checking utf16_iter v1.0.5 [INFO] [stderr] Checking write16 v1.0.0 [INFO] [stderr] Checking piper v0.2.4 [INFO] [stderr] Compiling sha3 v0.10.8 [INFO] [stderr] Checking rand_core v0.9.3 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Checking mio v1.0.3 [INFO] [stderr] Checking foreign-types-shared v0.1.1 [INFO] [stderr] Compiling openssl v0.10.72 [INFO] [stderr] Compiling toml_edit v0.22.24 [INFO] [stderr] Compiling derive-deftly-macros v1.0.1 [INFO] [stderr] Checking retry-error v0.6.3 [INFO] [stderr] Checking foreign-types v0.3.2 [INFO] [stderr] Checking blocking v1.6.1 [INFO] [stderr] Checking async-executor v1.13.1 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Checking socket2 v0.5.9 [INFO] [stderr] Compiling derive-deftly-macros v0.14.6 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking base64ct v1.7.3 [INFO] [stderr] Checking percent-encoding v2.3.1 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking async-channel v1.9.0 [INFO] [stderr] Checking dirs-sys v0.5.0 [INFO] [stderr] Checking form_urlencoded v1.2.1 [INFO] [stderr] Compiling async_executors v0.7.0 [INFO] [stderr] Compiling openssl-sys v0.9.107 [INFO] [stderr] Checking kv-log-macro v1.0.7 [INFO] [stderr] Checking openssl-probe v0.1.6 [INFO] [stderr] Checking spin v0.9.8 [INFO] [stderr] Checking crossbeam-queue v0.3.12 [INFO] [stderr] Checking atomic v0.5.3 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Checking pem-rfc7468 v0.7.0 [INFO] [stderr] Checking same-file v1.0.6 [INFO] [stderr] Checking walkdir v2.5.0 [INFO] [stderr] Checking inout v0.1.4 [INFO] [stderr] Checking coarsetime v0.1.36 [INFO] [stderr] Compiling slotmap v1.0.7 [INFO] [stderr] Compiling uncased v0.9.10 [INFO] [stderr] Checking dyn-clone v1.0.19 [INFO] [stderr] Checking amplify_num v0.5.3 [INFO] [stderr] Checking ascii v1.1.0 [INFO] [stderr] Compiling darling_core v0.14.4 [INFO] [stderr] Compiling amplify_syn v2.0.1 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking dirs v6.0.0 [INFO] [stderr] Checking filetime v0.2.25 [INFO] [stderr] Checking inotify-sys v0.1.5 [INFO] [stderr] Compiling figment v0.10.19 [INFO] [stderr] Checking minimal-lexical v0.2.1 [INFO] [stderr] Checking humantime v2.2.0 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Checking ordered-float v2.10.1 [INFO] [stderr] Checking sha2 v0.10.8 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking signature v2.2.0 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Checking notify-types v2.0.0 [INFO] [stderr] Checking rand v0.9.0 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling num-bigint-dig v0.8.4 [INFO] [stderr] Checking weak-table v0.3.2 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Compiling proc-macro-crate v3.3.0 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking ed25519 v2.2.3 [INFO] [stderr] Checking fluid-let v1.0.0 [INFO] [stderr] Checking rand_jitter v0.5.0 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking rdrand v0.8.3 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Compiling proc-macro-error-attr2 v2.0.0 [INFO] [stderr] Checking caret v0.5.1 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling bitflags v2.9.0 [INFO] [stderr] Checking itoa v1.0.15 [INFO] [stderr] Checking ssh-encoding v0.2.0 [INFO] [stderr] Checking memmap2 v0.9.5 [INFO] [stderr] Checking base16ct v0.2.0 [INFO] [stderr] Checking blake2 v0.10.6 [INFO] [stderr] Checking powerfmt v0.2.0 [INFO] [stderr] Compiling num-conv v0.1.0 [INFO] [stderr] Checking fixed-capacity-vec v1.0.1 [INFO] [stderr] Checking downcast-rs v2.0.1 [INFO] [stderr] Checking arrayvec v0.7.6 [INFO] [stderr] Checking sec1 v0.7.3 [INFO] [stderr] Compiling time-core v0.1.4 [INFO] [stderr] Checking regex-syntax v0.6.29 [INFO] [stderr] Checking deranged v0.4.0 [INFO] [stderr] Checking data-encoding v2.8.0 [INFO] [stderr] Compiling time-macros v0.2.22 [INFO] [stderr] Compiling amplify_derive v4.0.1 [INFO] [stderr] Compiling siphasher v1.0.1 [INFO] [stderr] Checking by_address v1.2.1 [INFO] [stderr] Checking overload v0.1.1 [INFO] [stderr] Checking sharded-slab v0.1.7 [INFO] [stderr] Checking nu-ansi-term v0.46.0 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Compiling synstructure v0.13.1 [INFO] [stderr] Compiling proc-macro-error2 v2.0.1 [INFO] [stderr] Compiling darling_core v0.20.11 [INFO] [stderr] Compiling phf_shared v0.11.3 [INFO] [stderr] Checking thread_local v1.1.8 [INFO] [stderr] Checking rusticata-macros v4.1.0 [INFO] [stderr] Compiling ahash v0.8.11 [INFO] [stderr] Compiling radium v0.7.0 [INFO] [stderr] Compiling darling_macro v0.14.4 [INFO] [stderr] Compiling serde_json v1.0.140 [INFO] [stderr] Compiling visible v0.0.1 [INFO] [stderr] Checking hex-literal v0.4.1 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Checking ryu v1.0.20 [INFO] [stderr] Checking tap v1.0.1 [INFO] [stderr] Checking rangemap v1.5.1 [INFO] [stderr] Checking wyz v0.5.1 [INFO] [stderr] Checking priority-queue v2.3.1 [INFO] [stderr] Compiling zstd-sys v2.0.15+zstd.1.5.7 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Compiling darling v0.14.4 [INFO] [stderr] Checking typed-index-collections v3.1.0 [INFO] [stderr] Checking time v0.3.41 [INFO] [stderr] Compiling derive_builder_core_fork_arti v0.11.2 [INFO] [stderr] Checking funty v2.0.0 [INFO] [stderr] Checking assert_matches v1.5.0 [INFO] [stderr] Compiling phf_generator v0.11.3 [INFO] [stderr] Checking hkdf v0.12.4 [INFO] [stderr] Checking fslock-arti-fork v0.2.0 [INFO] [stderr] Checking allocator-api2 v0.2.21 [INFO] [stderr] Checking sanitize-filename v0.6.0 [INFO] [stderr] Compiling liblzma-sys v0.3.13 [INFO] [stderr] Checking fslock v0.2.1 [INFO] [stderr] Compiling crunchy v0.2.3 [INFO] [stderr] Compiling zstd-safe v7.2.4 [INFO] [stderr] Checking dirs-sys v0.4.1 [INFO] [stderr] Compiling tiny-keccak v2.0.2 [INFO] [stderr] Checking adler2 v2.0.0 [INFO] [stderr] Checking bstr v1.12.0 [INFO] [stderr] Checking dirs v5.0.1 [INFO] [stderr] Checking os_str_bytes v6.6.1 [INFO] [stderr] Checking crc32fast v1.4.2 [INFO] [stderr] Checking miniz_oxide v0.8.8 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Checking bitvec v1.0.1 [INFO] [stderr] Checking directories v6.0.0 [INFO] [stderr] Checking bounded-vec-deque v0.1.1 [INFO] [stderr] Compiling typeid v1.0.3 [INFO] [stderr] Compiling ucd-trie v0.1.7 [INFO] [stderr] Checking inventory v0.3.20 [INFO] [stderr] Checking shellexpand v3.1.0 [INFO] [stderr] Checking flate2 v1.1.1 [INFO] [stderr] Compiling const-random-macro v0.1.16 [INFO] [stderr] Checking http v1.3.1 [INFO] [stderr] Compiling libsqlite3-sys v0.30.1 [INFO] [stderr] Checking amplify v4.8.0 [INFO] [stderr] Checking httpdate v1.0.3 [INFO] [stderr] Checking glob-match v0.2.1 [INFO] [stderr] Checking const-random v0.1.18 [INFO] [stderr] Checking regex-automata v0.1.10 [INFO] [stderr] Checking hashlink v0.9.1 [INFO] [stderr] Checking dlv-list v0.5.2 [INFO] [stderr] Compiling futures-await-test-macro v0.3.0 [INFO] [stderr] Checking universal-hash v0.5.1 [INFO] [stderr] Checking xxhash-rust v0.8.15 [INFO] [stderr] Compiling derive_builder_macro_fork_arti v0.11.2 [INFO] [stderr] Checking opaque-debug v0.3.1 [INFO] [stderr] Checking fallible-iterator v0.3.0 [INFO] [stderr] Checking fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling anyhow v1.0.97 [INFO] [stderr] Checking ordered-multimap v0.7.3 [INFO] [stderr] Checking polyval v0.6.2 [INFO] [stderr] Checking hashlink v0.8.4 [INFO] [stderr] Checking k12 v0.3.0 [INFO] [stderr] Checking encoding_rs v0.8.35 [INFO] [stderr] Checking derive_builder_fork_arti v0.11.2 [INFO] [stderr] Checking unicode-segmentation v1.12.0 [INFO] [stderr] Checking base64 v0.21.7 [INFO] [stderr] Checking arraydeque v0.5.1 [INFO] [stderr] Checking ghash v0.5.1 [INFO] [stderr] Checking aead v0.5.2 [INFO] [stderr] Checking rust-ini v0.20.0 [INFO] [stderr] Checking gethostname v0.2.3 [INFO] [stderr] Checking tracing-log v0.1.4 [INFO] [stderr] Checking hostname-validator v1.1.1 [INFO] [stderr] Checking pathdiff v0.2.3 [INFO] [stderr] Checking matchers v0.1.0 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling thiserror-impl v2.0.12 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling tracing-attributes v0.1.28 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling strum_macros v0.27.1 [INFO] [stderr] Compiling yoke-derive v0.7.5 [INFO] [stderr] Compiling zeroize_derive v1.4.2 [INFO] [stderr] Compiling zerovec-derive v0.10.3 [INFO] [stderr] Compiling derive_more-impl v2.0.1 [INFO] [stderr] Checking zeroize v1.8.1 [INFO] [stderr] Compiling icu_provider_macros v1.5.0 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling pin-project-internal v1.1.10 [INFO] [stderr] Compiling enum-ordinalize v3.1.15 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling derive_arbitrary v1.4.1 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Compiling blanket v0.3.0 [INFO] [stderr] Checking yoke v0.7.5 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Compiling educe v0.4.23 [INFO] [stderr] Compiling async-trait v0.1.88 [INFO] [stderr] Checking cipher v0.4.4 [INFO] [stderr] Checking zerovec v0.10.4 [INFO] [stderr] Checking arbitrary v1.4.1 [INFO] [stderr] Checking tokio v1.44.2 [INFO] [stderr] Checking der v0.7.9 [INFO] [stderr] Checking pin-project v1.1.10 [INFO] [stderr] Compiling curve25519-dalek-derive v0.1.1 [INFO] [stderr] Compiling asn1-rs-impl v0.2.0 [INFO] [stderr] Compiling asn1-rs-derive v0.6.0 [INFO] [stderr] Checking aes v0.8.4 [INFO] [stderr] Checking tinystr v0.7.6 [INFO] [stderr] Compiling strum v0.27.1 [INFO] [stderr] Checking icu_collections v1.5.0 [INFO] [stderr] Checking icu_locid v1.5.0 [INFO] [stderr] Checking ctr v0.9.2 [INFO] [stderr] Checking asn1-rs v0.7.1 [INFO] [stderr] Checking spki v0.7.3 [INFO] [stderr] Checking merlin v3.0.0 [INFO] [stderr] Compiling visibility v0.1.1 [INFO] [stderr] Checking pkcs8 v0.10.2 [INFO] [stderr] Checking pkcs1 v0.7.5 [INFO] [stderr] Compiling dynasm v3.2.0 [INFO] [stderr] Checking ssh-cipher v0.2.0 [INFO] [stderr] Checking icu_provider v1.5.0 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Checking ssh-key v0.6.7 [INFO] [stderr] Checking ed25519-dalek v2.1.1 [INFO] [stderr] Checking x25519-dalek v2.0.1 [INFO] [stderr] Checking icu_locid_transform v1.5.0 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Checking tor-protover v0.29.0 [INFO] [stderr] Checking tracing-subscriber v0.3.19 [INFO] [stderr] Compiling serde_with_macros v3.12.0 [INFO] [stderr] Checking rsa v0.9.8 [INFO] [stderr] Compiling phf_macros v0.11.3 [INFO] [stderr] Checking tinystr v0.8.1 [INFO] [stderr] Compiling num_enum_derive v0.7.3 [INFO] [stderr] Checking icu_properties v1.5.1 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking asynchronous-codec v0.7.0 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Compiling tracing-test-macro v0.2.5 [INFO] [stderr] Checking fslock-guard v0.2.2 [INFO] [stderr] Checking oneshot-fused-workaround v0.2.1 [INFO] [stderr] Checking postage v0.5.0 [INFO] [stderr] Checking cookie-factory v0.3.3 [INFO] [stderr] Compiling typetag-impl v0.2.20 [INFO] [stderr] Checking phf v0.11.3 [INFO] [stderr] Checking futures-await-test v0.3.0 [INFO] [stderr] Checking zstd v0.13.3 [INFO] [stderr] Checking pest v2.8.0 [INFO] [stderr] Checking yaml-rust2 v0.8.1 [INFO] [stderr] Checking tracing-test v0.2.5 [INFO] [stderr] Checking convert_case v0.6.0 [INFO] [stderr] Checking der-parser v10.0.0 [INFO] [stderr] Checking liblzma v0.3.6 [INFO] [stderr] Checking aes-gcm v0.10.3 [INFO] [stderr] Checking num_enum v0.7.3 [INFO] [stderr] Checking async-compression v0.4.22 [INFO] [stderr] Checking derive_more v2.0.1 [INFO] [stderr] Checking derive-deftly v0.14.6 [INFO] [stderr] Checking pwd-grp v1.0.0 [INFO] [stderr] Checking tor-error v0.29.0 [INFO] [stderr] Checking icu_normalizer v1.5.0 [INFO] [stderr] Checking tor-general-addr v0.29.0 [INFO] [stderr] Checking safelog v0.4.5 [INFO] [stderr] Checking tor-geoip v0.29.0 [INFO] [stderr] Checking idna_adapter v1.2.0 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking derive-deftly v1.0.1 [INFO] [stderr] Checking tor-async-utils v0.29.0 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Compiling pest_meta v2.8.0 [INFO] [stderr] Checking tokio-util v0.7.14 [INFO] [stderr] Compiling pest_generator v2.8.0 [INFO] [stderr] Checking serde_spanned v0.6.8 [INFO] [stderr] Checking fs-mistrust v0.9.1 [INFO] [stderr] Checking tor-basic-utils v0.29.0 [INFO] [stderr] Checking serde-value v0.7.0 [INFO] [stderr] Checking serde_ignored v0.1.11 [INFO] [stderr] Checking serde_with v3.12.0 [INFO] [stderr] Checking humantime-serde v1.1.1 [INFO] [stderr] Checking tor-config-path v0.29.0 [INFO] [stderr] Checking serde_bytes v0.11.17 [INFO] [stderr] Checking erased-serde v0.4.6 [INFO] [stderr] Checking secrecy v0.10.3 [INFO] [stderr] Checking inotify v0.11.0 [INFO] [stderr] Checking growable-bloom-filter v2.1.1 [INFO] [stderr] Checking rusqlite v0.32.1 [INFO] [stderr] Checking ron v0.8.1 [INFO] [stderr] Checking slotmap-careful v0.2.3 [INFO] [stderr] Checking typetag v0.2.20 [INFO] [stderr] Checking notify v8.0.0 [INFO] [stderr] Checking tor-rpcbase v0.29.0 [INFO] [stderr] Checking tor-persist v0.29.0 [INFO] [stderr] Compiling pest_derive v2.8.0 [INFO] [stderr] Checking tracing-bunyan-formatter v0.3.10 [INFO] [stderr] Checking json5 v0.4.1 [INFO] [stderr] Checking toml v0.8.20 [INFO] [stderr] Checking config v0.14.1 [INFO] [stderr] Checking async-native-tls v0.5.0 [INFO] [stderr] Checking polling v3.7.4 [INFO] [stderr] Checking async-io v2.4.0 [INFO] [stderr] Checking async-signal v0.2.10 [INFO] [stderr] Checking async-global-executor v2.4.1 [INFO] [stderr] Checking async-process v2.3.0 [INFO] [stderr] Checking async-std v1.13.1 [INFO] [stderr] Checking tor-rtcompat v0.29.0 [INFO] [stderr] Checking tor-config v0.29.0 [INFO] [stderr] Checking tor-log-ratelim v0.29.0 [INFO] [stderr] Checking tor-rtmock v0.29.0 [INFO] [stderr] Checking tor-memquota v0.29.0 [INFO] [stderr] Checking tor-llcrypto v0.29.0 [INFO] [stderr] Checking tor-units v0.29.0 [INFO] [stderr] Checking tor-bytes v0.29.0 [INFO] [stderr] Checking tor-checkable v0.29.0 [INFO] [stderr] Checking tor-consdiff v0.29.0 [INFO] [stderr] Checking tor-cert v0.29.0 [INFO] [stderr] Checking tor-linkspec v0.29.0 [INFO] [stderr] Checking tor-socksproto v0.29.0 [INFO] [stderr] Checking tor-key-forge v0.29.0 [INFO] [stderr] Checking dynasmrt v3.2.0 [INFO] [stderr] Checking hashx v0.3.0 [INFO] [stderr] Checking equix v0.2.3 [INFO] [stderr] Checking tor-hscrypto v0.29.0 [INFO] [stderr] Checking tor-cell v0.29.0 [INFO] [stderr] Checking tor-keymgr v0.29.0 [INFO] [stderr] Checking tor-netdoc v0.29.0 [INFO] [stderr] Checking tor-proto v0.29.0 [INFO] [stderr] Checking tor-netdir v0.29.0 [INFO] [stderr] Checking tor-relay-selection v0.29.0 [INFO] [stderr] Checking tor-chanmgr v0.29.0 [INFO] [stderr] Checking tor-guardmgr v0.29.0 [INFO] [stderr] Checking tor-ptmgr v0.29.0 [INFO] [stderr] Checking tor-circmgr v0.29.0 [INFO] [stderr] Checking tor-dirclient v0.29.0 [INFO] [stderr] Checking tor-hsclient v0.29.0 [INFO] [stderr] Checking tor-dirmgr v0.29.0 [INFO] [stderr] Checking tor-hsservice v0.29.0 [INFO] [stderr] Checking arti-client v0.29.0 [INFO] [stderr] Checking arti-chat v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `settings::Settings` [INFO] [stdout] --> src/client_lib.rs:16:37 [INFO] [stdout] | [INFO] [stdout] 16 | client_lib::{globals::COMMANDS, settings::Settings}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/client_lib/globals.rs:2:22 [INFO] [stdout] | [INFO] [stdout] 2 | pub const COMMANDS: &'static str = "\x1b[32;1mCommands:\x1b[0m [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/client_lib/globals.rs:8:24 [INFO] [stdout] | [INFO] [stdout] 8 | pub const CLIENT_COM: &'static str = "&COMM\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `settings::Settings` [INFO] [stdout] --> src/client_lib.rs:16:37 [INFO] [stdout] | [INFO] [stdout] 16 | client_lib::{globals::COMMANDS, settings::Settings}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/client_lib/globals.rs:2:22 [INFO] [stdout] | [INFO] [stdout] 2 | pub const COMMANDS: &'static str = "\x1b[32;1mCommands:\x1b[0m [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/client_lib/globals.rs:8:24 [INFO] [stdout] | [INFO] [stdout] 8 | pub const CLIENT_COM: &'static str = "&COMM\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:1:21 [INFO] [stdout] | [INFO] [stdout] 1 | pub const ADDRESS: &'static str = "127.0.0.1:9999"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:9:26 [INFO] [stdout] | [INFO] [stdout] 9 | pub const INVALID_UTF8: &'static str = "$INVALID_UTF8\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:10:33 [INFO] [stdout] | [INFO] [stdout] 10 | pub const CONNECTION_ACCEPTED: &'static str = "$OK\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:11:30 [INFO] [stdout] | [INFO] [stdout] 11 | pub const MALFORMED_PACKET: &'static str = "$MALFORMED_PACKET\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:12:28 [INFO] [stdout] | [INFO] [stdout] 12 | pub const TOO_MANY_TRIES: &'static str = "$TOO_MANY_TRIES\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:13:22 [INFO] [stdout] | [INFO] [stdout] 13 | pub const TOO_LONG: &'static str = "$TOO_LONG\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:14:23 [INFO] [stdout] | [INFO] [stdout] 14 | pub const TOO_SHORT: &'static str = "$TOO_SHORT\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:15:21 [INFO] [stdout] | [INFO] [stdout] 15 | pub const TIMEOUT: &'static str = "$TIMEOUT\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:16:19 [INFO] [stdout] | [INFO] [stdout] 16 | pub const TAKEN: &'static str = "$NICK_ALREADY_TAKEN\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:19:18 [INFO] [stdout] | [INFO] [stdout] 19 | pub const COMM: &'static str = "&COMM\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:20:18 [INFO] [stdout] | [INFO] [stdout] 20 | pub const LIST: &'static str = "&LIST\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:23:24 [INFO] [stdout] | [INFO] [stdout] 23 | pub const SERVER_COM: &'static str = "&COMM\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:24:25 [INFO] [stdout] | [INFO] [stdout] 24 | pub const SERVER_LIST: &'static str = "&LIST\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:25:18 [INFO] [stdout] | [INFO] [stdout] 25 | pub const KICK: &'static str = "&KICK\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:27:22 [INFO] [stdout] | [INFO] [stdout] 27 | pub const COMMANDS: &'static str = " [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:36:22 [INFO] [stdout] | [INFO] [stdout] 36 | pub const EXIT_MSG: &'static str = "\nShutting down, press to leave,\nSee you space cowboy..."; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:1:21 [INFO] [stdout] | [INFO] [stdout] 1 | pub const ADDRESS: &'static str = "127.0.0.1:9999"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:9:26 [INFO] [stdout] | [INFO] [stdout] 9 | pub const INVALID_UTF8: &'static str = "$INVALID_UTF8\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:10:33 [INFO] [stdout] | [INFO] [stdout] 10 | pub const CONNECTION_ACCEPTED: &'static str = "$OK\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:11:30 [INFO] [stdout] | [INFO] [stdout] 11 | pub const MALFORMED_PACKET: &'static str = "$MALFORMED_PACKET\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:12:28 [INFO] [stdout] | [INFO] [stdout] 12 | pub const TOO_MANY_TRIES: &'static str = "$TOO_MANY_TRIES\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:13:22 [INFO] [stdout] | [INFO] [stdout] 13 | pub const TOO_LONG: &'static str = "$TOO_LONG\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:14:23 [INFO] [stdout] | [INFO] [stdout] 14 | pub const TOO_SHORT: &'static str = "$TOO_SHORT\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:15:21 [INFO] [stdout] | [INFO] [stdout] 15 | pub const TIMEOUT: &'static str = "$TIMEOUT\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:16:19 [INFO] [stdout] | [INFO] [stdout] 16 | pub const TAKEN: &'static str = "$NICK_ALREADY_TAKEN\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:19:18 [INFO] [stdout] | [INFO] [stdout] 19 | pub const COMM: &'static str = "&COMM\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:20:18 [INFO] [stdout] | [INFO] [stdout] 20 | pub const LIST: &'static str = "&LIST\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:23:24 [INFO] [stdout] | [INFO] [stdout] 23 | pub const SERVER_COM: &'static str = "&COMM\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:24:25 [INFO] [stdout] | [INFO] [stdout] 24 | pub const SERVER_LIST: &'static str = "&LIST\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:25:18 [INFO] [stdout] | [INFO] [stdout] 25 | pub const KICK: &'static str = "&KICK\n"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:27:22 [INFO] [stdout] | [INFO] [stdout] 27 | pub const COMMANDS: &'static str = " [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/globals.rs:36:22 [INFO] [stdout] | [INFO] [stdout] 36 | pub const EXIT_MSG: &'static str = "\nShutting down, press to leave,\nSee you space cowboy..."; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: statics have by default a `'static` lifetime [INFO] [stdout] --> src/server_lib/structs.rs:7:21 [INFO] [stdout] | [INFO] [stdout] 7 | pub static MASTER: &'static str = "Master"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: statics have by default a `'static` lifetime [INFO] [stdout] --> src/server_lib/structs.rs:7:21 [INFO] [stdout] | [INFO] [stdout] 7 | pub static MASTER: &'static str = "Master"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/client_lib/handshaking.rs:56:61 [INFO] [stdout] | [INFO] [stdout] 56 | output_tx.send(OutputMsg::new_error(&format!("{}, Retry.", e))).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("{}, Retry.", e)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/client_lib/handshaking.rs:71:40 [INFO] [stdout] | [INFO] [stdout] 71 | ... return Err(e.into()); [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `e` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/client_lib/handshaking.rs:102:47 [INFO] [stdout] | [INFO] [stdout] 102 | ...Msg::new(&format!("You have been accepted, type \"{}\" for displaying all the avaible commands", CLIENT_COM.trim()))).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("You have been accepted, type \"{}\" for displaying all the avaible commands", CLIENT_COM.trim())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/client_lib/handshaking.rs:122:42 [INFO] [stdout] | [INFO] [stdout] 122 | .send(OutputMsg::new(&format!( [INFO] [stdout] | __________________________________________^ [INFO] [stdout] 123 | | "The nickname has already been taken, please choose another one.", [INFO] [stdout] 124 | | ))) [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 122 ~ .send(OutputMsg::new(format!( [INFO] [stdout] 123 + "The nickname has already been taken, please choose another one.", [INFO] [stdout] 124 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/client_lib/handshaking.rs:122:43 [INFO] [stdout] | [INFO] [stdout] 122 | .send(OutputMsg::new(&format!( [INFO] [stdout] | ___________________________________________^ [INFO] [stdout] 123 | | "The nickname has already been taken, please choose another one.", [INFO] [stdout] 124 | | ))) [INFO] [stdout] | |_____________________^ help: consider using `.to_string()`: `"The nickname has already been taken, please choose another one.".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/client_lib/handshaking.rs:143:44 [INFO] [stdout] | [INFO] [stdout] 143 | .send(OutputMsg::new_error(&format!("{}", e))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `format!("{}", e)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `default` to create a unit struct [INFO] [stdout] --> src/client_lib/handshaking.rs:166:19 [INFO] [stdout] | [INFO] [stdout] 166 | let mut rng = OsRng::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_constructed_unit_structs [INFO] [stdout] = note: `#[warn(clippy::default_constructed_unit_structs)]` on by default [INFO] [stdout] help: remove this call to `default` [INFO] [stdout] | [INFO] [stdout] 166 - let mut rng = OsRng::default(); [INFO] [stdout] 166 + let mut rng = OsRng; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of a fallible conversion when an infallible one could be used [INFO] [stdout] --> src/client_lib/handshaking.rs:179:39 [INFO] [stdout] | [INFO] [stdout] 179 | let key_bytes: [u8; 32] = aes_key.try_into()?; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: converting `GenericArray, B0>, B0>, B0>, B0>, B0>>` to `[u8; 32]` cannot fail [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fallible_conversions [INFO] [stdout] = note: `#[warn(clippy::unnecessary_fallible_conversions)]` on by default [INFO] [stdout] help: use [INFO] [stdout] | [INFO] [stdout] 179 - let key_bytes: [u8; 32] = aes_key.try_into()?; [INFO] [stdout] 179 + let key_bytes: [u8; 32] = aes_key.into()?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `seq_num_packet` [INFO] [stdout] --> src/client_lib/handshaking.rs:186:14 [INFO] [stdout] | [INFO] [stdout] 186 | for i in 10 - seq_number_bytes.len()..10 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 186 - for i in 10 - seq_number_bytes.len()..10 { [INFO] [stdout] 186 + for in seq_num_packet.iter_mut().skip(10 - seq_number_bytes.len()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/client_lib/handshaking.rs:188:9 [INFO] [stdout] | [INFO] [stdout] 188 | index = index + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `index += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/client_lib/sending_messages.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | / match res { [INFO] [stdout] 55 | | Some(inp) => match inp.action(write_handler).await { [INFO] [stdout] 56 | | Ok(_) => {} [INFO] [stdout] 57 | | Err(e) => { [INFO] [stdout] ... | [INFO] [stdout] 62 | | None => {} [INFO] [stdout] 63 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 54 ~ if let Some(inp) = res { match inp.action(write_handler).await { [INFO] [stdout] 55 + Ok(_) => {} [INFO] [stdout] 56 + Err(e) => { [INFO] [stdout] 57 + let _ = output_tx.send(OutputMsg::new_error(&e)).await; [INFO] [stdout] 58 + return Err(e.into()); [INFO] [stdout] 59 + } [INFO] [stdout] 60 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/client_lib.rs:100:24 [INFO] [stdout] | [INFO] [stdout] 100 | return Err(e.into()); [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `e` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/client_lib.rs:178:5 [INFO] [stdout] | [INFO] [stdout] 178 | /// them. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 178 | /// them. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/client_lib.rs:180:5 [INFO] [stdout] | [INFO] [stdout] 180 | /// input from stdin it sends said input through this channel and `client_command` will respond to [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 180 | /// input from stdin it sends said input through this channel and `client_command` will respond to [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/client_lib.rs:181:5 [INFO] [stdout] | [INFO] [stdout] 181 | /// it. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 181 | /// it. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/client_lib.rs:260:69 [INFO] [stdout] | [INFO] [stdout] 260 | let _ = output_tx.send(OutputMsg::new_error(&msg)).await; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/client_lib.rs:268:12 [INFO] [stdout] | [INFO] [stdout] 268 | if content.trim().len() < 1 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `content.trim().is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/client_lib.rs:272:12 [INFO] [stdout] | [INFO] [stdout] 272 | if content.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!content.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/client_lib.rs:330:25 [INFO] [stdout] | [INFO] [stdout] 330 | / return Ok(InputMsg::Command { [INFO] [stdout] 331 | | payload: ClientCommand::ListUsers, [INFO] [stdout] 332 | | }); [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 330 ~ Ok(InputMsg::Command { [INFO] [stdout] 331 + payload: ClientCommand::ListUsers, [INFO] [stdout] 332 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/client_lib.rs:334:25 [INFO] [stdout] | [INFO] [stdout] 334 | return Err(anyhow::anyhow!("Invalid command")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 334 - return Err(anyhow::anyhow!("Invalid command")); [INFO] [stdout] 334 + Err(anyhow::anyhow!("Invalid command")) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/client_lib.rs:337:21 [INFO] [stdout] | [INFO] [stdout] 337 | / return Ok(InputMsg::Plain { [INFO] [stdout] 338 | | payload: payload.into(), [INFO] [stdout] 339 | | }); [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 337 ~ Ok(InputMsg::Plain { [INFO] [stdout] 338 + payload: payload.into(), [INFO] [stdout] 339 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/client_lib.rs:343:17 [INFO] [stdout] | [INFO] [stdout] 343 | return Err(anyhow::anyhow!("Empty string has been provided.")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 343 - return Err(anyhow::anyhow!("Empty string has been provided.")); [INFO] [stdout] 343 + Err(anyhow::anyhow!("Empty string has been provided.")) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/client_lib.rs:362:41 [INFO] [stdout] | [INFO] [stdout] 362 | write_handler.write_str(&payload).await?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `payload` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib/administration.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | /// and visualized by them [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 21 | /// and visualized by them [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib/administration.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | /// input from stdin it sends said input through this channel and `server_commands` will respont to [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 23 | /// input from stdin it sends said input through this channel and `server_commands` will respont to [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib/administration.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | /// it. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 24 | /// it. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/client_lib/handshaking.rs:56:61 [INFO] [stdout] | [INFO] [stdout] 56 | output_tx.send(OutputMsg::new_error(&format!("{}, Retry.", e))).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("{}, Retry.", e)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/server_lib/administration.rs:96:56 [INFO] [stdout] | [INFO] [stdout] 96 | ... .send(OutputMsg::new_error(format!( [INFO] [stdout] | __________________________________________________^ [INFO] [stdout] 97 | | ... "All senders for `server_commands` has been dropped.", [INFO] [stdout] 98 | | ... ))) [INFO] [stdout] | |_______________________^ help: consider using `.to_string()`: `"All senders for `server_commands` has been dropped.".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/server_lib/administration.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 107 | if content.trim().len() < 1 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `content.trim().is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/server_lib/administration.rs:111:12 [INFO] [stdout] | [INFO] [stdout] 111 | if content.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!content.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | / match err { [INFO] [stdout] 41 | | Some(e) => output_tx.send(OutputMsg::new_error(&e.to_string())).await?, [INFO] [stdout] 42 | | None => {} [INFO] [stdout] 43 | | } [INFO] [stdout] | |_____^ help: try: `if let Some(e) = err { output_tx.send(OutputMsg::new_error(&e.to_string())).await? }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:41:56 [INFO] [stdout] | [INFO] [stdout] 41 | Some(e) => output_tx.send(OutputMsg::new_error(&e.to_string())).await?, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `e.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/client_lib/handshaking.rs:71:40 [INFO] [stdout] | [INFO] [stdout] 71 | ... return Err(e.into()); [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `e` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:83:13 [INFO] [stdout] | [INFO] [stdout] 83 | return res; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:88:13 [INFO] [stdout] | [INFO] [stdout] 88 | return Err(HandshakeError::NonFatal(anyhow!("Handshake failed becouse timeout has been reached."))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:82:54 [INFO] [stdout] | [INFO] [stdout] 82 | res = handshake(write_handler, read_handler, &id_tx, output_tx, shared_secret) => { [INFO] [stdout] | ^^^^^^ help: change this to: `id_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/client_lib/handshaking.rs:102:47 [INFO] [stdout] | [INFO] [stdout] 102 | ...Msg::new(&format!("You have been accepted, type \"{}\" for displaying all the avaible commands", CLIENT_COM.trim()))).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("You have been accepted, type \"{}\" for displaying all the avaible commands", CLIENT_COM.trim())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/client_lib/handshaking.rs:122:42 [INFO] [stdout] | [INFO] [stdout] 122 | .send(OutputMsg::new(&format!( [INFO] [stdout] | __________________________________________^ [INFO] [stdout] 123 | | "The nickname has already been taken, please choose another one.", [INFO] [stdout] 124 | | ))) [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 122 ~ .send(OutputMsg::new(format!( [INFO] [stdout] 123 + "The nickname has already been taken, please choose another one.", [INFO] [stdout] 124 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/client_lib/handshaking.rs:122:43 [INFO] [stdout] | [INFO] [stdout] 122 | .send(OutputMsg::new(&format!( [INFO] [stdout] | ___________________________________________^ [INFO] [stdout] 123 | | "The nickname has already been taken, please choose another one.", [INFO] [stdout] 124 | | ))) [INFO] [stdout] | |_____________________^ help: consider using `.to_string()`: `"The nickname has already been taken, please choose another one.".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/client_lib/handshaking.rs:143:44 [INFO] [stdout] | [INFO] [stdout] 143 | .send(OutputMsg::new_error(&format!("{}", e))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `format!("{}", e)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:137:34 [INFO] [stdout] | [INFO] [stdout] 137 | .map_err(|e| ReadBranchError::Fatal(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `ReadBranchError::Fatal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `default` to create a unit struct [INFO] [stdout] --> src/client_lib/handshaking.rs:166:19 [INFO] [stdout] | [INFO] [stdout] 166 | let mut rng = OsRng::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_constructed_unit_structs [INFO] [stdout] = note: `#[warn(clippy::default_constructed_unit_structs)]` on by default [INFO] [stdout] help: remove this call to `default` [INFO] [stdout] | [INFO] [stdout] 166 - let mut rng = OsRng::default(); [INFO] [stdout] 166 + let mut rng = OsRng; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:135:40 [INFO] [stdout] | [INFO] [stdout] 135 | connection_dropped(&id_tx, e, nick.into(), &output_tx) [INFO] [stdout] | ^^^^^^ help: change this to: `id_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of a fallible conversion when an infallible one could be used [INFO] [stdout] --> src/client_lib/handshaking.rs:179:39 [INFO] [stdout] | [INFO] [stdout] 179 | let key_bytes: [u8; 32] = aes_key.try_into()?; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: converting `GenericArray, B0>, B0>, B0>, B0>, B0>>` to `[u8; 32]` cannot fail [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fallible_conversions [INFO] [stdout] = note: `#[warn(clippy::unnecessary_fallible_conversions)]` on by default [INFO] [stdout] help: use [INFO] [stdout] | [INFO] [stdout] 179 - let key_bytes: [u8; 32] = aes_key.try_into()?; [INFO] [stdout] 179 + let key_bytes: [u8; 32] = aes_key.into()?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:145:34 [INFO] [stdout] | [INFO] [stdout] 145 | .map_err(|e| ReadBranchError::Fatal(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `ReadBranchError::Fatal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:143:40 [INFO] [stdout] | [INFO] [stdout] 143 | connection_dropped(&id_tx, Some(&err), nick.into(), &output_tx) [INFO] [stdout] | ^^^^^^ help: change this to: `id_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:149:48 [INFO] [stdout] | [INFO] [stdout] 149 | let _ = connection_dropped(&id_tx, Some(&err), nick.into(), &output_tx).await; [INFO] [stdout] | ^^^^^^ help: change this to: `id_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `seq_num_packet` [INFO] [stdout] --> src/client_lib/handshaking.rs:186:14 [INFO] [stdout] | [INFO] [stdout] 186 | for i in 10 - seq_number_bytes.len()..10 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 186 - for i in 10 - seq_number_bytes.len()..10 { [INFO] [stdout] 186 + for in seq_num_packet.iter_mut().skip(10 - seq_number_bytes.len()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/client_lib/handshaking.rs:188:9 [INFO] [stdout] | [INFO] [stdout] 188 | index = index + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `index += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:183:5 [INFO] [stdout] | [INFO] [stdout] 183 | / match line.chars().nth(0) { [INFO] [stdout] 184 | | Some(n) => { [INFO] [stdout] 185 | | if n == '&' { [INFO] [stdout] 186 | | if line == LIST { [INFO] [stdout] ... | [INFO] [stdout] 247 | | None => {} [INFO] [stdout] 248 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 183 ~ if let Some(n) = line.chars().nth(0) { [INFO] [stdout] 184 + if n == '&' { [INFO] [stdout] 185 + if line == LIST { [INFO] [stdout] 186 + let req = ConnHandlerIdRecordMsg::List(nick.into()); [INFO] [stdout] 187 + match id_tx.send(req).await { [INFO] [stdout] 188 + Ok(_) => {} [INFO] [stdout] 189 + Err(e) => { [INFO] [stdout] 190 + return Err(ReadBranchError::Fatal(anyhow::anyhow!(e.to_string()))); [INFO] [stdout] 191 + } [INFO] [stdout] 192 + }; [INFO] [stdout] 193 + let list = match id_hand_rx.recv().await { [INFO] [stdout] 194 + Some(l) => l, [INFO] [stdout] 195 + None => { [INFO] [stdout] 196 + let e = "Failed to receive from `id_record` in `read_branch_n`"; [INFO] [stdout] 197 + let _ = output_tx.send(OutputMsg::new_error(&e)).await; [INFO] [stdout] 198 + return Err(ReadBranchError::Fatal(anyhow::anyhow!(e))); [INFO] [stdout] 199 + } [INFO] [stdout] 200 + }; [INFO] [stdout] 201 + let content; [INFO] [stdout] 202 + match list { [INFO] [stdout] 203 + IdRecordConnHandler::List(s) => { [INFO] [stdout] 204 + content = s; [INFO] [stdout] 205 + } [INFO] [stdout] 206 + _other => { [INFO] [stdout] 207 + // `id_record` should always respond with a `List` variant here. [INFO] [stdout] 208 + return Err(ReadBranchError::Fatal(anyhow::anyhow!("Unexpecte behaviour from `id_record`:\nIt responded with a non `IdRecordConnHandler::List` to a request for a list."))); [INFO] [stdout] 209 + } [INFO] [stdout] 210 + }; [INFO] [stdout] 211 + let msg = Message::Personal { [INFO] [stdout] 212 + content, [INFO] [stdout] 213 + nickname: nick.into(), [INFO] [stdout] 214 + }; [INFO] [stdout] 215 + match int_com_tx.send(msg) { [INFO] [stdout] 216 + Ok(_) => {} [INFO] [stdout] 217 + Err(e) => { [INFO] [stdout] 218 + let _ = output_tx.send(OutputMsg::new_error(e.to_string())).await; [INFO] [stdout] 219 + return Err(ReadBranchError::Fatal(anyhow::anyhow!(e))); [INFO] [stdout] 220 + } [INFO] [stdout] 221 + }; [INFO] [stdout] 222 + } [INFO] [stdout] 223 + } else { [INFO] [stdout] 224 + // regular message [INFO] [stdout] 225 + let msg = format!("{}: {}", nick, line); [INFO] [stdout] 226 + match output_tx.send(OutputMsg::new(&msg)).await { [INFO] [stdout] 227 + Ok(()) => {} [INFO] [stdout] 228 + Err(e) => { [INFO] [stdout] 229 + return Err(ReadBranchError::Fatal(anyhow::anyhow!(e))); [INFO] [stdout] 230 + } [INFO] [stdout] 231 + }; [INFO] [stdout] 232 + // send the line to the branch that communicates [INFO] [stdout] 233 + // with the clinet [INFO] [stdout] 234 + let msg = Message::Broadcast { [INFO] [stdout] 235 + content: msg, [INFO] [stdout] 236 + nickname: nick.into(), [INFO] [stdout] 237 + }; [INFO] [stdout] 238 + match int_com_tx.send(msg) { [INFO] [stdout] 239 + Ok(_) => {} [INFO] [stdout] 240 + Err(e) => { [INFO] [stdout] 241 + return Err(ReadBranchError::Fatal(anyhow::anyhow!(e))); [INFO] [stdout] 242 + } [INFO] [stdout] 243 + } [INFO] [stdout] 244 + } [INFO] [stdout] 245 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:183:11 [INFO] [stdout] | [INFO] [stdout] 183 | match line.chars().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `line.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:198:73 [INFO] [stdout] | [INFO] [stdout] 198 | ... let _ = output_tx.send(OutputMsg::new_error(&e)).await; [INFO] [stdout] | ^^ help: change this to: `e` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:202:21 [INFO] [stdout] | [INFO] [stdout] 202 | let content; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `content` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 202 ~ [INFO] [stdout] 203 ~ let content = match list { [INFO] [stdout] 204 | IdRecordConnHandler::List(s) => { [INFO] [stdout] 205 ~ s [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:281:20 [INFO] [stdout] | [INFO] [stdout] 281 | if &nickname != nick { [INFO] [stdout] | ---------^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `nickname` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:287:42 [INFO] [stdout] | [INFO] [stdout] 287 | ... .map_err(|e| WriteBranchError::Fatal(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `WriteBranchError::Fatal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:294:20 [INFO] [stdout] | [INFO] [stdout] 294 | if &nickname == nick { [INFO] [stdout] | ---------^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `nickname` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:300:42 [INFO] [stdout] | [INFO] [stdout] 300 | ... .map_err(|e| WriteBranchError::Fatal(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `WriteBranchError::Fatal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:312:26 [INFO] [stdout] | [INFO] [stdout] 312 | .map_err(|e| WriteBranchError::Fatal(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `WriteBranchError::Fatal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/client_lib/sending_messages.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | / match res { [INFO] [stdout] 55 | | Some(inp) => match inp.action(write_handler).await { [INFO] [stdout] 56 | | Ok(_) => {} [INFO] [stdout] 57 | | Err(e) => { [INFO] [stdout] ... | [INFO] [stdout] 62 | | None => {} [INFO] [stdout] 63 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 54 ~ if let Some(inp) = res { match inp.action(write_handler).await { [INFO] [stdout] 55 + Ok(_) => {} [INFO] [stdout] 56 + Err(e) => { [INFO] [stdout] 57 + let _ = output_tx.send(OutputMsg::new_error(&e)).await; [INFO] [stdout] 58 + return Err(e.into()); [INFO] [stdout] 59 + } [INFO] [stdout] 60 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:310:32 [INFO] [stdout] | [INFO] [stdout] 310 | connection_dropped(&id_tx, Some(&err), nick.into(), &output_tx) [INFO] [stdout] | ^^^^^^ help: change this to: `id_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | /// `id_record`. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 50 | /// `id_record`. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:120:73 [INFO] [stdout] | [INFO] [stdout] 120 | ... let _ = output_tx.send(OutputMsg::new_error(&msg)).await; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:147:73 [INFO] [stdout] | [INFO] [stdout] 147 | ... let _ = output_tx.send(OutputMsg::new_error(&msg)).await; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:154:17 [INFO] [stdout] | [INFO] [stdout] 154 | / match e { [INFO] [stdout] 155 | | RecvHandlerError::MalformedPacket(_) => { [INFO] [stdout] 156 | | write_handler [INFO] [stdout] 157 | | .write_str(MALFORMED_PACKET) [INFO] [stdout] ... | [INFO] [stdout] 161 | | _ => {} [INFO] [stdout] 162 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 154 ~ if let RecvHandlerError::MalformedPacket(_) = e { [INFO] [stdout] 155 + write_handler [INFO] [stdout] 156 + .write_str(MALFORMED_PACKET) [INFO] [stdout] 157 + .await [INFO] [stdout] 158 + .map_err(|e| HandshakeError::NonFatal(e.into()))?; [INFO] [stdout] 159 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `default` to create a unit struct [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:186:19 [INFO] [stdout] | [INFO] [stdout] 186 | let mut rng = OsRng::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_constructed_unit_structs [INFO] [stdout] help: remove this call to `default` [INFO] [stdout] | [INFO] [stdout] 186 - let mut rng = OsRng::default(); [INFO] [stdout] 186 + let mut rng = OsRng; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:231:28 [INFO] [stdout] | [INFO] [stdout] 231 | Mac::update(&mut hmac, &sent_nonce.as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `sent_nonce.as_bytes()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:232:28 [INFO] [stdout] | [INFO] [stdout] 232 | Mac::update(&mut hmac, &pk_str.as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `pk_str.as_bytes()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:236:35 [INFO] [stdout] | [INFO] [stdout] 236 | .decrypt(Pkcs1v15Encrypt, &enc_key_hmac_seq) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `enc_key_hmac_seq` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:261:28 [INFO] [stdout] | [INFO] [stdout] 261 | Mac::update(&mut hmac, &received_nonce); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `received_nonce` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:262:28 [INFO] [stdout] | [INFO] [stdout] 262 | Mac::update(&mut hmac, &aes_key); [INFO] [stdout] | ^^^^^^^^ help: change this to: `aes_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:263:28 [INFO] [stdout] | [INFO] [stdout] 263 | Mac::update(&mut hmac, &hmac_secret_key); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `hmac_secret_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:264:28 [INFO] [stdout] | [INFO] [stdout] 264 | Mac::update(&mut hmac, &seq_num_bytes); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `seq_num_bytes` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:265:28 [INFO] [stdout] | [INFO] [stdout] 265 | Mac::update(&mut hmac, &sent_nonce.as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `sent_nonce.as_bytes()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:266:28 [INFO] [stdout] | [INFO] [stdout] 266 | Mac::update(&mut hmac, &pk_str.as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `pk_str.as_bytes()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:275:30 [INFO] [stdout] | [INFO] [stdout] 275 | .import_safety_tools(&aes_key, &hmac_secret_key, seq_num) [INFO] [stdout] | ^^^^^^^^ help: change this to: `aes_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:275:40 [INFO] [stdout] | [INFO] [stdout] 275 | .import_safety_tools(&aes_key, &hmac_secret_key, seq_num) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `hmac_secret_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:278:30 [INFO] [stdout] | [INFO] [stdout] 278 | .import_safety_tools(&aes_key, &hmac_secret_key, seq_num) [INFO] [stdout] | ^^^^^^^^ help: change this to: `aes_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:278:40 [INFO] [stdout] | [INFO] [stdout] 278 | .import_safety_tools(&aes_key, &hmac_secret_key, seq_num) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `hmac_secret_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/client_lib.rs:100:24 [INFO] [stdout] | [INFO] [stdout] 100 | return Err(e.into()); [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `e` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/client_lib.rs:178:5 [INFO] [stdout] | [INFO] [stdout] 178 | /// them. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 178 | /// them. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/client_lib.rs:180:5 [INFO] [stdout] | [INFO] [stdout] 180 | /// input from stdin it sends said input through this channel and `client_command` will respond to [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 180 | /// input from stdin it sends said input through this channel and `client_command` will respond to [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/client_lib.rs:181:5 [INFO] [stdout] | [INFO] [stdout] 181 | /// it. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 181 | /// it. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:66:28 [INFO] [stdout] | [INFO] [stdout] 66 | pub fn print_list(clients: &Vec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 66 - pub fn print_list(clients: &Vec) -> String { [INFO] [stdout] 66 + pub fn print_list(clients: &[Client]) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:89:5 [INFO] [stdout] | [INFO] [stdout] 89 | /// TODO: refactor, telemetry [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 89 | /// TODO: refactor, telemetry [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:104:46 [INFO] [stdout] | [INFO] [stdout] 104 | .send(OutputMsg::new(&format!( [INFO] [stdout] | ______________________________________________^ [INFO] [stdout] 105 | | "{} has left the chat.\n", [INFO] [stdout] 106 | | clients[i].nick, [INFO] [stdout] 107 | | ))) [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 104 ~ .send(OutputMsg::new(format!( [INFO] [stdout] 105 + "{} has left the chat.\n", [INFO] [stdout] 106 + clients[i].nick, [INFO] [stdout] 107 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:136:38 [INFO] [stdout] | [INFO] [stdout] 136 | let content = print_list(&clients); [INFO] [stdout] | ^^^^^^^^ help: change this to: `clients` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:152:17 [INFO] [stdout] | [INFO] [stdout] 152 | &output_tx, [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `output_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:153:17 [INFO] [stdout] | [INFO] [stdout] 153 | &stdin_req_tx, [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `stdin_req_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:185:8 [INFO] [stdout] | [INFO] [stdout] 185 | if msg.chars().nth(0).expect("this should not happen") == '&' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `msg.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:189:38 [INFO] [stdout] | [INFO] [stdout] 189 | .send(OutputMsg::new(&print_list(&clients))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `print_list(&clients)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:189:50 [INFO] [stdout] | [INFO] [stdout] 189 | .send(OutputMsg::new(&print_list(&clients))) [INFO] [stdout] | ^^^^^^^^ help: change this to: `clients` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/client_lib.rs:260:69 [INFO] [stdout] | [INFO] [stdout] 260 | let _ = output_tx.send(OutputMsg::new_error(&msg)).await; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/client_lib.rs:268:12 [INFO] [stdout] | [INFO] [stdout] 268 | if content.trim().len() < 1 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `content.trim().is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/client_lib.rs:272:12 [INFO] [stdout] | [INFO] [stdout] 272 | if content.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!content.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:195:44 [INFO] [stdout] | [INFO] [stdout] 195 | .send(OutputMsg::new_error(&format!( [INFO] [stdout] | ____________________________________________^ [INFO] [stdout] 196 | | "Invalid command, type \"{}\" for displaying the avaible commands.", [INFO] [stdout] 197 | | SERVER_COM.trim() [INFO] [stdout] 198 | | ))) [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 195 ~ .send(OutputMsg::new_error(format!( [INFO] [stdout] 196 + "Invalid command, type \"{}\" for displaying the avaible commands.", [INFO] [stdout] 197 + SERVER_COM.trim() [INFO] [stdout] 198 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/client_lib.rs:330:25 [INFO] [stdout] | [INFO] [stdout] 330 | / return Ok(InputMsg::Command { [INFO] [stdout] 331 | | payload: ClientCommand::ListUsers, [INFO] [stdout] 332 | | }); [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 330 ~ Ok(InputMsg::Command { [INFO] [stdout] 331 + payload: ClientCommand::ListUsers, [INFO] [stdout] 332 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/client_lib.rs:334:25 [INFO] [stdout] | [INFO] [stdout] 334 | return Err(anyhow::anyhow!("Invalid command")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 334 - return Err(anyhow::anyhow!("Invalid command")); [INFO] [stdout] 334 + Err(anyhow::anyhow!("Invalid command")) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/client_lib.rs:337:21 [INFO] [stdout] | [INFO] [stdout] 337 | / return Ok(InputMsg::Plain { [INFO] [stdout] 338 | | payload: payload.into(), [INFO] [stdout] 339 | | }); [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 337 ~ Ok(InputMsg::Plain { [INFO] [stdout] 338 + payload: payload.into(), [INFO] [stdout] 339 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:226:14 [INFO] [stdout] | [INFO] [stdout] 226 | clients: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 226 - clients: &mut Vec, [INFO] [stdout] 226 + clients: &mut [Client], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/client_lib.rs:343:17 [INFO] [stdout] | [INFO] [stdout] 343 | return Err(anyhow::anyhow!("Empty string has been provided.")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 343 - return Err(anyhow::anyhow!("Empty string has been provided.")); [INFO] [stdout] 343 + Err(anyhow::anyhow!("Empty string has been provided.")) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `clients` [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:233:14 [INFO] [stdout] | [INFO] [stdout] 233 | for i in 0..amount { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 233 - for i in 0..amount { [INFO] [stdout] 233 + for (i, ) in clients.iter().enumerate().take(amount) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:263:49 [INFO] [stdout] | [INFO] [stdout] 263 | output_tx.send(OutputMsg::new_error(&e.to_string())).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `e.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/client_lib.rs:362:41 [INFO] [stdout] | [INFO] [stdout] 362 | write_handler.write_str(&payload).await?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `payload` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/server_lib/id_record.rs:47:1 [INFO] [stdout] | [INFO] [stdout] 47 | / #[tracing::instrument( [INFO] [stdout] 48 | | name = "Id record thread is running", [INFO] [stdout] 49 | | skip( [INFO] [stdout] 50 | | max_connections, [INFO] [stdout] ... | [INFO] [stdout] 58 | | )] [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] = note: this warning originates in the attribute macro `tracing::instrument` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib/administration.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | /// and visualized by them [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 21 | /// and visualized by them [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib/administration.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | /// input from stdin it sends said input through this channel and `server_commands` will respont to [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 23 | /// input from stdin it sends said input through this channel and `server_commands` will respont to [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib/administration.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | /// it. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 24 | /// it. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/id_record.rs:80:69 [INFO] [stdout] | [INFO] [stdout] 80 | let _ = output_tx.send(OutputMsg::new_error(&msg)).await; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/id_record.rs:100:69 [INFO] [stdout] | [INFO] [stdout] 100 | let _ = output_tx.send(OutputMsg::new_error(&msg)).await; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/server_lib/administration.rs:96:56 [INFO] [stdout] | [INFO] [stdout] 96 | ... .send(OutputMsg::new_error(format!( [INFO] [stdout] | __________________________________________________^ [INFO] [stdout] 97 | | ... "All senders for `server_commands` has been dropped.", [INFO] [stdout] 98 | | ... ))) [INFO] [stdout] | |_______________________^ help: consider using `.to_string()`: `"All senders for `server_commands` has been dropped.".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/server_lib/administration.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 107 | if content.trim().len() < 1 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `content.trim().is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/server_lib/administration.rs:111:12 [INFO] [stdout] | [INFO] [stdout] 111 | if content.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!content.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | / match err { [INFO] [stdout] 41 | | Some(e) => output_tx.send(OutputMsg::new_error(&e.to_string())).await?, [INFO] [stdout] 42 | | None => {} [INFO] [stdout] 43 | | } [INFO] [stdout] | |_____^ help: try: `if let Some(e) = err { output_tx.send(OutputMsg::new_error(&e.to_string())).await? }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:41:56 [INFO] [stdout] | [INFO] [stdout] 41 | Some(e) => output_tx.send(OutputMsg::new_error(&e.to_string())).await?, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `e.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:83:13 [INFO] [stdout] | [INFO] [stdout] 83 | return res; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:88:13 [INFO] [stdout] | [INFO] [stdout] 88 | return Err(HandshakeError::NonFatal(anyhow!("Handshake failed becouse timeout has been reached."))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:82:54 [INFO] [stdout] | [INFO] [stdout] 82 | res = handshake(write_handler, read_handler, &id_tx, output_tx, shared_secret) => { [INFO] [stdout] | ^^^^^^ help: change this to: `id_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:137:34 [INFO] [stdout] | [INFO] [stdout] 137 | .map_err(|e| ReadBranchError::Fatal(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `ReadBranchError::Fatal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:135:40 [INFO] [stdout] | [INFO] [stdout] 135 | connection_dropped(&id_tx, e, nick.into(), &output_tx) [INFO] [stdout] | ^^^^^^ help: change this to: `id_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:145:34 [INFO] [stdout] | [INFO] [stdout] 145 | .map_err(|e| ReadBranchError::Fatal(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `ReadBranchError::Fatal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:143:40 [INFO] [stdout] | [INFO] [stdout] 143 | connection_dropped(&id_tx, Some(&err), nick.into(), &output_tx) [INFO] [stdout] | ^^^^^^ help: change this to: `id_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:149:48 [INFO] [stdout] | [INFO] [stdout] 149 | let _ = connection_dropped(&id_tx, Some(&err), nick.into(), &output_tx).await; [INFO] [stdout] | ^^^^^^ help: change this to: `id_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:183:5 [INFO] [stdout] | [INFO] [stdout] 183 | / match line.chars().nth(0) { [INFO] [stdout] 184 | | Some(n) => { [INFO] [stdout] 185 | | if n == '&' { [INFO] [stdout] 186 | | if line == LIST { [INFO] [stdout] ... | [INFO] [stdout] 247 | | None => {} [INFO] [stdout] 248 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 183 ~ if let Some(n) = line.chars().nth(0) { [INFO] [stdout] 184 + if n == '&' { [INFO] [stdout] 185 + if line == LIST { [INFO] [stdout] 186 + let req = ConnHandlerIdRecordMsg::List(nick.into()); [INFO] [stdout] 187 + match id_tx.send(req).await { [INFO] [stdout] 188 + Ok(_) => {} [INFO] [stdout] 189 + Err(e) => { [INFO] [stdout] 190 + return Err(ReadBranchError::Fatal(anyhow::anyhow!(e.to_string()))); [INFO] [stdout] 191 + } [INFO] [stdout] 192 + }; [INFO] [stdout] 193 + let list = match id_hand_rx.recv().await { [INFO] [stdout] 194 + Some(l) => l, [INFO] [stdout] 195 + None => { [INFO] [stdout] 196 + let e = "Failed to receive from `id_record` in `read_branch_n`"; [INFO] [stdout] 197 + let _ = output_tx.send(OutputMsg::new_error(&e)).await; [INFO] [stdout] 198 + return Err(ReadBranchError::Fatal(anyhow::anyhow!(e))); [INFO] [stdout] 199 + } [INFO] [stdout] 200 + }; [INFO] [stdout] 201 + let content; [INFO] [stdout] 202 + match list { [INFO] [stdout] 203 + IdRecordConnHandler::List(s) => { [INFO] [stdout] 204 + content = s; [INFO] [stdout] 205 + } [INFO] [stdout] 206 + _other => { [INFO] [stdout] 207 + // `id_record` should always respond with a `List` variant here. [INFO] [stdout] 208 + return Err(ReadBranchError::Fatal(anyhow::anyhow!("Unexpecte behaviour from `id_record`:\nIt responded with a non `IdRecordConnHandler::List` to a request for a list."))); [INFO] [stdout] 209 + } [INFO] [stdout] 210 + }; [INFO] [stdout] 211 + let msg = Message::Personal { [INFO] [stdout] 212 + content, [INFO] [stdout] 213 + nickname: nick.into(), [INFO] [stdout] 214 + }; [INFO] [stdout] 215 + match int_com_tx.send(msg) { [INFO] [stdout] 216 + Ok(_) => {} [INFO] [stdout] 217 + Err(e) => { [INFO] [stdout] 218 + let _ = output_tx.send(OutputMsg::new_error(e.to_string())).await; [INFO] [stdout] 219 + return Err(ReadBranchError::Fatal(anyhow::anyhow!(e))); [INFO] [stdout] 220 + } [INFO] [stdout] 221 + }; [INFO] [stdout] 222 + } [INFO] [stdout] 223 + } else { [INFO] [stdout] 224 + // regular message [INFO] [stdout] 225 + let msg = format!("{}: {}", nick, line); [INFO] [stdout] 226 + match output_tx.send(OutputMsg::new(&msg)).await { [INFO] [stdout] 227 + Ok(()) => {} [INFO] [stdout] 228 + Err(e) => { [INFO] [stdout] 229 + return Err(ReadBranchError::Fatal(anyhow::anyhow!(e))); [INFO] [stdout] 230 + } [INFO] [stdout] 231 + }; [INFO] [stdout] 232 + // send the line to the branch that communicates [INFO] [stdout] 233 + // with the clinet [INFO] [stdout] 234 + let msg = Message::Broadcast { [INFO] [stdout] 235 + content: msg, [INFO] [stdout] 236 + nickname: nick.into(), [INFO] [stdout] 237 + }; [INFO] [stdout] 238 + match int_com_tx.send(msg) { [INFO] [stdout] 239 + Ok(_) => {} [INFO] [stdout] 240 + Err(e) => { [INFO] [stdout] 241 + return Err(ReadBranchError::Fatal(anyhow::anyhow!(e))); [INFO] [stdout] 242 + } [INFO] [stdout] 243 + } [INFO] [stdout] 244 + } [INFO] [stdout] 245 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:183:11 [INFO] [stdout] | [INFO] [stdout] 183 | match line.chars().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `line.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | /// id_record. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 32 | /// id_record. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | /// to id_record [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 34 | /// to id_record [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/server_lib.rs:40:1 [INFO] [stdout] | [INFO] [stdout] 40 | / pub async fn run_wrapper( [INFO] [stdout] 41 | | settings: Settings, [INFO] [stdout] 42 | | con_hand_id_tx: mpsc::Sender, [INFO] [stdout] 43 | | con_hand_id_rx: mpsc::Receiver, [INFO] [stdout] ... | [INFO] [stdout] 48 | | stream_requests: impl Stream, [INFO] [stdout] 49 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:198:73 [INFO] [stdout] | [INFO] [stdout] 198 | ... let _ = output_tx.send(OutputMsg::new_error(&e)).await; [INFO] [stdout] | ^^ help: change this to: `e` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:202:21 [INFO] [stdout] | [INFO] [stdout] 202 | let content; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `content` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 202 ~ [INFO] [stdout] 203 ~ let content = match list { [INFO] [stdout] 204 | IdRecordConnHandler::List(s) => { [INFO] [stdout] 205 ~ s [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:281:20 [INFO] [stdout] | [INFO] [stdout] 281 | if &nickname != nick { [INFO] [stdout] | ---------^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `nickname` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:287:42 [INFO] [stdout] | [INFO] [stdout] 287 | ... .map_err(|e| WriteBranchError::Fatal(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `WriteBranchError::Fatal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/server_lib.rs:93:1 [INFO] [stdout] | [INFO] [stdout] 93 | / #[tracing::instrument( [INFO] [stdout] 94 | | name = "Server is running", [INFO] [stdout] 95 | | skip( [INFO] [stdout] 96 | | settings, [INFO] [stdout] ... | [INFO] [stdout] 103 | | )] [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: this warning originates in the attribute macro `tracing::instrument` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:294:20 [INFO] [stdout] | [INFO] [stdout] 294 | if &nickname == nick { [INFO] [stdout] | ---------^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `nickname` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:300:42 [INFO] [stdout] | [INFO] [stdout] 300 | ... .map_err(|e| WriteBranchError::Fatal(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `WriteBranchError::Fatal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:312:26 [INFO] [stdout] | [INFO] [stdout] 312 | .map_err(|e| WriteBranchError::Fatal(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `WriteBranchError::Fatal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/auxiliaries.rs:310:32 [INFO] [stdout] | [INFO] [stdout] 310 | connection_dropped(&id_tx, Some(&err), nick.into(), &output_tx) [INFO] [stdout] | ^^^^^^ help: change this to: `id_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | /// `id_record`. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 50 | /// `id_record`. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib.rs:173:61 [INFO] [stdout] | [INFO] [stdout] 173 | let _ = output_tx.send(OutputMsg::new_error(&msg)).await; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:120:73 [INFO] [stdout] | [INFO] [stdout] 120 | ... let _ = output_tx.send(OutputMsg::new_error(&msg)).await; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:147:73 [INFO] [stdout] | [INFO] [stdout] 147 | ... let _ = output_tx.send(OutputMsg::new_error(&msg)).await; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:154:17 [INFO] [stdout] | [INFO] [stdout] 154 | / match e { [INFO] [stdout] 155 | | RecvHandlerError::MalformedPacket(_) => { [INFO] [stdout] 156 | | write_handler [INFO] [stdout] 157 | | .write_str(MALFORMED_PACKET) [INFO] [stdout] ... | [INFO] [stdout] 161 | | _ => {} [INFO] [stdout] 162 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 154 ~ if let RecvHandlerError::MalformedPacket(_) = e { [INFO] [stdout] 155 + write_handler [INFO] [stdout] 156 + .write_str(MALFORMED_PACKET) [INFO] [stdout] 157 + .await [INFO] [stdout] 158 + .map_err(|e| HandshakeError::NonFatal(e.into()))?; [INFO] [stdout] 159 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `default` to create a unit struct [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:186:19 [INFO] [stdout] | [INFO] [stdout] 186 | let mut rng = OsRng::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_constructed_unit_structs [INFO] [stdout] help: remove this call to `default` [INFO] [stdout] | [INFO] [stdout] 186 - let mut rng = OsRng::default(); [INFO] [stdout] 186 + let mut rng = OsRng; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:231:28 [INFO] [stdout] | [INFO] [stdout] 231 | Mac::update(&mut hmac, &sent_nonce.as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `sent_nonce.as_bytes()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:232:28 [INFO] [stdout] | [INFO] [stdout] 232 | Mac::update(&mut hmac, &pk_str.as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `pk_str.as_bytes()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:236:35 [INFO] [stdout] | [INFO] [stdout] 236 | .decrypt(Pkcs1v15Encrypt, &enc_key_hmac_seq) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `enc_key_hmac_seq` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:261:28 [INFO] [stdout] | [INFO] [stdout] 261 | Mac::update(&mut hmac, &received_nonce); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `received_nonce` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:262:28 [INFO] [stdout] | [INFO] [stdout] 262 | Mac::update(&mut hmac, &aes_key); [INFO] [stdout] | ^^^^^^^^ help: change this to: `aes_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:263:28 [INFO] [stdout] | [INFO] [stdout] 263 | Mac::update(&mut hmac, &hmac_secret_key); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `hmac_secret_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:264:28 [INFO] [stdout] | [INFO] [stdout] 264 | Mac::update(&mut hmac, &seq_num_bytes); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `seq_num_bytes` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:265:28 [INFO] [stdout] | [INFO] [stdout] 265 | Mac::update(&mut hmac, &sent_nonce.as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `sent_nonce.as_bytes()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:266:28 [INFO] [stdout] | [INFO] [stdout] 266 | Mac::update(&mut hmac, &pk_str.as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `pk_str.as_bytes()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:275:30 [INFO] [stdout] | [INFO] [stdout] 275 | .import_safety_tools(&aes_key, &hmac_secret_key, seq_num) [INFO] [stdout] | ^^^^^^^^ help: change this to: `aes_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:275:40 [INFO] [stdout] | [INFO] [stdout] 275 | .import_safety_tools(&aes_key, &hmac_secret_key, seq_num) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `hmac_secret_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:278:30 [INFO] [stdout] | [INFO] [stdout] 278 | .import_safety_tools(&aes_key, &hmac_secret_key, seq_num) [INFO] [stdout] | ^^^^^^^^ help: change this to: `aes_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/connection_handling/handshaking.rs:278:40 [INFO] [stdout] | [INFO] [stdout] 278 | .import_safety_tools(&aes_key, &hmac_secret_key, seq_num) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `hmac_secret_key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> src/shared_lib/socket_handling.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::usize; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `usize::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/shared_lib/socket_handling.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 116 | / match &mut self.s_tools { [INFO] [stdout] 117 | | Some(s_tools) => { [INFO] [stdout] 118 | | let recv_sec_num: u32 = [INFO] [stdout] 119 | | str::from_utf8(&self.buffer[self.cursor..self.cursor + self.seq_num_size]) [INFO] [stdout] ... | [INFO] [stdout] 131 | | None => {} [INFO] [stdout] 132 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 116 ~ if let Some(s_tools) = &mut self.s_tools { [INFO] [stdout] 117 + let recv_sec_num: u32 = [INFO] [stdout] 118 + str::from_utf8(&self.buffer[self.cursor..self.cursor + self.seq_num_size]) [INFO] [stdout] 119 + .context("Malformed seq number")? [INFO] [stdout] 120 + .parse() [INFO] [stdout] 121 + .context("Malformed seq number")?; [INFO] [stdout] 122 + if recv_sec_num != s_tools.seq_number { [INFO] [stdout] 123 + return Err(RecvHandlerError::MalformedPacket(anyhow::anyhow!( [INFO] [stdout] 124 + "Malformed seq number" [INFO] [stdout] 125 + ))); [INFO] [stdout] 126 + } [INFO] [stdout] 127 + s_tools.seq_number = s_tools.seq_number.wrapping_add(1); [INFO] [stdout] 128 + self.cursor = self.cursor + self.seq_num_size; [INFO] [stdout] 129 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:129:17 [INFO] [stdout] | [INFO] [stdout] 129 | self.cursor = self.cursor + self.seq_num_size; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += self.seq_num_size` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:152:21 [INFO] [stdout] | [INFO] [stdout] 152 | self.cursor = self.cursor + x; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/shared_lib/socket_handling.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 164 | / match &self.s_tools { [INFO] [stdout] 165 | | Some(s_tools) => { [INFO] [stdout] 166 | | let mut hmac = as Mac>::new_from_slice(&s_tools.hmac_key) [INFO] [stdout] 167 | | .map_err(|e| RecvHandlerError::HmacError(e.into()))?; [INFO] [stdout] ... | [INFO] [stdout] 183 | | None => {} [INFO] [stdout] 184 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 164 ~ if let Some(s_tools) = &self.s_tools { [INFO] [stdout] 165 + let mut hmac = as Mac>::new_from_slice(&s_tools.hmac_key) [INFO] [stdout] 166 + .map_err(|e| RecvHandlerError::HmacError(e.into()))?; [INFO] [stdout] 167 + hmac.update(&self.buffer[..self.ciphertext_w_nonce_size]); [INFO] [stdout] 168 + hmac.verify_slice(&self.buffer[self.ciphertext_w_nonce_size..]) [INFO] [stdout] 169 + .map_err(|e| RecvHandlerError::HmacError(e.into()))?; [INFO] [stdout] 170 + [INFO] [stdout] 171 + let nonce = &self.buffer[self.ciphertext_size..self.ciphertext_w_nonce_size]; [INFO] [stdout] 172 + [INFO] [stdout] 173 + let buffer = &s_tools [INFO] [stdout] 174 + .aes_cipher [INFO] [stdout] 175 + .decrypt(nonce.into(), &self.buffer[..self.ciphertext_size]) [INFO] [stdout] 176 + .map_err(|e| RecvHandlerError::EncryptionError(anyhow::anyhow!(e)))?; [INFO] [stdout] 177 + [INFO] [stdout] 178 + for i in 0..self.plaintext_size { [INFO] [stdout] 179 + self.buffer[i] = buffer[i]; [INFO] [stdout] 180 + } [INFO] [stdout] 181 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like you're manually copying between slices [INFO] [stdout] --> src/shared_lib/socket_handling.rs:179:17 [INFO] [stdout] | [INFO] [stdout] 179 | / for i in 0..self.plaintext_size { [INFO] [stdout] 180 | | self.buffer[i] = buffer[i]; [INFO] [stdout] 181 | | } [INFO] [stdout] | |_________________^ help: try replacing the loop by: `self.buffer[..self.plaintext_size].copy_from_slice(&buffer[..self.plaintext_size]);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stdout] = note: `#[warn(clippy::manual_memcpy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/shared_lib/socket_handling.rs:213:18 [INFO] [stdout] | [INFO] [stdout] 213 | aes_key: &GenericArray< [INFO] [stdout] | __________________^ [INFO] [stdout] 214 | | u8, [INFO] [stdout] 215 | | UInt, B0>, B0>, B0>, B0>, B0>, [INFO] [stdout] 216 | | >, [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `default` to create a unit struct [INFO] [stdout] --> src/shared_lib/socket_handling.rs:290:18 [INFO] [stdout] | [INFO] [stdout] 290 | rng: OsRng::default(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_constructed_unit_structs [INFO] [stdout] help: remove this call to `default` [INFO] [stdout] | [INFO] [stdout] 290 - rng: OsRng::default(), [INFO] [stdout] 290 + rng: OsRng, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/shared_lib/socket_handling.rs:301:29 [INFO] [stdout] | [INFO] [stdout] 301 | self.prepare_packet(&msg).await?; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/shared_lib/socket_handling.rs:303:9 [INFO] [stdout] | [INFO] [stdout] 303 | / match &self.s_tools { [INFO] [stdout] 304 | | Some(s_tools) => { [INFO] [stdout] 305 | | let nonce = Aes256Gcm::generate_nonce(&mut self.rng); [INFO] [stdout] 306 | | let mut new_buff = s_tools [INFO] [stdout] ... | [INFO] [stdout] 323 | | None => {} [INFO] [stdout] 324 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 303 ~ if let Some(s_tools) = &self.s_tools { [INFO] [stdout] 304 + let nonce = Aes256Gcm::generate_nonce(&mut self.rng); [INFO] [stdout] 305 + let mut new_buff = s_tools [INFO] [stdout] 306 + .aes_cipher [INFO] [stdout] 307 + .encrypt(&nonce, &self.buffer[..]) [INFO] [stdout] 308 + .map_err(|e| WriteHandlerError::EncryptionError(anyhow::anyhow!("{}", e)))?; [INFO] [stdout] 309 + new_buff.extend(&nonce); [INFO] [stdout] 310 + for i in 0..new_buff.len() { [INFO] [stdout] 311 + self.encrypte_buffer[i] = new_buff[i]; [INFO] [stdout] 312 + } [INFO] [stdout] 313 + let mut hmac = as Mac>::new_from_slice(&s_tools.hmac_key)?; [INFO] [stdout] 314 + hmac.update(&self.encrypte_buffer[..self.ciphertext_w_nonce_size]); [INFO] [stdout] 315 + let hash = hmac.finalize().into_bytes(); [INFO] [stdout] 316 + let mut index = 0; [INFO] [stdout] 317 + for i in self.ciphertext_w_nonce_size..self.ciphertext_w_nonce_size_and_hmac { [INFO] [stdout] 318 + self.encrypte_buffer[i] = hash[index]; [INFO] [stdout] 319 + index = index + 1; [INFO] [stdout] 320 + } [INFO] [stdout] 321 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like you're manually copying between slices [INFO] [stdout] --> src/shared_lib/socket_handling.rs:311:17 [INFO] [stdout] | [INFO] [stdout] 311 | / for i in 0..new_buff.len() { [INFO] [stdout] 312 | | self.encrypte_buffer[i] = new_buff[i]; [INFO] [stdout] 313 | | } [INFO] [stdout] | |_________________^ help: try replacing the loop by: `self.encrypte_buffer[..new_buff.len()].copy_from_slice(&new_buff[..]);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:320:21 [INFO] [stdout] | [INFO] [stdout] 320 | index = index + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `index += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:376:13 [INFO] [stdout] | [INFO] [stdout] 376 | self.cursor = self.cursor + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:380:13 [INFO] [stdout] | [INFO] [stdout] 380 | self.cursor = self.cursor + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/shared_lib/socket_handling.rs:382:9 [INFO] [stdout] | [INFO] [stdout] 382 | / match &mut self.s_tools { [INFO] [stdout] 383 | | Some(s_tools) => { [INFO] [stdout] 384 | | let seq_num_bytes = Vec::from(s_tools.seq_number.to_string().as_bytes()); [INFO] [stdout] 385 | | let len_seq_num_bytes = seq_num_bytes.len(); [INFO] [stdout] ... | [INFO] [stdout] 398 | | None => {} [INFO] [stdout] 399 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 382 ~ if let Some(s_tools) = &mut self.s_tools { [INFO] [stdout] 383 + let seq_num_bytes = Vec::from(s_tools.seq_number.to_string().as_bytes()); [INFO] [stdout] 384 + let len_seq_num_bytes = seq_num_bytes.len(); [INFO] [stdout] 385 + while self.cursor [INFO] [stdout] 386 + < self.pbuffer_prefix_size + (self.seq_num_size - len_seq_num_bytes) [INFO] [stdout] 387 + { [INFO] [stdout] 388 + self.buffer[self.cursor] = b'0'; [INFO] [stdout] 389 + self.cursor = self.cursor + 1; [INFO] [stdout] 390 + } [INFO] [stdout] 391 + for &i in seq_num_bytes.iter() { [INFO] [stdout] 392 + self.buffer[self.cursor] = i; [INFO] [stdout] 393 + self.cursor = self.cursor + 1; [INFO] [stdout] 394 + } [INFO] [stdout] 395 + s_tools.seq_number = s_tools.seq_number.wrapping_add(1) [INFO] [stdout] 396 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:390:21 [INFO] [stdout] | [INFO] [stdout] 390 | self.cursor = self.cursor + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:394:21 [INFO] [stdout] | [INFO] [stdout] 394 | self.cursor = self.cursor + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:402:13 [INFO] [stdout] | [INFO] [stdout] 402 | self.cursor = self.cursor + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:406:13 [INFO] [stdout] | [INFO] [stdout] 406 | self.cursor = self.cursor + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/shared_lib/socket_handling.rs:415:29 [INFO] [stdout] | [INFO] [stdout] 415 | self.prepare_packet(&msg).await?; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/shared_lib/socket_handling.rs:424:18 [INFO] [stdout] | [INFO] [stdout] 424 | aes_key: &GenericArray< [INFO] [stdout] | __________________^ [INFO] [stdout] 425 | | u8, [INFO] [stdout] 426 | | UInt, B0>, B0>, B0>, B0>, B0>, [INFO] [stdout] 427 | | >, [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/shared_lib/socket_handling.rs:467:17 [INFO] [stdout] | [INFO] [stdout] 467 | aes_cipher: AesGcm, B1>, B0>, B0>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:66:28 [INFO] [stdout] | [INFO] [stdout] 66 | pub fn print_list(clients: &Vec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 66 - pub fn print_list(clients: &Vec) -> String { [INFO] [stdout] 66 + pub fn print_list(clients: &[Client]) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:89:5 [INFO] [stdout] | [INFO] [stdout] 89 | /// TODO: refactor, telemetry [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 89 | /// TODO: refactor, telemetry [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:104:46 [INFO] [stdout] | [INFO] [stdout] 104 | .send(OutputMsg::new(&format!( [INFO] [stdout] | ______________________________________________^ [INFO] [stdout] 105 | | "{} has left the chat.\n", [INFO] [stdout] 106 | | clients[i].nick, [INFO] [stdout] 107 | | ))) [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 104 ~ .send(OutputMsg::new(format!( [INFO] [stdout] 105 + "{} has left the chat.\n", [INFO] [stdout] 106 + clients[i].nick, [INFO] [stdout] 107 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:136:38 [INFO] [stdout] | [INFO] [stdout] 136 | let content = print_list(&clients); [INFO] [stdout] | ^^^^^^^^ help: change this to: `clients` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/shared_lib.rs:34:25 [INFO] [stdout] | [INFO] [stdout] 34 | / match msg.payload { [INFO] [stdout] 35 | | Some(m) => { [INFO] [stdout] 36 | | println!("{}", m); [INFO] [stdout] ... | [INFO] [stdout] 39 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 34 ~ if let Some(m) = msg.payload { [INFO] [stdout] 35 + println!("{}", m); [INFO] [stdout] 36 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:152:17 [INFO] [stdout] | [INFO] [stdout] 152 | &output_tx, [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `output_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:153:17 [INFO] [stdout] | [INFO] [stdout] 153 | &stdin_req_tx, [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `stdin_req_tx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/shared_lib.rs:40:25 [INFO] [stdout] | [INFO] [stdout] 40 | / match msg.error { [INFO] [stdout] 41 | | Some(m) => { [INFO] [stdout] 42 | | eprintln!("{}", m); [INFO] [stdout] ... | [INFO] [stdout] 45 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 40 ~ if let Some(m) = msg.error { [INFO] [stdout] 41 + eprintln!("{}", m); [INFO] [stdout] 42 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:185:8 [INFO] [stdout] | [INFO] [stdout] 185 | if msg.chars().nth(0).expect("this should not happen") == '&' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `msg.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:189:38 [INFO] [stdout] | [INFO] [stdout] 189 | .send(OutputMsg::new(&print_list(&clients))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `print_list(&clients)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:189:50 [INFO] [stdout] | [INFO] [stdout] 189 | .send(OutputMsg::new(&print_list(&clients))) [INFO] [stdout] | ^^^^^^^^ help: change this to: `clients` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:195:44 [INFO] [stdout] | [INFO] [stdout] 195 | .send(OutputMsg::new_error(&format!( [INFO] [stdout] | ____________________________________________^ [INFO] [stdout] 196 | | "Invalid command, type \"{}\" for displaying the avaible commands.", [INFO] [stdout] 197 | | SERVER_COM.trim() [INFO] [stdout] 198 | | ))) [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 195 ~ .send(OutputMsg::new_error(format!( [INFO] [stdout] 196 + "Invalid command, type \"{}\" for displaying the avaible commands.", [INFO] [stdout] 197 + SERVER_COM.trim() [INFO] [stdout] 198 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:226:14 [INFO] [stdout] | [INFO] [stdout] 226 | clients: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 226 - clients: &mut Vec, [INFO] [stdout] 226 + clients: &mut [Client], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `clients` [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:233:14 [INFO] [stdout] | [INFO] [stdout] 233 | for i in 0..amount { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 233 - for i in 0..amount { [INFO] [stdout] 233 + for (i, ) in clients.iter().enumerate().take(amount) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/id_record/auxiliaries.rs:263:49 [INFO] [stdout] | [INFO] [stdout] 263 | output_tx.send(OutputMsg::new_error(&e.to_string())).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `e.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/server_lib/id_record.rs:47:1 [INFO] [stdout] | [INFO] [stdout] 47 | / #[tracing::instrument( [INFO] [stdout] 48 | | name = "Id record thread is running", [INFO] [stdout] 49 | | skip( [INFO] [stdout] 50 | | max_connections, [INFO] [stdout] ... | [INFO] [stdout] 58 | | )] [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] = note: this warning originates in the attribute macro `tracing::instrument` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/id_record.rs:80:69 [INFO] [stdout] | [INFO] [stdout] 80 | let _ = output_tx.send(OutputMsg::new_error(&msg)).await; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib/id_record.rs:100:69 [INFO] [stdout] | [INFO] [stdout] 100 | let _ = output_tx.send(OutputMsg::new_error(&msg)).await; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | /// id_record. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 32 | /// id_record. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/server_lib.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | /// to id_record [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 34 | /// to id_record [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/server_lib.rs:40:1 [INFO] [stdout] | [INFO] [stdout] 40 | / pub async fn run_wrapper( [INFO] [stdout] 41 | | settings: Settings, [INFO] [stdout] 42 | | con_hand_id_tx: mpsc::Sender, [INFO] [stdout] 43 | | con_hand_id_rx: mpsc::Receiver, [INFO] [stdout] ... | [INFO] [stdout] 48 | | stream_requests: impl Stream, [INFO] [stdout] 49 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/server_lib.rs:93:1 [INFO] [stdout] | [INFO] [stdout] 93 | / #[tracing::instrument( [INFO] [stdout] 94 | | name = "Server is running", [INFO] [stdout] 95 | | skip( [INFO] [stdout] 96 | | settings, [INFO] [stdout] ... | [INFO] [stdout] 103 | | )] [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: this warning originates in the attribute macro `tracing::instrument` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/server_lib.rs:173:61 [INFO] [stdout] | [INFO] [stdout] 173 | let _ = output_tx.send(OutputMsg::new_error(&msg)).await; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> src/shared_lib/socket_handling.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::usize; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `usize::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/shared_lib/socket_handling.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 116 | / match &mut self.s_tools { [INFO] [stdout] 117 | | Some(s_tools) => { [INFO] [stdout] 118 | | let recv_sec_num: u32 = [INFO] [stdout] 119 | | str::from_utf8(&self.buffer[self.cursor..self.cursor + self.seq_num_size]) [INFO] [stdout] ... | [INFO] [stdout] 131 | | None => {} [INFO] [stdout] 132 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 116 ~ if let Some(s_tools) = &mut self.s_tools { [INFO] [stdout] 117 + let recv_sec_num: u32 = [INFO] [stdout] 118 + str::from_utf8(&self.buffer[self.cursor..self.cursor + self.seq_num_size]) [INFO] [stdout] 119 + .context("Malformed seq number")? [INFO] [stdout] 120 + .parse() [INFO] [stdout] 121 + .context("Malformed seq number")?; [INFO] [stdout] 122 + if recv_sec_num != s_tools.seq_number { [INFO] [stdout] 123 + return Err(RecvHandlerError::MalformedPacket(anyhow::anyhow!( [INFO] [stdout] 124 + "Malformed seq number" [INFO] [stdout] 125 + ))); [INFO] [stdout] 126 + } [INFO] [stdout] 127 + s_tools.seq_number = s_tools.seq_number.wrapping_add(1); [INFO] [stdout] 128 + self.cursor = self.cursor + self.seq_num_size; [INFO] [stdout] 129 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:129:17 [INFO] [stdout] | [INFO] [stdout] 129 | self.cursor = self.cursor + self.seq_num_size; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += self.seq_num_size` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:152:21 [INFO] [stdout] | [INFO] [stdout] 152 | self.cursor = self.cursor + x; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/shared_lib/socket_handling.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 164 | / match &self.s_tools { [INFO] [stdout] 165 | | Some(s_tools) => { [INFO] [stdout] 166 | | let mut hmac = as Mac>::new_from_slice(&s_tools.hmac_key) [INFO] [stdout] 167 | | .map_err(|e| RecvHandlerError::HmacError(e.into()))?; [INFO] [stdout] ... | [INFO] [stdout] 183 | | None => {} [INFO] [stdout] 184 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 164 ~ if let Some(s_tools) = &self.s_tools { [INFO] [stdout] 165 + let mut hmac = as Mac>::new_from_slice(&s_tools.hmac_key) [INFO] [stdout] 166 + .map_err(|e| RecvHandlerError::HmacError(e.into()))?; [INFO] [stdout] 167 + hmac.update(&self.buffer[..self.ciphertext_w_nonce_size]); [INFO] [stdout] 168 + hmac.verify_slice(&self.buffer[self.ciphertext_w_nonce_size..]) [INFO] [stdout] 169 + .map_err(|e| RecvHandlerError::HmacError(e.into()))?; [INFO] [stdout] 170 + [INFO] [stdout] 171 + let nonce = &self.buffer[self.ciphertext_size..self.ciphertext_w_nonce_size]; [INFO] [stdout] 172 + [INFO] [stdout] 173 + let buffer = &s_tools [INFO] [stdout] 174 + .aes_cipher [INFO] [stdout] 175 + .decrypt(nonce.into(), &self.buffer[..self.ciphertext_size]) [INFO] [stdout] 176 + .map_err(|e| RecvHandlerError::EncryptionError(anyhow::anyhow!(e)))?; [INFO] [stdout] 177 + [INFO] [stdout] 178 + for i in 0..self.plaintext_size { [INFO] [stdout] 179 + self.buffer[i] = buffer[i]; [INFO] [stdout] 180 + } [INFO] [stdout] 181 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like you're manually copying between slices [INFO] [stdout] --> src/shared_lib/socket_handling.rs:179:17 [INFO] [stdout] | [INFO] [stdout] 179 | / for i in 0..self.plaintext_size { [INFO] [stdout] 180 | | self.buffer[i] = buffer[i]; [INFO] [stdout] 181 | | } [INFO] [stdout] | |_________________^ help: try replacing the loop by: `self.buffer[..self.plaintext_size].copy_from_slice(&buffer[..self.plaintext_size]);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stdout] = note: `#[warn(clippy::manual_memcpy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/shared_lib/socket_handling.rs:213:18 [INFO] [stdout] | [INFO] [stdout] 213 | aes_key: &GenericArray< [INFO] [stdout] | __________________^ [INFO] [stdout] 214 | | u8, [INFO] [stdout] 215 | | UInt, B0>, B0>, B0>, B0>, B0>, [INFO] [stdout] 216 | | >, [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `default` to create a unit struct [INFO] [stdout] --> src/shared_lib/socket_handling.rs:290:18 [INFO] [stdout] | [INFO] [stdout] 290 | rng: OsRng::default(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_constructed_unit_structs [INFO] [stdout] help: remove this call to `default` [INFO] [stdout] | [INFO] [stdout] 290 - rng: OsRng::default(), [INFO] [stdout] 290 + rng: OsRng, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/shared_lib/socket_handling.rs:301:29 [INFO] [stdout] | [INFO] [stdout] 301 | self.prepare_packet(&msg).await?; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/shared_lib/socket_handling.rs:303:9 [INFO] [stdout] | [INFO] [stdout] 303 | / match &self.s_tools { [INFO] [stdout] 304 | | Some(s_tools) => { [INFO] [stdout] 305 | | let nonce = Aes256Gcm::generate_nonce(&mut self.rng); [INFO] [stdout] 306 | | let mut new_buff = s_tools [INFO] [stdout] ... | [INFO] [stdout] 323 | | None => {} [INFO] [stdout] 324 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 303 ~ if let Some(s_tools) = &self.s_tools { [INFO] [stdout] 304 + let nonce = Aes256Gcm::generate_nonce(&mut self.rng); [INFO] [stdout] 305 + let mut new_buff = s_tools [INFO] [stdout] 306 + .aes_cipher [INFO] [stdout] 307 + .encrypt(&nonce, &self.buffer[..]) [INFO] [stdout] 308 + .map_err(|e| WriteHandlerError::EncryptionError(anyhow::anyhow!("{}", e)))?; [INFO] [stdout] 309 + new_buff.extend(&nonce); [INFO] [stdout] 310 + for i in 0..new_buff.len() { [INFO] [stdout] 311 + self.encrypte_buffer[i] = new_buff[i]; [INFO] [stdout] 312 + } [INFO] [stdout] 313 + let mut hmac = as Mac>::new_from_slice(&s_tools.hmac_key)?; [INFO] [stdout] 314 + hmac.update(&self.encrypte_buffer[..self.ciphertext_w_nonce_size]); [INFO] [stdout] 315 + let hash = hmac.finalize().into_bytes(); [INFO] [stdout] 316 + let mut index = 0; [INFO] [stdout] 317 + for i in self.ciphertext_w_nonce_size..self.ciphertext_w_nonce_size_and_hmac { [INFO] [stdout] 318 + self.encrypte_buffer[i] = hash[index]; [INFO] [stdout] 319 + index = index + 1; [INFO] [stdout] 320 + } [INFO] [stdout] 321 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like you're manually copying between slices [INFO] [stdout] --> src/shared_lib/socket_handling.rs:311:17 [INFO] [stdout] | [INFO] [stdout] 311 | / for i in 0..new_buff.len() { [INFO] [stdout] 312 | | self.encrypte_buffer[i] = new_buff[i]; [INFO] [stdout] 313 | | } [INFO] [stdout] | |_________________^ help: try replacing the loop by: `self.encrypte_buffer[..new_buff.len()].copy_from_slice(&new_buff[..]);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:320:21 [INFO] [stdout] | [INFO] [stdout] 320 | index = index + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace it with: `index += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:376:13 [INFO] [stdout] | [INFO] [stdout] 376 | self.cursor = self.cursor + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:380:13 [INFO] [stdout] | [INFO] [stdout] 380 | self.cursor = self.cursor + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/shared_lib/socket_handling.rs:382:9 [INFO] [stdout] | [INFO] [stdout] 382 | / match &mut self.s_tools { [INFO] [stdout] 383 | | Some(s_tools) => { [INFO] [stdout] 384 | | let seq_num_bytes = Vec::from(s_tools.seq_number.to_string().as_bytes()); [INFO] [stdout] 385 | | let len_seq_num_bytes = seq_num_bytes.len(); [INFO] [stdout] ... | [INFO] [stdout] 398 | | None => {} [INFO] [stdout] 399 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 382 ~ if let Some(s_tools) = &mut self.s_tools { [INFO] [stdout] 383 + let seq_num_bytes = Vec::from(s_tools.seq_number.to_string().as_bytes()); [INFO] [stdout] 384 + let len_seq_num_bytes = seq_num_bytes.len(); [INFO] [stdout] 385 + while self.cursor [INFO] [stdout] 386 + < self.pbuffer_prefix_size + (self.seq_num_size - len_seq_num_bytes) [INFO] [stdout] 387 + { [INFO] [stdout] 388 + self.buffer[self.cursor] = b'0'; [INFO] [stdout] 389 + self.cursor = self.cursor + 1; [INFO] [stdout] 390 + } [INFO] [stdout] 391 + for &i in seq_num_bytes.iter() { [INFO] [stdout] 392 + self.buffer[self.cursor] = i; [INFO] [stdout] 393 + self.cursor = self.cursor + 1; [INFO] [stdout] 394 + } [INFO] [stdout] 395 + s_tools.seq_number = s_tools.seq_number.wrapping_add(1) [INFO] [stdout] 396 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:390:21 [INFO] [stdout] | [INFO] [stdout] 390 | self.cursor = self.cursor + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:394:21 [INFO] [stdout] | [INFO] [stdout] 394 | self.cursor = self.cursor + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:402:13 [INFO] [stdout] | [INFO] [stdout] 402 | self.cursor = self.cursor + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/shared_lib/socket_handling.rs:406:13 [INFO] [stdout] | [INFO] [stdout] 406 | self.cursor = self.cursor + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cursor += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/shared_lib/socket_handling.rs:415:29 [INFO] [stdout] | [INFO] [stdout] 415 | self.prepare_packet(&msg).await?; [INFO] [stdout] | ^^^^ help: change this to: `msg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/shared_lib/socket_handling.rs:424:18 [INFO] [stdout] | [INFO] [stdout] 424 | aes_key: &GenericArray< [INFO] [stdout] | __________________^ [INFO] [stdout] 425 | | u8, [INFO] [stdout] 426 | | UInt, B0>, B0>, B0>, B0>, B0>, [INFO] [stdout] 427 | | >, [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/shared_lib/socket_handling.rs:467:17 [INFO] [stdout] | [INFO] [stdout] 467 | aes_cipher: AesGcm, B1>, B0>, B0>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/shared_lib.rs:34:25 [INFO] [stdout] | [INFO] [stdout] 34 | / match msg.payload { [INFO] [stdout] 35 | | Some(m) => { [INFO] [stdout] 36 | | println!("{}", m); [INFO] [stdout] ... | [INFO] [stdout] 39 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 34 ~ if let Some(m) = msg.payload { [INFO] [stdout] 35 + println!("{}", m); [INFO] [stdout] 36 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/shared_lib.rs:40:25 [INFO] [stdout] | [INFO] [stdout] 40 | / match msg.error { [INFO] [stdout] 41 | | Some(m) => { [INFO] [stdout] 42 | | eprintln!("{}", m); [INFO] [stdout] ... | [INFO] [stdout] 45 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 40 ~ if let Some(m) = msg.error { [INFO] [stdout] 41 + eprintln!("{}", m); [INFO] [stdout] 42 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 28s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: num-bigint-dig v0.8.4 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` [INFO] running `Command { std: "docker" "inspect" "7a367d536ba84183339cc5e9a6b503d2db3a56f9f8d4fb4b62c3c6915b015618", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7a367d536ba84183339cc5e9a6b503d2db3a56f9f8d4fb4b62c3c6915b015618", kill_on_drop: false }` [INFO] [stdout] 7a367d536ba84183339cc5e9a6b503d2db3a56f9f8d4fb4b62c3c6915b015618