pub struct HtmlRewriteBody<B, H> { /* private fields */ }html only.Expand description
A response body that feeds the inner body’s bytes through an
HtmlRewriter, emitting rewritten chunks as they become available.
Build it directly with new (rewriting) or
passthrough (forward unchanged), or let
HtmlRewriteLayer construct one per
response. Attach on_end to recover the handler (and
any state it accumulated) once the rewrite finishes.
Implementations§
Source§impl<B, H> HtmlRewriteBody<B, H>where
H: ElementContentHandler,
impl<B, H> HtmlRewriteBody<B, H>where
H: ElementContentHandler,
Source§impl<B, H> HtmlRewriteBody<B, H>
impl<B, H> HtmlRewriteBody<B, H>
Sourcepub fn passthrough(inner: B) -> Self
pub fn passthrough(inner: B) -> Self
Wraps inner without rewriting — frames pass through unchanged (their
data type normalized to Bytes).
Lets a layer keep one body type for responses it must not rewrite (e.g. a non-HTML content type).
Sourcepub fn on_end<F>(self, on_end: F) -> Self
pub fn on_end<F>(self, on_end: F) -> Self
Installs a completion hook, handed the finalized handler by value after the rewrite ends — for reading state it accumulated.
Fires once after HtmlRewriter::end on clean termination (inner EOF
or trailers); not on the error path, nor in
passthrough mode (no handler). A later call
replaces an earlier hook.
Trait Implementations§
Source§impl<B, H> Body for HtmlRewriteBody<B, H>
impl<B, H> Body for HtmlRewriteBody<B, H>
Source§fn poll_frame(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Option<Result<Frame<Self::Data>, Self::Error>>>
fn poll_frame( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Option<Result<Frame<Self::Data>, Self::Error>>>
Source§fn size_hint(&self) -> SizeHint
fn size_hint(&self) -> SizeHint
Source§fn is_end_stream(&self) -> bool
fn is_end_stream(&self) -> bool
true when the end of stream has been reached. Read moreimpl<'__pin, B, H> Unpin for HtmlRewriteBody<B, H>where
PinnedFieldsOf<__Origin<'__pin, B, H>>: Unpin,
Auto Trait Implementations§
impl<B, H> !RefUnwindSafe for HtmlRewriteBody<B, H>
impl<B, H> !UnwindSafe for HtmlRewriteBody<B, H>
impl<B, H> Freeze for HtmlRewriteBody<B, H>
impl<B, H> Send for HtmlRewriteBody<B, H>
impl<B, H> Sync for HtmlRewriteBody<B, H>
impl<B, H> UnsafeUnpin for HtmlRewriteBody<B, H>where
B: UnsafeUnpin,
H: UnsafeUnpin,
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§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> BodyExt for T
impl<T> BodyExt for T
Source§fn frame(&mut self) -> Frame<'_, Self> ⓘwhere
Self: Unpin,
fn frame(&mut self) -> Frame<'_, Self> ⓘwhere
Self: Unpin,
Frame, if any.Source§fn map_frame<F, B>(self, f: F) -> MapFrame<Self, F>
fn map_frame<F, B>(self, f: F) -> MapFrame<Self, F>
Source§fn inspect_frame<F>(self, f: F) -> InspectFrame<Self, F>
fn inspect_frame<F>(self, f: F) -> InspectFrame<Self, F>
Source§fn map_err<F, E>(self, f: F) -> MapErr<Self, F>
fn map_err<F, E>(self, f: F) -> MapErr<Self, F>
Source§fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
Source§fn boxed_unsync(self) -> UnsyncBoxBody<Self::Data, Self::Error>
fn boxed_unsync(self) -> UnsyncBoxBody<Self::Data, Self::Error>
Source§fn collect_with(self, opts: CollectOptions) -> CollectWith<Self> ⓘ
fn collect_with(self, opts: CollectOptions) -> CollectWith<Self> ⓘ
CollectOptions. Read moreSource§fn with_trailers<F>(self, trailers: F) -> WithTrailers<Self, F>
fn with_trailers<F>(self, trailers: F) -> WithTrailers<Self, F>
Source§fn into_data_stream(self) -> BodyDataStream<Self>where
Self: Sized,
fn into_data_stream(self) -> BodyDataStream<Self>where
Self: Sized,
BodyDataStream.Source§fn into_stream(self) -> BodyStream<Self>where
Self: Sized,
fn into_stream(self) -> BodyStream<Self>where
Self: Sized,
BodyStream.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> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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