Skip to main content

tauri_plugin_stt/
error.rs

1use serde::{ser::Serializer, Serialize};
2#[cfg(mobile)]
3use tauri::plugin::mobile::PluginInvokeError;
4
5pub type Result<T> = std::result::Result<T, Error>;
6
7#[derive(Debug, thiserror::Error)]
8pub enum Error {
9    #[error(transparent)]
10    Io(#[from] std::io::Error),
11
12    #[cfg(mobile)]
13    #[error(transparent)]
14    PluginInvoke(#[from] PluginInvokeError),
15
16    #[error("STT not available: {0}")]
17    NotAvailable(String),
18
19    #[error("No Whisper model installed: {0}")]
20    ModelNotInstalled(String),
21
22    #[error("Unknown Whisper model: {0}")]
23    UnknownModel(String),
24
25    #[error("Insufficient memory: {0}")]
26    InsufficientMemory(String),
27
28    #[error("Permission denied: {0}")]
29    PermissionDenied(String),
30
31    #[error("Recognition failed: {0}")]
32    RecognitionFailed(String),
33
34    #[error("Recording error: {0}")]
35    Recording(String),
36
37    #[error("Configuration error: {0}")]
38    ConfigError(String),
39}
40
41impl Serialize for Error {
42    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
43    where
44        S: Serializer,
45    {
46        serializer.serialize_str(self.to_string().as_ref())
47    }
48}