air_lambda_ast/ast/
traits.rs1use super::*;
18use itertools::Itertools;
19
20use std::fmt;
21
22impl fmt::Display for LambdaAST<'_> {
23 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
24 use LambdaAST::*;
25
26 match self {
27 Functor(functor) => write!(f, ".{functor}"),
28 ValuePath(value_path) => write!(f, ".$.{}", value_path.iter().join(".")),
29 }
30 }
31}
32
33impl fmt::Display for ValueAccessor<'_> {
34 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
35 use ValueAccessor::*;
36
37 match self {
38 ArrayAccess { idx } => write!(f, "[{idx}]"),
39 FieldAccessByName { field_name } => write!(f, "{field_name}"),
40 FieldAccessByScalar { scalar_name } => write!(f, "[{scalar_name}]"),
41 Error => write!(f, "a parser error occurred while parsing lambda expression"),
42 }
43 }
44}
45
46impl fmt::Display for Functor {
47 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
48 use Functor::*;
49
50 match self {
51 Length => write!(f, "length"),
52 }
53 }
54}