use crate::parser::ExecutionNode;
use serde::{Deserialize, Serialize};
use std::rc::Rc;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TreeNode {
#[serde(serialize_with = "serialize_rc", deserialize_with = "deserialize_rc")]
pub node: Rc<ExecutionNode>,
pub children: Vec<TreeNode>,
pub depth: usize,
}
fn serialize_rc<S>(node: &Rc<ExecutionNode>, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
node.as_ref().serialize(serializer)
}
fn deserialize_rc<'de, D>(deserializer: D) -> Result<Rc<ExecutionNode>, D::Error>
where
D: serde::Deserializer<'de>,
{
ExecutionNode::deserialize(deserializer).map(Rc::new)
}
impl TreeNode {
}