From 26f54b10314f90dc5457cd0760af7f109be78e5f Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Tue, 10 Sep 2019 16:29:48 +0200 Subject: Use an enum instead of strings for rule aliasing --- pest_consume/src/lib.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'pest_consume/src/lib.rs') diff --git a/pest_consume/src/lib.rs b/pest_consume/src/lib.rs index 439effb..62361f2 100644 --- a/pest_consume/src/lib.rs +++ b/pest_consume/src/lib.rs @@ -78,7 +78,7 @@ impl<'i, 'd, R: RuleType, D> ParseInput<'i, 'd, R, D> { pub fn as_rule(&self) -> R { self.pair.as_rule() } - pub fn as_rule_alias(&self) -> String + pub fn as_rule_alias(&self) -> C::AliasedRule where C: PestConsumer, ::Parser: PestParser, @@ -104,7 +104,7 @@ impl<'i, 'd, R: RuleType, D> ParseInputs<'i, 'd, R, D> { self.span.clone(), ) } - pub fn aliased_rules(&self) -> Vec + pub fn aliased_rules(&self) -> Vec where C: PestConsumer, ::Parser: PestParser, @@ -120,8 +120,9 @@ impl<'i, 'd, R: RuleType, D> ParseInputs<'i, 'd, R, D> { /// Used by the macros. pub trait PestConsumer { type Rule: RuleType; + type AliasedRule: RuleType; type Parser: PestParser; - fn rule_alias(rule: Self::Rule) -> String; + fn rule_alias(rule: Self::Rule) -> Self::AliasedRule; fn allows_shortcut(rule: Self::Rule) -> bool; fn parse_with_userdata<'i, 'd, D>( -- cgit v1.2.3