1use std::{fmt, io};
2
3#[derive(Debug, PartialEq)]
5pub enum Error {
6 UnknownModule,
7 UnknownCategory,
8 BufferLength,
9 SequenceNumber,
10 DataLength,
11 RegisterCount,
12 ChannelParameter,
13 ChannelValue,
14 ModuleOffset,
15 Address,
16 Io(String), }
18
19#[rustfmt::skip]
20impl fmt::Display for Error {
21 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
22 match *self {
23 Error::UnknownModule => write!(f, "unknown module type"),
24 Error::UnknownCategory => write!(f, "unknown module category"),
25 Error::BufferLength => write!(f, "invalid buffer length"),
26 Error::SequenceNumber => write!(f, "invalid sequence number"),
27 Error::DataLength => write!(f, "invalid data length"),
28 Error::RegisterCount => write!(f, "invalid number of registers"),
29 Error::ChannelParameter => write!(f, "invalid channel paramater(s)"),
30 Error::ChannelValue => write!(f, "invalid channel value(s)"),
31 Error::ModuleOffset => write!(f, "invalid module offset"),
32 Error::Address => write!(f, "invalid module address"),
33 Error::Io(ref err) => write!(f, "I/O error: {}", err),
34 }
35 }
36}
37
38#[rustfmt::skip]
39impl ::std::error::Error for Error {
40 fn description(&self) -> &str {
41 match *self {
42 Error::UnknownModule => "unknown module type",
43 Error::UnknownCategory => "unknown module category",
44 Error::BufferLength => "invalid buffer length",
45 Error::SequenceNumber => "invalid sequence number",
46 Error::DataLength => "invalid data length",
47 Error::RegisterCount => "invalid number of registers",
48 Error::ChannelParameter => "invalid channel paramater(s)",
49 Error::ChannelValue => "invalid channel value(s)",
50 Error::ModuleOffset => "invalid module offset",
51 Error::Address => "invalid module address",
52 Error::Io(ref err) => err
53 }
54 }
55}
56
57impl From<io::Error> for Error {
58 fn from(e: io::Error) -> Self {
59 Error::Io(format!("{}", e))
60 }
61}