From a7934a1dfd5735af335388b7c57f086132a57d3a Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Fri, 3 Dec 2021 10:43:06 +0100 Subject: spans: refactor to avoid one clone() --- src/spans.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/spans.rs b/src/spans.rs index 2107f20..c582457 100644 --- a/src/spans.rs +++ b/src/spans.rs @@ -62,7 +62,7 @@ pub struct SpanEmitter { seen_attributes: BTreeSet, emitted_tokens: VecDeque>, reader: PhantomData, - attr_in_end_tag_span: Span, + attr_in_end_tag_span: Option, } impl Default for SpanEmitter { @@ -75,7 +75,7 @@ impl Default for SpanEmitter { seen_attributes: BTreeSet::new(), emitted_tokens: VecDeque::new(), reader: PhantomData::default(), - attr_in_end_tag_span: Span::default(), + attr_in_end_tag_span: None, } } } @@ -98,7 +98,7 @@ impl SpanEmitter { } }, Some(Token::EndTag(_)) => { - self.attr_in_end_tag_span = v.name_span.clone(); + self.attr_in_end_tag_span = Some(v.name_span.clone()); if !self.seen_attributes.insert(k) { self.emit_error_span(Error::DuplicateAttribute, v.name_span); } @@ -174,10 +174,8 @@ impl Emitter for SpanEmitter { match token { Token::EndTag(_) => { if !self.seen_attributes.is_empty() { - self.emit_error_span( - Error::EndTagWithAttributes, - self.attr_in_end_tag_span.clone(), - ); + let span = self.attr_in_end_tag_span.take().unwrap(); + self.emit_error_span(Error::EndTagWithAttributes, span); } self.seen_attributes.clear(); } -- cgit v1.2.3