From cc8fbb7f1cf764e75ba6e0b5de636ec49eff0ffc Mon Sep 17 00:00:00 2001 From: Phodal Huang Date: Sun, 23 Aug 2020 17:37:34 +0800 Subject: [PATCH] feat: make callback inline --- scie-grammar/src/rule.rs | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/scie-grammar/src/rule.rs b/scie-grammar/src/rule.rs index 9379dcb..ba21493 100644 --- a/scie-grammar/src/rule.rs +++ b/scie-grammar/src/rule.rs @@ -5,24 +5,23 @@ use crate::grammar::grammar::Grammar; pub struct RuleFactory {} -fn create_rule(id: i32) -> Box { - let rule = BeginEndRule { - rule: Rule { - location: ILocation::new(), - id: id, - name: None, - content_name: None - } - }; - - Box::from(rule) -} - impl RuleFactory { - pub fn get_compiled_rule_id(desc: IRawRule, helper: &mut Grammar, repository: IRawRepository) -> i32 { + pub fn get_compiled_rule_id(mut desc: IRawRule, helper: &mut Grammar, repository: IRawRepository) -> i32 { match desc.id { None => { - helper.register_rule(create_rule); + helper.register_rule(|id| { + desc.id = Some(id); + let rule = BeginEndRule { + rule: Rule { + location: ILocation::new(), + id: id, + name: None, + content_name: None + } + }; + + Box::from(rule) + }); }, Some(_) => {}, } -- GitLab