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