Skip to main content

widgetkit_core/
error.rs

1use std::fmt;
2
3pub type Result<T> = std::result::Result<T, Error>;
4
5#[derive(Clone, Debug, PartialEq, Eq)]
6pub enum Error {
7    Message(String),
8    Platform(String),
9    Render(String),
10}
11
12impl Error {
13    pub fn message(message: impl Into<String>) -> Self {
14        Self::Message(message.into())
15    }
16
17    pub fn platform(message: impl Into<String>) -> Self {
18        Self::Platform(message.into())
19    }
20
21    pub fn render(message: impl Into<String>) -> Self {
22        Self::Render(message.into())
23    }
24}
25
26impl fmt::Display for Error {
27    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
28        match self {
29            Self::Message(message) => write!(f, "{message}"),
30            Self::Platform(message) => write!(f, "platform error: {message}"),
31            Self::Render(message) => write!(f, "render error: {message}"),
32        }
33    }
34}
35
36impl std::error::Error for Error {}
37
38impl From<&str> for Error {
39    fn from(value: &str) -> Self {
40        Self::message(value)
41    }
42}
43
44impl From<String> for Error {
45    fn from(value: String) -> Self {
46        Self::message(value)
47    }
48}