peepmatic_runtime/
error.rs

1//! `Error` and `Result` types for this crate.
2
3use std::io;
4use thiserror::Error;
5
6/// A result type containing `Ok(T)` or `Err(peepmatic_runtime::Error)`.
7pub type Result<T> = std::result::Result<T, Error>;
8
9/// Errors that `peepmatic_runtime` may generate.
10#[derive(Debug, Error)]
11#[error(transparent)]
12pub struct Error {
13    #[from]
14    inner: Box<ErrorInner>,
15}
16
17#[derive(Debug, Error)]
18enum ErrorInner {
19    #[error(transparent)]
20    Io(#[from] io::Error),
21
22    #[error(transparent)]
23    Bincode(#[from] bincode::Error),
24}
25
26impl From<io::Error> for Error {
27    fn from(e: io::Error) -> Error {
28        let e: ErrorInner = e.into();
29        e.into()
30    }
31}
32
33impl From<bincode::Error> for Error {
34    fn from(e: bincode::Error) -> Error {
35        let e: ErrorInner = e.into();
36        e.into()
37    }
38}
39
40impl From<ErrorInner> for Error {
41    fn from(e: ErrorInner) -> Error {
42        Box::new(e).into()
43    }
44}