use std::fmt::Display;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Position {
pub line: usize,
pub column: usize,
}
impl Position {
pub fn new(line: usize, column: usize) -> Self {
Position { line, column }
}
}
impl Default for Position {
fn default() -> Self {
Position { line: 1, column: 1 }
}
}
impl std::fmt::Display for Position {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}:{}", self.line, self.column)
}
}
#[derive(Debug, Clone, Default)]
pub struct Positions {
pub start_position: Position,
pub end_position: Position,
}
impl Positions {
pub fn new(start_position: Position, end_position: Position) -> Self {
Positions {
start_position,
end_position,
}
}
}
impl Display for Positions {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}-{}", self.start_position, self.end_position)
}
}