whisper_cpp_plus/
error.rs1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum WhisperError {
5 #[error("Failed to load model: {0}")]
6 ModelLoadError(String),
7
8 #[error("Invalid audio format: expected 16kHz mono f32")]
9 InvalidAudioFormat,
10
11 #[error("Transcription failed: {0}")]
12 TranscriptionError(String),
13
14 #[error("Invalid context")]
15 InvalidContext,
16
17 #[error("Out of memory")]
18 OutOfMemory,
19
20 #[error("Invalid parameter: {0}")]
21 InvalidParameter(String),
22
23 #[error("FFI error: code {code}")]
24 CppError { code: i32 },
25
26 #[error("Invalid UTF-8 string from C")]
27 InvalidUtf8,
28
29 #[error("Null pointer error")]
30 NullPointer,
31}
32
33pub type Result<T> = std::result::Result<T, WhisperError>;
34
35impl From<std::ffi::NulError> for WhisperError {
36 fn from(_: std::ffi::NulError) -> Self {
37 WhisperError::InvalidParameter("String contains null byte".to_string())
38 }
39}
40
41impl From<std::str::Utf8Error> for WhisperError {
42 fn from(_: std::str::Utf8Error) -> Self {
43 WhisperError::InvalidUtf8
44 }
45}