Struct UsernameLabelParserLayer
pub struct UsernameLabelParserLayer<P> { /* private fields */ }Available on crate feature
net only.Expand description
Layer which can be used to add parser capabilities to any service
stack which injects a UserId into the input.
For most use-cases you do not need this layer at all. Http and socks5 support by rama already can handle parsers out of the box:
- for the http proxy you can do it directly within the proxy acceptor layer;
- for the socks5 proxy you would do the parsing as part of your authorizer implementation.
If this is not the case you will have to add username label capabilities to your authorizer. Sadly not all authorizer traits allow adding extensions. This is probably a shortcoming which should be fixed at some point. Feel free to feature request this.
Implementations§
§impl<P> UsernameLabelParserLayer<P>
impl<P> UsernameLabelParserLayer<P>
pub fn new() -> UsernameLabelParserLayer<P>
Trait Implementations§
§impl<P> Clone for UsernameLabelParserLayer<P>
impl<P> Clone for UsernameLabelParserLayer<P>
§fn clone(&self) -> UsernameLabelParserLayer<P>
fn clone(&self) -> UsernameLabelParserLayer<P>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read more§impl<P> Debug for UsernameLabelParserLayer<P>
impl<P> Debug for UsernameLabelParserLayer<P>
§impl<P> Default for UsernameLabelParserLayer<P>where
P: Default,
impl<P> Default for UsernameLabelParserLayer<P>where
P: Default,
§fn default() -> UsernameLabelParserLayer<P>
fn default() -> UsernameLabelParserLayer<P>
Returns the “default value” for a type. Read more
§impl<S, P> Layer<S> for UsernameLabelParserLayer<P>
impl<S, P> Layer<S> for UsernameLabelParserLayer<P>
§type Service = UsernameLabelParserService<S, P>
type Service = UsernameLabelParserService<S, P>
The service produced by the layer.
§fn layer(&self, inner: S) -> <UsernameLabelParserLayer<P> as Layer<S>>::Service
fn layer(&self, inner: S) -> <UsernameLabelParserLayer<P> as Layer<S>>::Service
Wrap the given service with the middleware, returning a new service.
§fn into_layer(self, inner: S) -> Self::Service
fn into_layer(self, inner: S) -> Self::Service
Same as
layer but consuming self after the service was created. Read moreAuto Trait Implementations§
impl<P> Freeze for UsernameLabelParserLayer<P>
impl<P> RefUnwindSafe for UsernameLabelParserLayer<P>
impl<P> Send for UsernameLabelParserLayer<P>
impl<P> Sync for UsernameLabelParserLayer<P>
impl<P> Unpin for UsernameLabelParserLayer<P>
impl<P> UnwindSafe for UsernameLabelParserLayer<P>
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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> ⓘ
Converts
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> ⓘ
Converts
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> 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>
Create a new
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more