#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum PositionScope {
Path,
Query,
}
impl PositionScope {
pub fn as_str(&self) -> &'static str {
match self {
PositionScope::Path => "path",
PositionScope::Query => "query",
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Position {
pub host: String,
pub scope: PositionScope,
pub locator: String,
}
impl Position {
pub fn path(host: impl Into<String>, prefix: impl Into<String>) -> Self {
Position {
host: host.into(),
scope: PositionScope::Path,
locator: prefix.into(),
}
}
pub fn query(host: impl Into<String>, name: impl Into<String>) -> Self {
Position {
host: host.into(),
scope: PositionScope::Query,
locator: name.into(),
}
}
}