#[derive(Debug, Default, Clone)]
pub struct SearchParameters {
queries: Vec<(String, String)>,
}
impl SearchParameters {
#[must_use]
pub fn empty() -> Self {
Self::default()
}
#[must_use]
pub fn and<P>(mut self, parameter: P) -> Self
where
P: SearchParameter,
{
self.queries.push(parameter.into_query());
self
}
#[must_use]
pub fn and_raw<K, V>(mut self, key: K, value: V) -> Self
where
K: Into<String>,
V: ToString,
{
self.queries.push((key.into(), value.to_string()));
self
}
pub(crate) fn into_queries(self) -> Vec<(String, String)> {
self.queries
}
}
pub trait SearchParameter {
fn into_query(self) -> (String, String);
}