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("File not found: {0}")]
32    FileNotFound(String),
33
34    /// 不支持的词典类型
35    #[error("Unsupported dictionary type: {0}")]
36    UnsupportedDictType(String),
37
38    /// 从文本文件编译词典时发生错误
39    #[error("Dictionary compile failed")]
40    DictCompileError(#[from] anyhow::Error),
41}
42
43/// `ferrous-opencc` 操作的 `Result` 类型别名。
44pub type Result<T> = std::result::Result<T, OpenCCError>;