ferrous_opencc/
error.rs

1use thiserror::Error;
2
3/// `ferrous-opencc` 库的主错误类型。
4#[derive(Error, Debug)]
5pub enum OpenCCError {
6    /// I/O 错误
7    #[error("I/O error: {0}")]
8    Io(#[from] std::io::Error),
9
10    /// 解析 JSON 配置文件时的错误
11    #[error("JSON parsing error: {0}")]
12    Json(#[from] serde_json::Error),
13
14    /// 与 FST 库相关的错误
15    #[error("FST error: {0}")]
16    Fst(#[from] fst::Error),
17
18    /// Bincode 反序列化过程中的错误
19    #[error("Bincode decoding error: {0}")]
20    BincodeDecode(#[from] bincode::error::DecodeError),
21
22    /// Bincode 序列化过程中发生的错误
23    #[error("Bincode encoding error: {0}")]
24    BincodeEncode(#[from] bincode::error::EncodeError),
25
26    /// 无效的配置格式
27    #[error("Invalid configuration format: {0}")]
28    InvalidConfig(String),
29
30    /// 在嵌入式资源中找不到指定的配置或词典
31    #[error("Configuration or resource not found in embedded data: {0}")]
32    ConfigNotFound(String),
33
34    /// 找不到所需的文件
35    #[error("File not found: {0}")]
36    FileNotFound(String),
37
38    /// 不支持的词典类型
39    #[error("Unsupported dictionary type: {0}")]
40    UnsupportedDictType(String),
41
42    /// 从文本文件编译词典时发生错误
43    #[error("Dictionary compile failed")]
44    DictCompileError(#[from] anyhow::Error),
45}
46
47/// `ferrous-opencc` 操作的 `Result` 类型别名。
48pub type Result<T> = std::result::Result<T, OpenCCError>;