use thiserror::Error;
pub type CacheResult<T> = Result<T, CacheError>;
#[derive(Debug, Error)]
pub enum CacheError {
#[cfg(feature = "redis")]
#[error("Redis error: {0}")]
Redis(#[from] redis::RedisError),
#[cfg(feature = "memcached")]
#[error("Memcached error: {0}")]
Memcached(#[from] memcache::MemcacheError),
#[error("Serialization error: {0}")]
Serialization(String),
#[error("Deserialization error: {0}")]
Deserialization(String),
#[error("Key not found: {0}")]
NotFound(String),
#[error("Connection error: {0}")]
Connection(String),
#[error("Configuration error: {0}")]
Config(String),
#[error("Invalid URL: {0}")]
InvalidUrl(String),
#[error("Operation timeout")]
Timeout,
#[error("Cache error: {0}")]
Other(String),
}