pub struct ReversibleResourceTemplate { /* private fields */ }Expand description
A compiled, deterministic RFC 6570 template suitable for local dispatch.
This is intentionally stricter than UriTemplate. It accepts scalar
captures only, requires unambiguous expression boundaries, and decodes
captured percent triplets once. Named (;, ?, and &) expressions may
contain multiple scalar variables because their wire names make omission
and ordering deterministic. List and associative inputs are rejected
before expansion because their compact and exploded forms are not generally
invertible. An explode modifier on a scalar is admitted: RFC 6570 gives it
the same wire form as the unmodified scalar.
Implementations§
Source§impl ReversibleResourceTemplate
impl ReversibleResourceTemplate
Sourcepub fn compile(template: UriTemplate) -> Result<Self, UriTemplateError>
pub fn compile(template: UriTemplate) -> Result<Self, UriTemplateError>
Compiles an owned template for deterministic reverse matching.
Sourcepub fn from_template(template: &UriTemplate) -> Result<Self, UriTemplateError>
pub fn from_template(template: &UriTemplate) -> Result<Self, UriTemplateError>
Compiles a borrowed template for deterministic reverse matching.
Sourcepub fn template(&self) -> &UriTemplate
pub fn template(&self) -> &UriTemplate
Returns the original RFC 6570 template.
Sourcepub fn expand(
&self,
values: &TemplateValues,
) -> Result<String, UriTemplateError>
pub fn expand( &self, values: &TemplateValues, ) -> Result<String, UriTemplateError>
Expands only the scalar value shape declared by this compiled matcher.
Sourcepub fn match_uri(
&self,
uri: &str,
) -> Result<Option<TemplateValues>, UriTemplateError>
pub fn match_uri( &self, uri: &str, ) -> Result<Option<TemplateValues>, UriTemplateError>
Reverse-matches an exact URI wire string and returns its scalar bindings.
Ok(None) means the URI is outside this template’s language. Any
successful result is replayed through Self::expand and compared to
the original bytes before it is returned.
Trait Implementations§
Source§impl Clone for ReversibleResourceTemplate
impl Clone for ReversibleResourceTemplate
Source§fn clone(&self) -> ReversibleResourceTemplate
fn clone(&self) -> ReversibleResourceTemplate
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ReversibleResourceTemplate
impl Debug for ReversibleResourceTemplate
impl Eq for ReversibleResourceTemplate
impl StructuralPartialEq for ReversibleResourceTemplate
Source§impl TryFrom<&UriTemplate> for ReversibleResourceTemplate
impl TryFrom<&UriTemplate> for ReversibleResourceTemplate
Source§type Error = UriTemplateError
type Error = UriTemplateError
Source§impl TryFrom<UriTemplate> for ReversibleResourceTemplate
impl TryFrom<UriTemplate> for ReversibleResourceTemplate
Source§type Error = UriTemplateError
type Error = UriTemplateError
Auto Trait Implementations§
impl Freeze for ReversibleResourceTemplate
impl RefUnwindSafe for ReversibleResourceTemplate
impl Send for ReversibleResourceTemplate
impl Sync for ReversibleResourceTemplate
impl Unpin for ReversibleResourceTemplate
impl UnsafeUnpin for ReversibleResourceTemplate
impl UnwindSafe for ReversibleResourceTemplate
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.