68 lines
2.5 KiB
Rust
68 lines
2.5 KiB
Rust
|
use core::fmt;
|
||
|
use std::fmt::Display;
|
||
|
|
||
|
use serde::{Deserialize, Serialize};
|
||
|
|
||
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||
|
pub enum ErrorCode {
|
||
|
MpvError(String),
|
||
|
JsonParseError(String),
|
||
|
ConnectError(String),
|
||
|
JsonContainsUnexptectedType,
|
||
|
UnexpectedResult,
|
||
|
UnexpectedValue,
|
||
|
MissingValue,
|
||
|
UnsupportedType,
|
||
|
ValueDoesNotContainBool,
|
||
|
ValueDoesNotContainF64,
|
||
|
ValueDoesNotContainHashMap,
|
||
|
ValueDoesNotContainPlaylist,
|
||
|
ValueDoesNotContainString,
|
||
|
ValueDoesNotContainUsize,
|
||
|
}
|
||
|
|
||
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||
|
pub struct Error(pub ErrorCode);
|
||
|
|
||
|
impl Display for Error {
|
||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||
|
Display::fmt(&self.0, f)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl std::error::Error for Error {}
|
||
|
|
||
|
impl Display for ErrorCode {
|
||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||
|
match *self {
|
||
|
ErrorCode::ConnectError(ref msg) => f.write_str(&format!("ConnectError: {}", msg)),
|
||
|
ErrorCode::JsonParseError(ref msg) => f.write_str(&format!("JsonParseError: {}", msg)),
|
||
|
ErrorCode::MpvError(ref msg) => f.write_str(&format!("MpvError: {}", msg)),
|
||
|
ErrorCode::JsonContainsUnexptectedType => {
|
||
|
f.write_str("Mpv sent a value with an unexpected type")
|
||
|
}
|
||
|
ErrorCode::UnexpectedResult => f.write_str("Unexpected result received"),
|
||
|
ErrorCode::UnexpectedValue => f.write_str("Unexpected value received"),
|
||
|
ErrorCode::MissingValue => f.write_str("Missing value"),
|
||
|
ErrorCode::UnsupportedType => f.write_str("Unsupported type received"),
|
||
|
ErrorCode::ValueDoesNotContainBool => {
|
||
|
f.write_str("The received value is not of type \'std::bool\'")
|
||
|
}
|
||
|
ErrorCode::ValueDoesNotContainF64 => {
|
||
|
f.write_str("The received value is not of type \'std::f64\'")
|
||
|
}
|
||
|
ErrorCode::ValueDoesNotContainHashMap => {
|
||
|
f.write_str("The received value is not of type \'std::collections::HashMap\'")
|
||
|
}
|
||
|
ErrorCode::ValueDoesNotContainPlaylist => {
|
||
|
f.write_str("The received value is not of type \'mpvipc::Playlist\'")
|
||
|
}
|
||
|
ErrorCode::ValueDoesNotContainString => {
|
||
|
f.write_str("The received value is not of type \'std::string::String\'")
|
||
|
}
|
||
|
ErrorCode::ValueDoesNotContainUsize => {
|
||
|
f.write_str("The received value is not of type \'std::usize\'")
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|