lwb_parser/parser/ast/
from_pairs.rs1use 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}