1use derive_more::derive::{Display, Error, From};
2
3use crate::status::Status;
4
5#[derive(Debug, Display, Error, From)]
7pub enum Error {
8 #[display("Redis client failed to connect or run a query")]
10 Client(redis::RedisError),
11
12 #[display("Redis pool error")]
13 Pool(deadpool_redis::PoolError),
14
15 #[display("Limit is exceeded for a key")]
17 #[from(ignore)]
18 LimitExceeded(#[error(not(source))] Status),
19
20 #[display("Time conversion failed")]
22 Time(time::error::ComponentRange),
23
24 #[display("Generic error")]
26 #[from(ignore)]
27 Other(#[error(not(source))] String),
28}
29
30#[cfg(test)]
31mod tests {
32 use super::*;
33
34 static_assertions::assert_impl_all! {
35 Error:
36 From<redis::RedisError>,
37 From<time::error::ComponentRange>,
38 }
39
40 static_assertions::assert_not_impl_any! {
41 Error:
42 From<String>,
43 From<Status>,
44 }
45}