1use std::path::PathBuf;
4use thiserror::Error;
5
6pub type Result<T> = std::result::Result<T, AppError>;
8
9#[derive(Debug, Error)]
11pub enum AppError {
12 #[error("未找到 ffmpeg,请安装并加入 PATH,或通过 --ffmpeg 指定路径")]
14 FfmpegNotFound,
15
16 #[error("ffmpeg 执行失败 (退出码 {code:?}): {stderr}")]
18 FfmpegFailed {
19 code: Option<i32>,
21 stderr: String,
23 },
24
25 #[error("IO 错误: {0}")]
27 Io(#[from] std::io::Error),
28
29 #[error("Whisper 错误: {0}")]
31 Whisper(#[from] whisper_rs::WhisperError),
32
33 #[error("音频读取错误: {0}")]
35 Audio(String),
36
37 #[error("路径无效: {0}")]
39 InvalidPath(PathBuf),
40
41 #[error("{0}")]
43 Other(String),
44}