From 9117148f42371108f49de84ff765da987dcb5917 Mon Sep 17 00:00:00 2001 From: Edwin Cheng Date: Sat, 13 Mar 2021 20:17:54 +0800 Subject: Add bindings builder for speed up matching --- crates/mbe/src/expander/transcriber.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'crates/mbe/src/expander/transcriber.rs') diff --git a/crates/mbe/src/expander/transcriber.rs b/crates/mbe/src/expander/transcriber.rs index ad9953a7d..c679e5e5d 100644 --- a/crates/mbe/src/expander/transcriber.rs +++ b/crates/mbe/src/expander/transcriber.rs @@ -13,17 +13,13 @@ use crate::{ impl Bindings { fn contains(&self, name: &str) -> bool { - self.inner.iter().any(|(n, _)| n == name) + self.inner.contains_key(name) } fn get(&self, name: &str, nesting: &mut [NestingState]) -> Result<&Fragment, ExpandError> { - let mut b: &Binding = self - .inner - .iter() - .find_map(|(n, b)| if n == name { Some(b) } else { None }) - .ok_or_else(|| { - ExpandError::BindingError(format!("could not find binding `{}`", name)) - })?; + let mut b: &Binding = self.inner.get(name).ok_or_else(|| { + ExpandError::BindingError(format!("could not find binding `{}`", name)) + })?; for nesting_state in nesting.iter_mut() { nesting_state.hit = true; b = match b { -- cgit v1.2.3