ara_parser/tree/expression/
generic.rs1use 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}