ara_parser/tree/expression/
generic.rs

1use bincode::Decode;
2use bincode::Encode;
3use schemars::JsonSchema;
4use serde::Deserialize;
5use serde::Serialize;
6
7use crate::tree::definition::r#type::TypeDefinition;
8use crate::tree::utils::CommaSeparated;
9use crate::tree::Node;
10
11#[derive(Debug, PartialEq, Eq, Clone, Hash, Deserialize, Serialize, Encode, Decode, JsonSchema)]
12#[serde(rename_all = "snake_case")]
13pub struct GenericGroupExpression {
14    pub double_colon_less_than: usize,
15    pub types: CommaSeparated<TypeDefinition>,
16    pub greater_than: usize,
17}
18
19impl Node for GenericGroupExpression {
20    fn initial_position(&self) -> usize {
21        self.double_colon_less_than
22    }
23
24    fn final_position(&self) -> usize {
25        self.greater_than + 1
26    }
27
28    fn children(&self) -> Vec<&dyn Node> {
29        self.types.inner.iter().map(|t| t as &dyn Node).collect()
30    }
31
32    fn get_description(&self) -> String {
33        "generic group expression".to_string()
34    }
35}