hindsight/analyzer/
tree.rs1use crate::parser::ExecutionNode;
6use serde::{Deserialize, Serialize};
7use std::rc::Rc;
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct TreeNode {
12 #[serde(serialize_with = "serialize_rc", deserialize_with = "deserialize_rc")]
14 pub node: Rc<ExecutionNode>,
15
16 pub children: Vec<TreeNode>,
18
19 pub depth: usize,
21}
22
23fn serialize_rc<S>(node: &Rc<ExecutionNode>, serializer: S) -> Result<S::Ok, S::Error>
25where
26 S: serde::Serializer,
27{
28 node.as_ref().serialize(serializer)
29}
30
31fn deserialize_rc<'de, D>(deserializer: D) -> Result<Rc<ExecutionNode>, D::Error>
33where
34 D: serde::Deserializer<'de>,
35{
36 ExecutionNode::deserialize(deserializer).map(Rc::new)
37}
38
39impl TreeNode {
40 }