struct TokenHandler<'a, 'tcx, F: Write> {
out: &'a mut F,
closing_tags: Vec<(&'static str, Class)>,
pending_exit_span: Option<Class>,
current_class: Option<Class>,
pending_elems: Vec<(&'a str, Option<Class>)>,
href_context: Option<HrefContext<'a, 'tcx>>,
}
Expand description
This type is used as a conveniency to prevent having to pass all its fields as arguments into the various functions (which became its methods).
Fields§
§out: &'a mut F
It contains the closing tag and the associated Class
.
pending_exit_span: Option<Class>
This is used because we don’t automatically generate the closing tag on ExitSpan
in
case an EnterSpan
event with the same class follows.
current_class: Option<Class>
current_class
and pending_elems
are used to group HTML elements with same class
attributes to reduce the DOM size.
pending_elems: Vec<(&'a str, Option<Class>)>
We need to keep the Class
for each element because it could contain a Span
which is
used to generate links.
href_context: Option<HrefContext<'a, 'tcx>>
Implementations§
Source§impl<F: Write> TokenHandler<'_, '_, F>
impl<F: Write> TokenHandler<'_, '_, F>
fn handle_exit_span(&mut self)
Sourcefn write_pending_elems(&mut self, current_class: Option<Class>) -> bool
fn write_pending_elems(&mut self, current_class: Option<Class>) -> bool
Write all the pending elements sharing a same (or at mergeable) Class
.
If there is a “parent” (if a EnterSpan
event was encountered) and the parent can be merged
with the elements’ class, then we simply write the elements since the ExitSpan
event will
close the tag.
Otherwise, if there is only one pending element, we let the string
function handle both
opening and closing the tag, otherwise we do it into this function.
It returns true
if current_class
must be set to None
afterwards.
Trait Implementations§
Auto Trait Implementations§
impl<'a, 'tcx, F> Freeze for TokenHandler<'a, 'tcx, F>
impl<'a, 'tcx, F> !RefUnwindSafe for TokenHandler<'a, 'tcx, F>
impl<'a, 'tcx, F> !Send for TokenHandler<'a, 'tcx, F>
impl<'a, 'tcx, F> !Sync for TokenHandler<'a, 'tcx, F>
impl<'a, 'tcx, F> Unpin for TokenHandler<'a, 'tcx, F>
impl<'a, 'tcx, F> !UnwindSafe for TokenHandler<'a, 'tcx, F>
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
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 moreSource§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 160 bytes