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
mod header;
mod parser;
mod section;
mod sub_section;
mod to_string;
pub use header::Header;
pub use parser::parse;
pub use section::Section;
pub use sub_section::{SubSection, SubSections};
pub use to_string::to_string;
#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error("{doc_id}:{line_number} -> {message}")]
ParseError {
message: String,
doc_id: String,
line_number: usize,
},
#[error("key not found: {key}, line number: {line_number}, doc: {doc_id}")]
NotFound {
doc_id: String,
line_number: usize,
key: String,
},
#[error("got more than one sub-sections: {key}, line number: {line_number}, doc: {doc_id}")]
MoreThanOneSubSections {
key: String,
doc_id: String,
line_number: usize,
},
#[error("serde error: {source}")]
Serde {
#[from]
source: serde_json::Error,
},
#[error("{source}")]
Failure {
#[from]
source: failure::Compat<failure::Error>,
},
}
pub type Result<T> = std::result::Result<T, Error>;