use serde::Serialize;
use crate::domain::changeset::Changeset;
use crate::domain::conflict::ConflictReport;
#[derive(Debug, Clone, Serialize)]
#[serde(tag = "status", rename_all = "snake_case")]
pub enum DiffResult {
Clean(Changeset),
Conflicted {
changeset: Changeset,
conflicts: Vec<ConflictReport>,
},
}
impl DiffResult {
pub fn changeset(&self) -> &Changeset {
match self {
DiffResult::Clean(cs) => cs,
DiffResult::Conflicted { changeset, .. } => changeset,
}
}
pub fn is_clean(&self) -> bool {
matches!(self, DiffResult::Clean(_))
}
pub fn conflicts(&self) -> &[ConflictReport] {
match self {
DiffResult::Clean(_) => &[],
DiffResult::Conflicted { conflicts, .. } => conflicts,
}
}
}