adb_rs/
result.rs

1use failure_derive::Fail;
2
3#[derive(Debug, Fail)]
4pub enum AdbError {
5  #[fail(display = "io error: {}", _0)]
6  Io(#[cause] ::std::io::Error),
7
8  #[fail(display = "data crc mismatch")]
9  Crc,
10
11  #[fail(display = "auth not supported")]
12  AuthNotSupported,
13
14  #[fail(display = "unknown command: {:x}", _0)]
15  UnknownCommand(u32),
16
17  #[fail(display = "unexpected command: {:?}", _0)]
18  UnexpectedCommand(crate::message::Command),
19
20  #[fail(display = "unexpected data: {:?}", _0)]
21  UnexpectedData(Vec<u8>),
22
23  #[fail(display = "disconnected")]
24  Disconnected,
25
26  #[fail(display = "fail: {}", _0)]
27  Fail(String),
28}
29
30impl AdbError {
31  pub fn from_unexpected_command_u32(cmd: u32) -> Self {
32    use crate::message::Command;
33    use num_traits::FromPrimitive;
34    if let Some(cmd) = Command::from_u32(cmd) {
35      AdbError::UnexpectedCommand(cmd)
36    } else {
37      AdbError::UnknownCommand(cmd)
38    }
39  }
40}
41
42pub type AdbResult<T> = Result<T, AdbError>;
43
44impl From<::std::io::Error> for AdbError {
45  fn from(err: ::std::io::Error) -> AdbError {
46    AdbError::Io(err)
47  }
48}