1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
 * rust-kad
 * Kademlia error types
 *
 * https://github.com/ryankurte/rust-kad
 * Copyright 2018 Ryan Kurte
 */


use std::io::{Error as IoError, ErrorKind as IoErrorKind};

#[derive(PartialEq, Clone, Debug)]
pub enum Error {
    Unimplemented,
    InvalidResponse,
    Timeout,
    NotFound,
    Io(IoErrorKind),
    Cancelled,
    Connector,
}

impl From<IoError> for Error {
    fn from(e: IoError) -> Error {
        if e.kind() == IoErrorKind::TimedOut {
            Error::Timeout
        } else {
            Error::Io(e.kind())
        }
    }
}