From 1ac48526ca59ff9a172481c546da75fcefb99b05 Mon Sep 17 00:00:00 2001 From: matresnan <1358168412@qq.com> Date: Tue, 19 Aug 2025 19:05:33 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=BC=95=E5=85=A5Token=E7=BB=93=E6=9E=84=E4=BD=93?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重构代码以引入 Token 结构体并实现 Deref trait,同时优化相关数据结构的定义和位置。 --- src/main.rs | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/main.rs b/src/main.rs index d57c153..93a6bbe 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,7 +6,7 @@ use axum::{ }; use chrono::{prelude::*, Duration, ParseError}; use serde::{Deserialize, Serialize}; -use std::{env, sync::Arc}; +use std::{env, ops::Deref, sync::Arc}; use welds::prelude::*; mod db; @@ -259,21 +259,39 @@ fn add_day(t: &str, days: i64) -> Result { Ok(new_time.format("%Y-%m-%d %H:%M:%S").to_string()) } -#[derive(Deserialize)] -struct CreateToken { - project: String, - device_id: String, -} - #[derive(Clone)] struct AppState { db: Arc, generator: Arc, } +#[derive(Deserialize)] +struct CreateToken { + project: String, + device_id: String, +} + +#[derive(Deserialize, Debug, Clone)] +struct Token(String); + +// 让 Token 可以像 &str 一样使用 +impl Deref for Token { + type Target = str; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + #[derive(Deserialize)] struct VerifyToken { - token: String, + token: Token, +} + +#[derive(Deserialize)] +struct RenewalToken { + token: Token, + days: i64, } #[derive(Serialize)] @@ -314,9 +332,3 @@ struct CreateTokenInfo { token: String, msg: String, } - -#[derive(Deserialize)] -struct RenewalToken { - token: String, - days: i64, -}