diff options
author | Martin Fischer <martin@push-f.com> | 2021-12-03 10:05:55 +0100 |
---|---|---|
committer | Martin Fischer <martin@push-f.com> | 2021-12-05 02:52:36 +0100 |
commit | 2c5284aacb91e5d3aaa729f4319e368296b1d47d (patch) | |
tree | 0620a0ba8f631db5640b9205ab851e6e91a4bf6d /src/emitter.rs | |
parent | 9f2b33c046b859007bba854b7a39f5110ab8dac3 (diff) |
refactor: match btree_map::Entry instead of using and_modify closure
Diffstat (limited to 'src/emitter.rs')
-rw-r--r-- | src/emitter.rs | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/emitter.rs b/src/emitter.rs index 8f9e56d..e0ee8d9 100644 --- a/src/emitter.rs +++ b/src/emitter.rs @@ -1,3 +1,4 @@ +use std::collections::btree_map::Entry; use std::collections::BTreeMap; use std::collections::BTreeSet; use std::collections::VecDeque; @@ -213,19 +214,14 @@ impl<R> DefaultEmitter<R, ()> { fn flush_current_attribute(&mut self) { if let Some((k, v)) = self.current_attribute.take() { match self.current_token { - Some(Token::StartTag(ref mut tag)) => { - let mut error = None; - tag.attributes - .entry(k) - .and_modify(|_| { - error = Some(Error::DuplicateAttribute); - }) - .or_insert(v); - - if let Some(e) = error { - self.emit_error(e); + Some(Token::StartTag(ref mut tag)) => match tag.attributes.entry(k) { + Entry::Vacant(vacant) => { + vacant.insert(v); } - } + Entry::Occupied(_) => { + self.emit_error(Error::DuplicateAttribute); + } + }, Some(Token::EndTag(_)) => { if !self.seen_attributes.insert(k) { self.emit_error(Error::DuplicateAttribute); |