[INFO] cloning repository https://github.com/qyzhg/worker-auth [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/qyzhg/worker-auth" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqyzhg%2Fworker-auth", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqyzhg%2Fworker-auth'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 927f207273fefd44a165799c0a25df1445a4bc15 [INFO] linting qyzhg/worker-auth against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqyzhg%2Fworker-auth" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/qyzhg/worker-auth [INFO] finished tweaking git repo https://github.com/qyzhg/worker-auth [INFO] tweaked toml for git repo https://github.com/qyzhg/worker-auth written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/qyzhg/worker-auth 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/qyzhg/worker-auth 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] Downloading crates ... [INFO] [stderr] Downloaded worker-sys v0.4.1 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.93 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.93 [INFO] [stderr] Downloaded worker-macros v0.4.1 [INFO] [stderr] Downloaded wasm-bindgen-backend v0.2.93 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.93 [INFO] [stderr] Downloaded wasm-bindgen v0.2.93 [INFO] [stderr] Downloaded ciborium-ll v0.2.2 [INFO] [stderr] Downloaded worker-kv v0.7.0 [INFO] [stderr] Downloaded ciborium-io v0.2.2 [INFO] [stderr] Downloaded cpufeatures v0.2.14 [INFO] [stderr] Downloaded thiserror-impl v1.0.64 [INFO] [stderr] Downloaded wasm-bindgen-futures v0.4.43 [INFO] [stderr] Downloaded argon2 v0.5.3 [INFO] [stderr] Downloaded password-hash v0.5.0 [INFO] [stderr] Downloaded thiserror v1.0.64 [INFO] [stderr] Downloaded blake2 v0.10.6 [INFO] [stderr] Downloaded bytes v1.7.2 [INFO] [stderr] Downloaded jwt-compact v0.9.0-beta.1 [INFO] [stderr] Downloaded cc v1.1.28 [INFO] [stderr] Downloaded worker v0.4.1 [INFO] [stderr] Downloaded http v1.1.0 [INFO] [stderr] Downloaded url v2.5.2 [INFO] [stderr] Downloaded serde_derive v1.0.210 [INFO] [stderr] Downloaded serde_json v1.0.128 [INFO] [stderr] Downloaded portable-atomic v1.9.0 [INFO] [stderr] Downloaded serde v1.0.210 [INFO] [stderr] Downloaded regex v1.11.0 [INFO] [stderr] Downloaded gimli v0.31.0 [INFO] [stderr] Downloaded syn v2.0.79 [INFO] [stderr] Downloaded js-sys v0.3.70 [INFO] [stderr] Downloaded pin-project v1.1.5 [INFO] [stderr] Downloaded miniz_oxide v0.8.0 [INFO] [stderr] Downloaded unicode-bidi v0.3.15 [INFO] [stderr] Downloaded object v0.36.4 [INFO] [stderr] Downloaded wasm-streams v0.4.1 [INFO] [stderr] Downloaded once_cell v1.20.1 [INFO] [stderr] Downloaded unicode-ident v1.0.13 [INFO] [stderr] Downloaded anyhow v1.0.89 [INFO] [stderr] Downloaded base64ct v1.6.0 [INFO] [stderr] Downloaded ciborium v0.2.2 [INFO] [stderr] Downloaded addr2line v0.24.1 [INFO] [stderr] Downloaded async-trait v0.1.83 [INFO] [stderr] Downloaded pin-project-internal v1.1.5 [INFO] [stderr] Downloaded web-sys v0.3.70 [INFO] [stderr] Downloaded serde-wasm-bindgen v0.6.5 [INFO] [stderr] Downloaded serde-wasm-bindgen v0.5.0 [INFO] [stderr] Downloaded regex-automata v0.4.8 [INFO] [stderr] Downloaded libc v0.2.159 [INFO] [stderr] Downloaded tokio v1.40.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 0bac2e8bd2b8b9af65e6a259b7fdadf0655e4acaf0c7f6bdfc6fa512ad4918bb [INFO] running `Command { std: "docker" "start" "-a" "0bac2e8bd2b8b9af65e6a259b7fdadf0655e4acaf0c7f6bdfc6fa512ad4918bb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0bac2e8bd2b8b9af65e6a259b7fdadf0655e4acaf0c7f6bdfc6fa512ad4918bb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0bac2e8bd2b8b9af65e6a259b7fdadf0655e4acaf0c7f6bdfc6fa512ad4918bb", kill_on_drop: false }` [INFO] [stdout] 0bac2e8bd2b8b9af65e6a259b7fdadf0655e4acaf0c7f6bdfc6fa512ad4918bb [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 42df1e626a8166d7aa46357ea194aa3b213857ee37bc89568fad629366ae063c [INFO] running `Command { std: "docker" "start" "-a" "42df1e626a8166d7aa46357ea194aa3b213857ee37bc89568fad629366ae063c", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.86 [INFO] [stderr] Compiling unicode-ident v1.0.13 [INFO] [stderr] Compiling wasm-bindgen-shared v0.2.93 [INFO] [stderr] Compiling log v0.4.22 [INFO] [stderr] Compiling once_cell v1.20.1 [INFO] [stderr] Compiling bumpalo v3.16.0 [INFO] [stderr] Compiling wasm-bindgen v0.2.93 [INFO] [stderr] Compiling serde v1.0.210 [INFO] [stderr] Checking memchr v2.7.4 [INFO] [stderr] Compiling libc v0.2.159 [INFO] [stderr] Checking itoa v1.0.11 [INFO] [stderr] Checking subtle v2.6.1 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Checking ryu v1.0.18 [INFO] [stderr] Compiling serde_json v1.0.128 [INFO] [stderr] Checking tinyvec v1.8.0 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Compiling thiserror v1.0.64 [INFO] [stderr] Checking pin-project-lite v0.2.14 [INFO] [stderr] Checking futures-core v0.3.30 [INFO] [stderr] Checking percent-encoding v2.3.1 [INFO] [stderr] Checking form_urlencoded v1.2.1 [INFO] [stderr] Checking half v2.4.1 [INFO] [stderr] Checking futures-sink v0.3.30 [INFO] [stderr] Checking bytes v1.7.2 [INFO] [stderr] Checking unicode-bidi v0.3.15 [INFO] [stderr] Compiling anyhow v1.0.89 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Checking futures-task v0.3.30 [INFO] [stderr] Checking iana-time-zone v0.1.61 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Checking futures-io v0.3.30 [INFO] [stderr] Checking cpufeatures v0.2.14 [INFO] [stderr] Checking unicode-normalization v0.1.24 [INFO] [stderr] Compiling syn v2.0.79 [INFO] [stderr] Checking base64ct v1.6.0 [INFO] [stderr] Checking ciborium-io v0.2.2 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking ciborium-ll v0.2.2 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking http v1.1.0 [INFO] [stderr] Checking chrono v0.4.38 [INFO] [stderr] Checking regex-syntax v0.8.5 [INFO] [stderr] Checking password-hash v0.5.0 [INFO] [stderr] Checking sha2 v0.10.8 [INFO] [stderr] Checking idna v0.5.0 [INFO] [stderr] Checking blake2 v0.10.6 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Checking futures-channel v0.3.30 [INFO] [stderr] Checking tokio v1.40.0 [INFO] [stderr] Checking url v2.5.2 [INFO] [stderr] Checking matchit v0.7.3 [INFO] [stderr] Checking smallvec v1.13.2 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking argon2 v0.5.3 [INFO] [stderr] Checking base64 v0.22.1 [INFO] [stderr] Checking regex-automata v0.4.8 [INFO] [stderr] Checking regex v1.11.0 [INFO] [stderr] Compiling wasm-bindgen-backend v0.2.93 [INFO] [stderr] Compiling serde_derive v1.0.210 [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Compiling futures-macro v0.3.30 [INFO] [stderr] Compiling thiserror-impl v1.0.64 [INFO] [stderr] Compiling async-trait v0.1.83 [INFO] [stderr] Compiling pin-project-internal v1.1.5 [INFO] [stderr] Compiling zeroize_derive v1.4.2 [INFO] [stderr] Checking zeroize v1.8.1 [INFO] [stderr] Compiling wasm-bindgen-macro-support v0.2.93 [INFO] [stderr] Checking futures-util v0.3.30 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Checking pin-project v1.1.5 [INFO] [stderr] Checking ppv-lite86 v0.2.20 [INFO] [stderr] Compiling wasm-bindgen-macro v0.2.93 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking js-sys v0.3.70 [INFO] [stderr] Checking console_error_panic_hook v0.1.7 [INFO] [stderr] Checking wasm-bindgen-futures v0.4.43 [INFO] [stderr] Checking web-sys v0.3.70 [INFO] [stderr] Checking serde-wasm-bindgen v0.5.0 [INFO] [stderr] Checking ciborium v0.2.2 [INFO] [stderr] Checking serde-wasm-bindgen v0.6.5 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking worker-kv v0.7.0 [INFO] [stderr] Checking jwt-compact v0.9.0-beta.1 [INFO] [stderr] Compiling worker-sys v0.4.1 [INFO] [stderr] Checking wasm-streams v0.4.1 [INFO] [stderr] Compiling worker-macros v0.4.1 [INFO] [stderr] Checking worker v0.4.1 [INFO] [stderr] Checking worker-auth v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | #[event(fetch)] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `docsrs`, `feature`, and `test` and 31 more [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `event` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `event` may come from an old version of the `worker_macros` crate, try updating your dependency with `cargo update -p worker_macros` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the attribute macro `event` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `console_error` [INFO] [stdout] --> src/handlers/api/user.rs:4:14 [INFO] [stdout] | [INFO] [stdout] 4 | use worker::{console_error, console_log, Request, Response, RouteContext}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | #[event(fetch)] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `docsrs`, `feature`, and `test` and 31 more [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `event` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `event` may come from an old version of the `worker_macros` crate, try updating your dependency with `cargo update -p worker_macros` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the attribute macro `event` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `console_error` [INFO] [stdout] --> src/handlers/api/user.rs:4:14 [INFO] [stdout] | [INFO] [stdout] 4 | use worker::{console_error, console_log, Request, Response, RouteContext}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `is_deleted` is never read [INFO] [stdout] --> src/models/user.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 4 | pub(crate) struct User { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | pub is_deleted: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `User` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/handlers/api/user.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | / return match svc::api::user::register::register(user, ctx).await { [INFO] [stdout] 23 | | Ok(msg) => return_response::ok(Some(msg), None), [INFO] [stdout] 24 | | Err(e) => return_response::err(e.0, Some(format!("注册失败::{:?}", e.1)), None), [INFO] [stdout] 25 | | }; [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] 22 ~ match svc::api::user::register::register(user, ctx).await { [INFO] [stdout] 23 + Ok(msg) => return_response::ok(Some(msg), None), [INFO] [stdout] 24 ~ Err(e) => return_response::err(e.0, Some(format!("注册失败::{:?}", e.1)), None), [INFO] [stdout] 25 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/handlers/api/user.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | / return match svc::api::user::login::login(user, ctx).await{ [INFO] [stdout] 45 | | Ok(r) => return_response::ok(Some(r.0), r.1), [INFO] [stdout] 46 | | Err(e) => return_response::err(e.0, Some(format!("登录失败::{:?}", e.1)), None), [INFO] [stdout] 47 | | } [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] 44 ~ match svc::api::user::login::login(user, ctx).await{ [INFO] [stdout] 45 + Ok(r) => return_response::ok(Some(r.0), r.1), [INFO] [stdout] 46 ~ Err(e) => return_response::err(e.0, Some(format!("登录失败::{:?}", e.1)), None), [INFO] [stdout] 47 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/svc/api/user/register.rs:57:41 [INFO] [stdout] | [INFO] [stdout] 57 | if !utils::validate::validate_email(&*email) { [INFO] [stdout] | ^^^^^^^ help: try: `&email` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/svc/api/user/login.rs:53:8 [INFO] [stdout] | [INFO] [stdout] 53 | if !argon2.verify_password(password.as_ref(), &parsed_hash).is_ok(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `argon2.verify_password(password.as_ref(), &parsed_hash).is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/svc/api/user/login.rs:24:64 [INFO] [stdout] | [INFO] [stdout] 24 | Err(e) => return Err((StatusCode::InternalServerError, Error::from(e))) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: consider removing `Error::from()`: `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: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/svc/api/user/login.rs:41:55 [INFO] [stdout] | [INFO] [stdout] 41 | None => return Err((StatusCode::Unauthorized, Error::from(anyhow::anyhow!("用户不存在")))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Error::from()`: `anyhow::anyhow!("用户不存在")` [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: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/svc/api/user/login.rs:54:47 [INFO] [stdout] | [INFO] [stdout] 54 | return Err((StatusCode::Unauthorized, Error::from(anyhow::anyhow!("用户名/密码错误")))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Error::from()`: `anyhow::anyhow!("用户名/密码错误")` [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: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/svc/api/user/login.rs:60:58 [INFO] [stdout] | [INFO] [stdout] 60 | return Err((StatusCode::InternalServerError, Error::from(anyhow::anyhow!("用户id为空")))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Error::from()`: `anyhow::anyhow!("用户id为空")` [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: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/svc/api/user/login.rs:67:58 [INFO] [stdout] | [INFO] [stdout] 67 | return Err((StatusCode::InternalServerError, Error::from(anyhow::anyhow!("用户email为空")))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Error::from()`: `anyhow::anyhow!("用户email为空")` [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: unneeded `return` statement [INFO] [stdout] --> src/utils/return_response.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | / return match to_value(resp) { [INFO] [stdout] 8 | | Ok(json_value) => Response::from_json(&json_value), [INFO] [stdout] 9 | | Err(e) => { [INFO] [stdout] 10 | | Response::from_json(&json!({"code": 500, "message": format!("json解析错误: {}", e)})) [INFO] [stdout] 11 | | } [INFO] [stdout] 12 | | }; [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] 7 ~ match to_value(resp) { [INFO] [stdout] 8 + Ok(json_value) => Response::from_json(&json_value), [INFO] [stdout] 9 + Err(e) => { [INFO] [stdout] 10 ~ Response::from_json(&json!({"code": 500, "message": format!("json解析错误: {}", e)})) [INFO] [stdout] 11 + } [INFO] [stdout] 12 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/utils/validate.rs:15:46 [INFO] [stdout] | [INFO] [stdout] 15 | let has_digit = password.chars().any(|c| c.is_digit(10)); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `is_deleted` is never read [INFO] [stdout] --> src/models/user.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 4 | pub(crate) struct User { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | pub is_deleted: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `User` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/handlers/api/user.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | / return match svc::api::user::register::register(user, ctx).await { [INFO] [stdout] 23 | | Ok(msg) => return_response::ok(Some(msg), None), [INFO] [stdout] 24 | | Err(e) => return_response::err(e.0, Some(format!("注册失败::{:?}", e.1)), None), [INFO] [stdout] 25 | | }; [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] 22 ~ match svc::api::user::register::register(user, ctx).await { [INFO] [stdout] 23 + Ok(msg) => return_response::ok(Some(msg), None), [INFO] [stdout] 24 ~ Err(e) => return_response::err(e.0, Some(format!("注册失败::{:?}", e.1)), None), [INFO] [stdout] 25 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/handlers/api/user.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | / return match svc::api::user::login::login(user, ctx).await{ [INFO] [stdout] 45 | | Ok(r) => return_response::ok(Some(r.0), r.1), [INFO] [stdout] 46 | | Err(e) => return_response::err(e.0, Some(format!("登录失败::{:?}", e.1)), None), [INFO] [stdout] 47 | | } [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] 44 ~ match svc::api::user::login::login(user, ctx).await{ [INFO] [stdout] 45 + Ok(r) => return_response::ok(Some(r.0), r.1), [INFO] [stdout] 46 ~ Err(e) => return_response::err(e.0, Some(format!("登录失败::{:?}", e.1)), None), [INFO] [stdout] 47 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/svc/api/user/register.rs:57:41 [INFO] [stdout] | [INFO] [stdout] 57 | if !utils::validate::validate_email(&*email) { [INFO] [stdout] | ^^^^^^^ help: try: `&email` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/svc/api/user/login.rs:53:8 [INFO] [stdout] | [INFO] [stdout] 53 | if !argon2.verify_password(password.as_ref(), &parsed_hash).is_ok(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `argon2.verify_password(password.as_ref(), &parsed_hash).is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/svc/api/user/login.rs:24:64 [INFO] [stdout] | [INFO] [stdout] 24 | Err(e) => return Err((StatusCode::InternalServerError, Error::from(e))) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: consider removing `Error::from()`: `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: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/svc/api/user/login.rs:41:55 [INFO] [stdout] | [INFO] [stdout] 41 | None => return Err((StatusCode::Unauthorized, Error::from(anyhow::anyhow!("用户不存在")))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Error::from()`: `anyhow::anyhow!("用户不存在")` [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: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/svc/api/user/login.rs:54:47 [INFO] [stdout] | [INFO] [stdout] 54 | return Err((StatusCode::Unauthorized, Error::from(anyhow::anyhow!("用户名/密码错误")))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Error::from()`: `anyhow::anyhow!("用户名/密码错误")` [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: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/svc/api/user/login.rs:60:58 [INFO] [stdout] | [INFO] [stdout] 60 | return Err((StatusCode::InternalServerError, Error::from(anyhow::anyhow!("用户id为空")))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Error::from()`: `anyhow::anyhow!("用户id为空")` [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: useless conversion to the same type: `anyhow::Error` [INFO] [stdout] --> src/svc/api/user/login.rs:67:58 [INFO] [stdout] | [INFO] [stdout] 67 | return Err((StatusCode::InternalServerError, Error::from(anyhow::anyhow!("用户email为空")))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Error::from()`: `anyhow::anyhow!("用户email为空")` [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: unneeded `return` statement [INFO] [stdout] --> src/utils/return_response.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | / return match to_value(resp) { [INFO] [stdout] 8 | | Ok(json_value) => Response::from_json(&json_value), [INFO] [stdout] 9 | | Err(e) => { [INFO] [stdout] 10 | | Response::from_json(&json!({"code": 500, "message": format!("json解析错误: {}", e)})) [INFO] [stdout] 11 | | } [INFO] [stdout] 12 | | }; [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] 7 ~ match to_value(resp) { [INFO] [stdout] 8 + Ok(json_value) => Response::from_json(&json_value), [INFO] [stdout] 9 + Err(e) => { [INFO] [stdout] 10 ~ Response::from_json(&json!({"code": 500, "message": format!("json解析错误: {}", e)})) [INFO] [stdout] 11 + } [INFO] [stdout] 12 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/utils/validate.rs:15:46 [INFO] [stdout] | [INFO] [stdout] 15 | let has_digit = password.chars().any(|c| c.is_digit(10)); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 00s [INFO] running `Command { std: "docker" "inspect" "42df1e626a8166d7aa46357ea194aa3b213857ee37bc89568fad629366ae063c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "42df1e626a8166d7aa46357ea194aa3b213857ee37bc89568fad629366ae063c", kill_on_drop: false }` [INFO] [stdout] 42df1e626a8166d7aa46357ea194aa3b213857ee37bc89568fad629366ae063c