cfg_sequence/
destination.rs

1//! Sequence destination.
2
3use cfg_symbol::Symbol;
4
5use super::{Sequence, builder::SequenceRuleBuilder};
6
7/// Trait for storing sequence rules in containers, with potential rewrites.
8pub trait SequenceDestination: Sized {
9    /// Inserts a sequence rule.
10    fn add_sequence(&mut self, seq: Sequence);
11
12    /// Starts building a sequence rule.
13    fn sequence(self, lhs: Symbol) -> SequenceRuleBuilder<Self> {
14        SequenceRuleBuilder::new(self).sequence(lhs)
15    }
16}
17
18impl<'a> SequenceDestination for &'a mut Vec<Sequence> {
19    fn add_sequence(&mut self, seq: Sequence) {
20        self.push(seq);
21    }
22
23    /// Starts building a sequence rule.
24    fn sequence(self, lhs: Symbol) -> SequenceRuleBuilder<Self> {
25        SequenceRuleBuilder::new(self).sequence(lhs)
26    }
27}