bone_persistence/
error.rs1use thiserror::Error;
2
3#[derive(Error, Debug)]
5pub enum PersistenceError {
6 #[error("初始化错误: {message}")]
7 InitError { message: String },
8
9 #[error("数据未找到: {message}")]
10 NotFound { message: String },
11
12 #[error("合并错误: {message}")]
13 MergeError { message: String },
14
15 #[error("后端({backend_type})错误: {error}")]
16 BackendError { backend_type: String, error: String },
17
18 #[error("通用错误: {0}")]
19 Generic(#[from] anyhow::Error),
20}
21
22pub type Result<T> = std::result::Result<T, PersistenceError>;
24
25impl From<std::io::Error> for PersistenceError {
26 fn from(err: std::io::Error) -> Self {
27 PersistenceError::Generic(anyhow::Error::from(err))
28 }
29}
30
31impl From<sqlx::Error> for PersistenceError {
32 fn from(err: sqlx::Error) -> Self {
33 PersistenceError::Generic(anyhow::Error::from(err))
34 }
35}
36
37impl From<serde_json::Error> for PersistenceError {
38 fn from(err: serde_json::Error) -> Self {
39 PersistenceError::Generic(anyhow::Error::from(err))
40 }
41}