mirror of
https://github.com/actix/actix-extras.git
synced 2024-11-27 17:22:57 +01:00
977e3141c9
* add license links to -limitation * move tests to inline mod * use cow str for limiter parameters * add docs to all limitation items * rename builder methods * fix ignored tests * update changelog * fix ci
43 lines
1022 B
Rust
43 lines
1022 B
Rust
use derive_more::{Display, Error, From};
|
|
|
|
use crate::status::Status;
|
|
|
|
/// Failure modes of the rate limiter.
|
|
#[derive(Debug, Display, Error, From)]
|
|
pub enum Error {
|
|
/// Redis client failed to connect or run a query.
|
|
#[display(fmt = "Redis client failed to connect or run a query")]
|
|
Client(redis::RedisError),
|
|
|
|
/// Limit is exceeded for a key.
|
|
#[display(fmt = "Limit is exceeded for a key")]
|
|
#[from(ignore)]
|
|
LimitExceeded(#[error(not(source))] Status),
|
|
|
|
/// Time conversion failed.
|
|
#[display(fmt = "Time conversion failed")]
|
|
Time(time::error::ComponentRange),
|
|
|
|
/// Generic error.
|
|
#[display(fmt = "Generic error")]
|
|
#[from(ignore)]
|
|
Other(#[error(not(source))] String),
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
static_assertions::assert_impl_all! {
|
|
Error:
|
|
From<redis::RedisError>,
|
|
From<time::error::ComponentRange>,
|
|
}
|
|
|
|
static_assertions::assert_not_impl_any! {
|
|
Error:
|
|
From<String>,
|
|
From<Status>,
|
|
}
|
|
}
|