qubit_redact/policy/redaction_policy_builder/uri_policy_builder_view.rs
1// =============================================================================
2// Copyright (c) 2025 - 2026 Haixing Hu.
3//
4// SPDX-License-Identifier: Apache-2.0
5//
6// Licensed under the Apache License, Version 2.0.
7// =============================================================================
8//! Transactional view over URI visibility settings.
9
10/// Mutable view over URI-specific behavior.
11///
12/// # Examples
13///
14/// ```
15/// use qubit_redact::RedactionPolicy;
16/// use qubit_redact::formats::uri::UriPathPolicy;
17///
18/// let policy = RedactionPolicy::builder().uri(|uri| {
19/// uri.path(UriPathPolicy::Redact);
20/// })?.build()?;
21/// assert!(!policy.is_disabled());
22/// # Ok::<(), qubit_redact::PolicyError>(())
23/// ```
24#[cfg(feature = "uri")]
25pub struct UriPolicyBuilderView<'a> {
26 /// URI builder receiving view changes.
27 pub(super) builder: &'a mut crate::formats::uri::UriPolicyBuilder,
28}
29
30#[cfg(feature = "uri")]
31impl UriPolicyBuilderView<'_> {
32 /// Sets URI path visibility.
33 #[inline(always)]
34 pub fn path(&mut self, policy: crate::formats::uri::UriPathPolicy) -> &mut Self {
35 self.builder.path_policy_mut(policy);
36 self
37 }
38
39 /// Sets URI fragment visibility.
40 #[inline(always)]
41 pub fn fragment(&mut self, policy: crate::formats::uri::UriFragmentPolicy) -> &mut Self {
42 self.builder.fragment_policy_mut(policy);
43 self
44 }
45}