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
use crate::core::types::{Header, StackTrace};
use std::io::prelude::*;
use std::io::BufReader;
use super::*;
pub(crate) struct Data {
#[allow(dead_code)]
pub header: Header,
pub traces: Vec<StackTrace>,
}
impl Storage for Data {
fn from_reader<R: Read>(r: R) -> Result<Data, Error> {
let reader = BufReader::new(r);
let mut result = Vec::new();
let mut lines = reader.lines();
let header_line = lines.next().unwrap().unwrap();
for line in lines {
let trace: StackTrace = serde_json::from_str(&line?)?;
result.push(trace);
}
Ok(Data {
header: serde_json::from_str(&header_line)?,
traces: result,
})
}
fn version() -> Version {
Version(2)
}
}