2025-08-12 17:49:34 +08:00
|
|
|
#[derive(Debug, PartialEq)]
|
|
|
|
|
#[allow(dead_code)]
|
|
|
|
|
pub enum AppError {
|
|
|
|
|
NotNcmFile,
|
|
|
|
|
CannotReadFileName,
|
|
|
|
|
CannotReadMetaInfo,
|
|
|
|
|
CoverCannotSave,
|
|
|
|
|
FileReadError,
|
|
|
|
|
FileSkipError,
|
|
|
|
|
FileWriteError,
|
|
|
|
|
FullFilenameError,
|
|
|
|
|
FileNotFound,
|
|
|
|
|
ProtectFile,
|
|
|
|
|
FileDataError,
|
|
|
|
|
SaveError,
|
|
|
|
|
SystemTimeError,
|
2025-09-07 14:59:35 +08:00
|
|
|
CannotCreateDir,
|
2025-08-12 17:49:34 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl std::error::Error for AppError {}
|
|
|
|
|
|
|
|
|
|
impl std::fmt::Display for AppError {
|
|
|
|
|
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
|
|
|
|
let result = match self {
|
|
|
|
|
Self::NotNcmFile => "该文件不为NCM格式",
|
|
|
|
|
Self::CannotReadFileName => "无法读取文件名称",
|
|
|
|
|
Self::CannotReadMetaInfo => "无法读取歌曲元信息",
|
|
|
|
|
Self::CoverCannotSave => "封面无法保存",
|
|
|
|
|
Self::FileSkipError => "跳过数据时出错。可能是文件大小小于预期",
|
|
|
|
|
Self::FileReadError => "读取文件时发生错误",
|
|
|
|
|
Self::FileWriteError => "写入文件时错误",
|
|
|
|
|
Self::FullFilenameError => "文件名不符合规范",
|
|
|
|
|
Self::FileNotFound => "未找到文件",
|
|
|
|
|
Self::ProtectFile => "已关闭文件强制覆盖且文件已存在。使用-f或-forcesave开启强制覆盖。",
|
|
|
|
|
Self::FileDataError => "处理文件数据时出错",
|
|
|
|
|
Self::SaveError => "保存文件出错",
|
|
|
|
|
Self::SystemTimeError => "获取时间戳失败",
|
2025-09-07 14:59:35 +08:00
|
|
|
Self::CannotCreateDir => "无法创建父级目录", // _ => "未知错误",
|
2025-08-12 17:49:34 +08:00
|
|
|
};
|
|
|
|
|
write!(f, "{}", result)
|
|
|
|
|
}
|
2025-09-07 14:59:35 +08:00
|
|
|
}
|