Files
BlueArchiveToolkit/crates/bat-cas-engine/src/error.rs
T

50 lines
1.1 KiB
Rust

//! CAS Engine 错误类型定义
use thiserror::Error;
/// CAS Engine 错误类型
#[derive(Error, Debug)]
pub enum CasError {
/// IO 错误
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
/// Hash 不匹配
#[error("Hash mismatch: expected {expected}, got {actual}")]
HashMismatch {
/// 期望的 Hash
expected: String,
/// 实际的 Hash
actual: String,
},
/// 对象不存在
#[error("Object not found: {0}")]
ObjectNotFound(String),
/// Hash 格式无效
#[error("Invalid hash: {0}")]
InvalidHash(String),
/// 引用计数下溢
#[error("Reference count is already zero: {0}")]
ReferenceUnderflow(String),
/// 数据库错误
#[error("Database error: {0}")]
Database(String),
/// 其他错误
#[error(transparent)]
Other(#[from] anyhow::Error),
}
/// CAS Engine Result 类型
pub type Result<T> = std::result::Result<T, CasError>;
impl From<sqlx::Error> for CasError {
fn from(error: sqlx::Error) -> Self {
Self::Database(error.to_string())
}
}