Struct ProxyPathTemplate
pub struct ProxyPathTemplate { /* private fields */ }net only.Expand description
The path-and-query URI Template of a MASQUE proxy.
It locates CONNECT-UDP tunnels on the proxy (RFC 9298 §2): scheme, host, port
and credentials come from the ProxyAddress carrying it. The template is
validated on construction: a level 3 or lower template whose path starts with
/, naming both target_host and target_port, and using only simple
({x}) and form-style query ({?x}, {&x}) expressions. Other variables are
allowed and expand empty. Cloning is cheap.
Implementations§
§impl ProxyPathTemplate
impl ProxyPathTemplate
pub const CONNECT_UDP_DEFAULT: &'static str = "/.well-known/masque/udp/{target_host}/{target_port}/"
pub const CONNECT_UDP_DEFAULT: &'static str = "/.well-known/masque/udp/{target_host}/{target_port}/"
The default CONNECT-UDP template a proxy serves (RFC 9298 §2).
pub fn try_new(
template: impl AsRef<str>,
) -> Result<ProxyPathTemplate, ProxyPathTemplateError>
pub fn try_new( template: impl AsRef<str>, ) -> Result<ProxyPathTemplate, ProxyPathTemplateError>
Parse and validate a path-and-query template.
pub fn is_connect_udp_default(&self) -> bool
pub fn is_connect_udp_default(&self) -> bool
Whether this is the RFC 9298 default CONNECT-UDP template.
pub fn template(&self) -> &UriTemplate
pub fn template(&self) -> &UriTemplate
The underlying URI Template.
pub fn target_host(&self) -> TemplateVariable
pub fn target_host(&self) -> TemplateVariable
The target_host variable.
pub fn target_port(&self) -> TemplateVariable
pub fn target_port(&self) -> TemplateVariable
The target_port variable.
pub fn expand_target_to(&self, out: &mut String, host: &Host, port: u16)
pub fn expand_target_to(&self, out: &mut String, host: &Host, port: u16)
Append the path and query for a target, leaving other variables empty.
pub fn expand_connect_udp_default_to(out: &mut String, host: &Host, port: u16)
pub fn expand_connect_udp_default_to(out: &mut String, host: &Host, port: u16)
Append the default CONNECT-UDP path for a target without parsing a template.
Trait Implementations§
§impl Clone for ProxyPathTemplate
impl Clone for ProxyPathTemplate
§fn clone(&self) -> ProxyPathTemplate
fn clone(&self) -> ProxyPathTemplate
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for ProxyPathTemplate
impl Debug for ProxyPathTemplate
§impl Display for ProxyPathTemplate
impl Display for ProxyPathTemplate
impl Eq for ProxyPathTemplate
§impl Hash for ProxyPathTemplate
impl Hash for ProxyPathTemplate
§impl PartialEq for ProxyPathTemplate
impl PartialEq for ProxyPathTemplate
impl StructuralPartialEq for ProxyPathTemplate
Auto Trait Implementations§
impl Freeze for ProxyPathTemplate
impl RefUnwindSafe for ProxyPathTemplate
impl Send for ProxyPathTemplate
impl Sync for ProxyPathTemplate
impl Unpin for ProxyPathTemplate
impl UnsafeUnpin for ProxyPathTemplate
impl UnwindSafe for ProxyPathTemplate
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.