1 #[cfg(feature = "serialization")] 2 use serde::{Deserialize, Serialize}; 3 4 use 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))] 9 pub 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 16 impl Location { 17 /// Construct a new location from a line index and a column index. new(line: impl Into<LineIndex>, column: impl Into<ColumnIndex>) -> Location18 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 } 25