changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > demo / obj/src/err.rs

changeset 1: e4f8df713d55
author: ellis <ellis@rwest.io>
date: Sun, 30 Apr 2023 22:24:18 -0400
permissions: -rw-r--r--
description: scaffolding from lives past
1 //! obj errors
2 use std::{fmt, io};
3 
4 /// obj Result wrapper
5 pub type Result<T> = std::result::Result<T, Error>;
6 
7 /// obj Error type
8 #[derive(Debug)]
9 pub enum Error {
10  Message(String),
11  Ron(ron::error::Error),
12  Json(serde_json::error::Error),
13  Io(io::Error),
14  Bincode(bincode::Error),
15  Utf8(std::string::FromUtf8Error),
16  Parse(std::string::ParseError),
17 }
18 
19 impl serde::ser::Error for Error {
20  fn custom<T: fmt::Display>(msg: T) -> Self {
21  Error::Message(msg.to_string())
22  }
23 }
24 
25 impl serde::de::Error for Error {
26  fn custom<T: fmt::Display>(msg: T) -> Self {
27  Error::Message(msg.to_string())
28  }
29 }
30 
31 impl fmt::Display for Error {
32  fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
33  match self {
34  Error::Message(msg) => f.write_str(msg),
35  Error::Io(ref err) => write!(f, "obj IO error: {}", err),
36  Error::Ron(ref err) => write!(f, "obj Ron error: {}", err),
37  Error::Json(ref err) => write!(f, "obj Json error: {}", err),
38  Error::Bincode(ref err) => write!(f, "obj Bincode error: {}", err),
39  Error::Utf8(ref err) => write!(f, "obj Utf8 error: {}", err),
40  Error::Parse(ref err) => write!(f, "obj Parse error: {}", err),
41  }
42  }
43 }
44 
45 impl From<io::Error> for Error {
46  fn from(e: io::Error) -> Self {
47  Error::Io(e)
48  }
49 }
50 
51 impl From<std::string::ParseError> for Error {
52  fn from(e: std::string::ParseError) -> Self {
53  Error::Parse(e)
54  }
55 }
56 
57 impl From<std::string::FromUtf8Error> for Error {
58  fn from(err: std::string::FromUtf8Error) -> Self {
59  Error::Utf8(err)
60  }
61 }
62 
63 impl From<ron::Error> for Error {
64  fn from(e: ron::Error) -> Self {
65  Error::Ron(e)
66  }
67 }
68 
69 impl From<serde_json::Error> for Error {
70  fn from(e: serde_json::Error) -> Self {
71  Error::Json(e)
72  }
73 }
74 
75 impl From<bincode::Error> for Error {
76  fn from(e: bincode::Error) -> Self {
77  Error::Bincode(e)
78  }
79 }
80 
81 impl std::error::Error for Error {}