Skip to main content

wae_authentication/rate_limit/
error.rs

1//! 速率限制错误类型
2
3use std::fmt;
4use wae_types::WaeError;
5
6/// 速率限制错误
7#[derive(Debug)]
8pub enum RateLimitError {
9    /// 超出速率限制
10    RateLimitExceeded {
11        /// 剩余等待时间(秒)
12        retry_after: u64,
13    },
14}
15
16impl fmt::Display for RateLimitError {
17    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18        match self {
19            RateLimitError::RateLimitExceeded { retry_after } => {
20                write!(f, "请求过于频繁,请在 {} 秒后重试", retry_after)
21            }
22        }
23    }
24}
25
26impl std::error::Error for RateLimitError {}
27
28impl From<RateLimitError> for WaeError {
29    fn from(err: RateLimitError) -> Self {
30        match err {
31            RateLimitError::RateLimitExceeded { retry_after } => WaeError::rate_limit_exceeded(retry_after),
32        }
33    }
34}
35
36/// 速率限制结果类型
37pub type RateLimitResult<T> = Result<T, RateLimitError>;