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}