use crate::elements::Element; #[derive(Clone, Debug)] pub struct Expression { children: Vec, } #[derive(Clone, Debug)] pub enum Special { Sum(Sum), Prod(Prod), Frac(Frac), Exp(Exp), Sqrt(Sqrt), Root(Root), Integral(Integral), OIntegral(OIntegral), } #[derive(Clone, Debug)] pub struct Sum { top: Option, bottom: Option, } #[derive(Clone, Debug)] pub struct Prod { top: Box, bottom: Box, } #[derive(Clone, Debug)] pub struct Frac { top: Box, bottom: Box, } #[derive(Clone, Debug)] pub struct Exp { base: Box, exp: Box, } #[derive(Clone, Debug)] pub struct Sqrt { inner: Box, } #[derive(Clone, Debug)] pub struct Root { base: Box, inner: Box, } #[derive(Clone, Debug)] pub struct Integral { top: Box, bottom: Box, } #[derive(Clone, Debug)] pub struct OIntegral { top: Box, bottom: Box, }