From 90499d4390402ae174f6a2e029b46ade92545496 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 2 May 2023 17:04:53 +0200 Subject: [PATCH] Use boxed slices instead ovecs in decl macros --- crates/mbe/src/benchmark.rs | 2 +- crates/mbe/src/lib.rs | 6 +++--- crates/mbe/src/parser.rs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/mbe/src/benchmark.rs b/crates/mbe/src/benchmark.rs index 212e0a02dbc..d640eea19a2 100644 --- a/crates/mbe/src/benchmark.rs +++ b/crates/mbe/src/benchmark.rs @@ -79,7 +79,7 @@ fn invocation_fixtures(rules: &FxHashMap) -> Vec<(Stri let mut res = Vec::new(); for (name, it) in rules { - for rule in &it.rules { + for rule in it.rules.iter() { // Generate twice for _ in 0..2 { // The input are generated by filling the `Op` randomly. diff --git a/crates/mbe/src/lib.rs b/crates/mbe/src/lib.rs index d20641062c1..80352aa4adc 100644 --- a/crates/mbe/src/lib.rs +++ b/crates/mbe/src/lib.rs @@ -104,7 +104,7 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { /// and `$()*` have special meaning (see `Var` and `Repeat` data structures) #[derive(Clone, Debug, PartialEq, Eq)] pub struct DeclarativeMacro { - rules: Vec, + rules: Box<[Rule]>, /// Highest id of the token we have in TokenMap shift: Shift, // This is used for correctly determining the behavior of the pat fragment @@ -217,7 +217,7 @@ pub fn parse_macro_rules( validate(lhs)?; } - Ok(DeclarativeMacro { rules, shift: Shift::new(tt), is_2021 }) + Ok(DeclarativeMacro { rules: rules.into_boxed_slice(), shift: Shift::new(tt), is_2021 }) } /// The new, unstable `macro m {}` flavor. @@ -250,7 +250,7 @@ pub fn parse_macro2(tt: &tt::Subtree, is_2021: bool) -> Result ExpandResult { diff --git a/crates/mbe/src/parser.rs b/crates/mbe/src/parser.rs index fd3d64719ac..0fbf832b06d 100644 --- a/crates/mbe/src/parser.rs +++ b/crates/mbe/src/parser.rs @@ -20,7 +20,7 @@ /// Stuff to the right is a [`MetaTemplate`] template which is used to produce /// output. #[derive(Clone, Debug, PartialEq, Eq)] -pub(crate) struct MetaTemplate(pub(crate) Vec); +pub(crate) struct MetaTemplate(pub(crate) Box<[Op]>); impl MetaTemplate { pub(crate) fn parse_pattern(pattern: &tt::Subtree) -> Result { @@ -44,7 +44,7 @@ fn parse(tt: &tt::Subtree, mode: Mode) -> Result { res.push(op); } - Ok(MetaTemplate(res)) + Ok(MetaTemplate(res.into_boxed_slice())) } }