lwb_parser/parser/ast/
from_pairs.rs

1use crate::parser::ast::AstInfo;
2use crate::parser::peg::parse_pair::ParsePairSort;
3use thiserror::Error;
4
5pub trait GenerateAstInfo {
6    type Result: AstInfo;
7
8    fn generate(&mut self, pair: &ParsePairSort) -> Self::Result;
9}
10
11impl<F, M: AstInfo> GenerateAstInfo for F
12where
13    F: FnMut(&ParsePairSort) -> M,
14{
15    type Result = M;
16
17    fn generate(&mut self, pair: &ParsePairSort) -> Self::Result {
18        (self)(pair)
19    }
20}
21
22#[derive(Debug, Error)]
23pub enum FromPairsError {}
24
25pub trait FromPairs<M: AstInfo> {
26    fn from_pairs<G: GenerateAstInfo<Result = M>>(pair: &ParsePairSort, generator: &mut G) -> Self
27    where
28        Self: Sized;
29}