retrom_plugin_installer/
error.rs1use 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}