rust_logic_graph/core/
graph.rs

1
2use serde::{Serialize, Deserialize};
3use std::collections::HashMap;
4
5use crate::node::NodeType;
6
7#[derive(Debug, Serialize, Deserialize, Clone)]
8pub struct Edge {
9    pub from: String,
10    pub to: String,
11    pub rule: Option<String>,
12}
13
14#[derive(Debug, Serialize, Deserialize, Clone)]
15pub struct GraphDef {
16    pub nodes: HashMap<String, NodeType>,
17    pub edges: Vec<Edge>,
18}
19
20#[derive(Default)]
21pub struct Context {
22    pub data: HashMap<String, serde_json::Value>,
23}
24
25pub struct Graph {
26    pub def: GraphDef,
27    pub context: Context,
28}
29
30impl Graph {
31    pub fn new(def: GraphDef) -> Self {
32        Self {
33            def,
34            context: Context::default(),
35        }
36    }
37}