use nmp_core::substrate::EventId;
use serde::{Deserialize, Serialize};
use crate::pointer::ThreadPointer;
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
pub enum TimelineBlock {
Standalone {
id: EventId,
#[serde(default, skip_serializing_if = "Option::is_none")]
root: Option<ThreadPointer>,
},
Module {
events: Vec<EventId>,
has_gap: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
root: Option<ThreadPointer>,
},
}
impl TimelineBlock {
#[must_use]
pub fn len(&self) -> usize {
match self {
Self::Standalone { .. } => 1,
Self::Module { events, .. } => events.len(),
}
}
#[must_use]
pub fn is_empty(&self) -> bool {
self.len() == 0
}
}