use std::fmt::{self, Display, Formatter}; use serde::{Deserialize, Serialize}; use crate::{Identifier, Statement}; #[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq, PartialOrd, Ord)] pub struct Function { identifiers: Vec, statements: Vec, } impl Function { pub fn new(identifiers: Vec, statements: Vec) -> Self { Function { identifiers, statements, } } pub fn identifiers(&self) -> &Vec { &self.identifiers } pub fn statements(&self) -> &Vec { &self.statements } } impl Display for Function { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { write!( f, "function < {:?} > {{ {:?} }}", // TODO: Correct this output self.identifiers, self.statements ) } }