rust_logic_graph/core/
graph.rs1
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}