use super::UriFragmentPolicy;
use super::UriPathPolicy;
use super::UriPolicy;
use crate::PolicyError;
#[derive(Debug, Clone)]
pub struct UriPolicyBuilder {
path_policy: UriPathPolicy,
fragment_policy: UriFragmentPolicy,
}
impl UriPolicyBuilder {
#[must_use]
#[inline]
pub fn new() -> Self {
Self {
path_policy: UriPathPolicy::default(),
fragment_policy: UriFragmentPolicy::default(),
}
}
#[must_use]
#[inline(always)]
pub(crate) fn from_policy(policy: &UriPolicy) -> Self {
Self {
path_policy: policy.path_policy(),
fragment_policy: policy.fragment_policy(),
}
}
#[inline(always)]
pub(crate) fn path_policy_mut(&mut self, policy: UriPathPolicy) {
self.path_policy = policy;
}
#[inline(always)]
pub(crate) fn fragment_policy_mut(&mut self, policy: UriFragmentPolicy) {
self.fragment_policy = policy;
}
#[inline]
pub(crate) fn build(self) -> Result<UriPolicy, PolicyError> {
Ok(UriPolicy::new(self.path_policy, self.fragment_policy))
}
}
impl Default for UriPolicyBuilder {
#[inline(always)]
fn default() -> Self {
Self::new()
}
}