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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
use std::num;
use std::io;
use std::net::AddrParseError;
use super::lexer_error;
use serialize::txt::Token;
error_chain! {
types {
Error, ErrorKind, ChainErr, Result;
}
links {
::trust_dns_proto::error::ProtoError, ::trust_dns_proto::error::ProtoErrorKind, Proto;
lexer_error::Error, lexer_error::ErrorKind, Lexer;
}
foreign_links {
::data_encoding::DecodeError, DataEncoding, "data encoding error";
io::Error, Io, "io error";
num::ParseIntError, ParseInt, "parse int error";
AddrParseError, AddrParse, "address parse error";
}
errors {
Message(msg: &'static str) {
description(msg)
display("{}", msg)
}
UnexpectedToken(token: Token) {
description("unrecognized token in stream")
display("unrecognized token in stream: {:?}", token)
}
MissingToken(string: String) {
description("token is missing")
display("token is missing: {}", string)
}
CharToIntError(ch: char) {
description("invalid numerical character")
display("invalid numerical character: {}", ch)
}
ParseTimeError(string: String) {
description("invalid time string")
display("invalid time string: {}", string)
}
}
}
impl From<Error> for io::Error {
fn from(e: Error) -> Self {
io::Error::new(io::ErrorKind::Other, format!("DNS ParseError: {}", e))
}
}