retrom_plugin_installer/
error.rs

1use std::num::ParseIntError;
2
3use reqwest::header::ToStrError;
4use serde::{ser::Serializer, Serialize};
5
6pub type Result<T> = std::result::Result<T, Error>;
7
8#[derive(Debug, thiserror::Error)]
9pub enum Error {
10    #[error(transparent)]
11    Io(#[from] std::io::Error),
12    #[error(transparent)]
13    Tauri(#[from] tauri::Error),
14    #[error(transparent)]
15    Reqwest(#[from] reqwest::Error),
16    #[error(transparent)]
17    ToStr(#[from] ToStrError),
18    #[error(transparent)]
19    ParseInt(#[from] ParseIntError),
20    #[error(transparent)]
21    Tonic(#[from] tonic::Status),
22    #[error("No third party data found")]
23    ThirdPartyNotFound,
24    #[error(transparent)]
25    SteamError(#[from] retrom_plugin_steam::Error),
26    #[error(transparent)]
27    OpenPathError(#[from] tauri_plugin_opener::Error),
28    #[error(transparent)]
29    ConfigError(#[from] retrom_plugin_config::Error),
30    #[error("Cannot migrate installation directory: {0}")]
31    MigrationError(String),
32    #[error("Internal Error: {0}")]
33    InternalError(String),
34    #[error(transparent)]
35    DecodeError(#[from] prost::DecodeError),
36}
37
38impl Serialize for Error {
39    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
40    where
41        S: Serializer,
42    {
43        serializer.serialize_str(self.to_string().as_ref())
44    }
45}