1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
use failure::Fail;

#[derive(Debug, Fail)]
pub enum Error {
    #[fail(display = "IO Error")]
    Io(#[fail(cause)] std::io::Error),
    #[fail(display = "Null pointer when dealing with ffi")]
    Ffi(#[fail(cause)] std::ffi::NulError),
    #[fail(display = "Utf8 conversion error")]
    Utf8(#[fail(cause)] std::str::Utf8Error),
    #[fail(display = "Error during bincode")]
    Bincode(#[fail(cause)] bincode::Error),
    #[fail(display = "Error receiving")]
    Recv(#[fail(cause)] crossbeam_channel::RecvError),
}

unsafe impl Sync for Error {}
unsafe impl Send for Error {}