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
use core::{fmt, str};
pub enum ErrorKind {
StaticAbsent,
DynamicAbsent,
StaticSyntax,
TypeError,
StaticData,
StaticUndefined,
StaticNamespace,
StaticBadFunction,
MixedTypes,
NotNodes,
ContextNotNode,
NotImplemented,
Unknown,
}
impl ErrorKind {
pub fn to_string(&self) -> &'static str {
match *self {
ErrorKind::StaticAbsent => "a component of the static context is absent",
ErrorKind::DynamicAbsent => "a component of the dynamic context is absent",
ErrorKind::StaticSyntax => "syntax error",
ErrorKind::TypeError => "type error",
ErrorKind::StaticData => "wrong static type",
ErrorKind::StaticUndefined => "undefined name",
ErrorKind::StaticNamespace => "namespace axis not supported",
ErrorKind::StaticBadFunction => "function call name and arity do not match",
ErrorKind::MixedTypes => "result of path operator contains both nodes and non-nodes",
ErrorKind::NotNodes => "path expression is not a sequence of nodes",
ErrorKind::ContextNotNode => "context item is not a node for an axis step",
ErrorKind::NotImplemented => "not implemented",
ErrorKind::Unknown => "unknown",
}
}
}
pub struct Error {
pub kind: ErrorKind,
pub message: String,
}
impl fmt::Debug for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str(&self.message)
}
}