online-dsl-forge 0.3.0

A bounded parser and runtime for in-memory DSL expressions.
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Copy, Default, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct SourceSpan {
  pub start: usize,
  pub end: usize,
}

impl SourceSpan {
  pub fn new(start: usize, end: usize) -> Self {
    Self { start, end }
  }

  pub fn join(self, other: Self) -> Self {
    Self {
      start: self.start.min(other.start),
      end: self.end.max(other.end),
    }
  }

  pub fn is_empty(self) -> bool {
    self.start == self.end
  }
}