spade_codespan/
location.rs

1#[cfg(feature = "serialization")]
2use serde::{Deserialize, Serialize};
3
4use crate::{ColumnIndex, LineIndex};
5
6/// A location in a source file.
7#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
8#[cfg_attr(feature = "serialization", derive(Deserialize, Serialize))]
9pub struct Location {
10    /// The line index in the source file.
11    pub line: LineIndex,
12    /// The column index in the source file.
13    pub column: ColumnIndex,
14}
15
16impl Location {
17    /// Construct a new location from a line index and a column index.
18    pub fn new(line: impl Into<LineIndex>, column: impl Into<ColumnIndex>) -> Location {
19        Location {
20            line: line.into(),
21            column: column.into(),
22        }
23    }
24}