1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
4pub struct Location {
5 pub page: String,
6 #[serde(skip_serializing_if = "Option::is_none")]
7 pub selector: Option<String>,
8 #[serde(skip_serializing_if = "Option::is_none")]
9 pub line: Option<u32>,
10}
11
12impl Location {
13 pub fn page(page: impl Into<String>) -> Self {
14 Self {
15 page: page.into(),
16 selector: None,
17 line: None,
18 }
19 }
20
21 pub fn with_selector(mut self, selector: impl Into<String>) -> Self {
22 self.selector = Some(selector.into());
23 self
24 }
25}