Skip to main content

ReversibleResourceTemplate

Struct ReversibleResourceTemplate 

Source
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

Source

pub fn compile(template: UriTemplate) -> Result<Self, UriTemplateError>

Compiles an owned template for deterministic reverse matching.

Source

pub fn from_template(template: &UriTemplate) -> Result<Self, UriTemplateError>

Compiles a borrowed template for deterministic reverse matching.

Source

pub fn template(&self) -> &UriTemplate

Returns the original RFC 6570 template.

Source

pub fn expand( &self, values: &TemplateValues, ) -> Result<String, UriTemplateError>

Expands only the scalar value shape declared by this compiled matcher.

Source

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

Source§

fn clone(&self) -> ReversibleResourceTemplate

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ReversibleResourceTemplate

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for ReversibleResourceTemplate

Source§

impl PartialEq for ReversibleResourceTemplate

Source§

fn eq(&self, other: &ReversibleResourceTemplate) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ReversibleResourceTemplate

Source§

impl TryFrom<&UriTemplate> for ReversibleResourceTemplate

Source§

type Error = UriTemplateError

The type returned in the event of a conversion error.
Source§

fn try_from(template: &UriTemplate) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<UriTemplate> for ReversibleResourceTemplate

Source§

type Error = UriTemplateError

The type returned in the event of a conversion error.
Source§

fn try_from(template: UriTemplate) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, _span: NoopSpan) -> Self

Instruments this future with a span (no-op when disabled).
Source§

fn in_current_span(self) -> Self

Instruments this future with the current span (no-op when disabled).
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V