我有一个函数,当我想抛出错误时,它会返回用Result
包裹的 struct AppError
.
在下面,我试图抛出401(未授权)并显示"无效凭据"消息,但每次打开代码时,我都必须写.ok_or()
才能处理这个问题.
pub async fn refresh_uses_session(
State(app_state): State<AppState>,
cookie_jar: CookieJar,
) -> Result<Response, AppError> {
let refresh_token_cookie = cookie_jar
.get("refresh_token")
.ok_or((StatusCode::UNAUTHORIZED, "Invalid Credentials").into_app_error())?;
let cookie_expiration_time = refresh_token_cookie
.expires()
.ok_or((StatusCode::UNAUTHORIZED, "Invalid Credentials").into_app_error())?
.datetime()
.ok_or((StatusCode::UNAUTHORIZED, "Invalid Credentials").into_app_error())?;
if cookie_expiration_time <= OffsetDateTime::now_utc() {
return Err((StatusCode::UNAUTHORIZED, "Invalid Credentials").into_app_error());
}
//…
}
有没有办法在不更改返回类型或助手函数的情况下减少.ok_or()
次调用?