harper_core/expr/
first_match_of.rs1use super::Expr;
2use crate::{Span, Token};
3
4#[derive(Default)]
9pub struct FirstMatchOf {
10 exprs: Vec<Box<dyn Expr>>,
11}
12
13impl FirstMatchOf {
14 pub fn new(exprs: Vec<Box<dyn Expr>>) -> Self {
15 Self { exprs }
16 }
17
18 pub fn push(&mut self, expr: Box<dyn Expr>) {
19 self.exprs.push(expr);
20 }
21}
22
23impl Expr for FirstMatchOf {
24 fn run(&self, cursor: usize, tokens: &[Token], source: &[char]) -> Option<Span> {
25 self.exprs
26 .iter()
27 .filter_map(|p| p.run(cursor, tokens, source))
28 .next()
29 }
30}