Skip to main content

oak_d2/ast/
mod.rs

1use core::range::Range;
2#[cfg(feature = "serde")]
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
6pub struct D2Root {
7    pub elements: Vec<D2Element>,
8    #[serde(with = "oak_core::serde_range")]
9    pub span: Range<usize>,
10}
11
12#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
13pub enum D2Element {
14    Shape(Shape),
15    Connection(Connection),
16}
17
18#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
19pub struct Shape {
20    pub id: String,
21    pub label: Option<String>,
22}
23
24#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
25pub struct Connection {
26    pub from: String,
27    pub to: String,
28    #[serde(with = "oak_core::serde_range")]
29    pub span: Range<usize>,
30}