marser_trace_schema/
version.rs1pub const SCHEMA_VERSION: u32 = 3;
7
8pub const SUPPORTED_TRACE_VERSION_MIN: u32 = 2;
10
11pub const SUPPORTED_TRACE_VERSION_MAX: u32 = 3;
13
14#[derive(Clone, Debug, PartialEq, Eq)]
15pub struct UnsupportedTraceVersion {
16 pub found: u32,
17 pub min: u32,
18 pub max: u32,
19}
20
21impl std::fmt::Display for UnsupportedTraceVersion {
22 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
23 write!(
24 f,
25 "unsupported trace_version {} (supported {}..={})",
26 self.found, self.min, self.max
27 )
28 }
29}
30
31impl std::error::Error for UnsupportedTraceVersion {}
32
33pub fn check_trace_version(version: Option<u32>) -> Result<(), UnsupportedTraceVersion> {
37 let v = version.unwrap_or(SCHEMA_VERSION);
38 if !(SUPPORTED_TRACE_VERSION_MIN..=SUPPORTED_TRACE_VERSION_MAX).contains(&v) {
39 return Err(UnsupportedTraceVersion {
40 found: v,
41 min: SUPPORTED_TRACE_VERSION_MIN,
42 max: SUPPORTED_TRACE_VERSION_MAX,
43 });
44 }
45 Ok(())
46}