use crate::JsonPathStack;
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct ChangePath {
pub old: JsonPathStack,
pub new: JsonPathStack,
pub comparison: ChangeComparison,
}
#[derive(Debug)]
pub struct Change {
pub paths: Vec<ChangePath>,
pub changes: Vec<ChangeInfo>,
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct ChangeInfo {
pub old_subpath: String,
pub new_subpath: String,
pub message: String,
pub class: ChangeClass,
pub details: ChangeDetails,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum ChangeComparison {
Input,
Output,
Structural,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum ChangeClass {
BackwardIncompatible,
ForwardIncompatible,
Incompatible,
Trivial,
Unhandled,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum ChangeDetails {
Metadata,
Added,
Removed,
AddedRequired,
MoreStrict,
LessStrict,
Datatype,
UnknownDifference,
}