use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct Span {
pub start: u32,
pub end: u32,
}
impl Span {
#[must_use]
pub fn new(start: usize, end: usize) -> Self {
Self {
start: u32::try_from(start).expect("span start exceeds u32"),
end: u32::try_from(end).expect("span end exceeds u32"),
}
}
#[must_use]
pub const fn len(self) -> u32 {
self.end - self.start
}
#[must_use]
pub const fn is_empty(self) -> bool {
self.start == self.end
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(transparent)]
pub struct NodeId(pub u32);