1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use serde::Serialize;

pub enum Symbol {
    Circle,
    Rect,
    RoundRect,
    Triangle,
    Diamond,
    Pin,
    Arrow,
    None,
    Custom(String),
}

impl Serialize for Symbol {
    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
        match self {
            Symbol::Circle => serializer.serialize_str("circle"),
            Symbol::Rect => serializer.serialize_str("rect"),
            Symbol::RoundRect => serializer.serialize_str("roundRect"),
            Symbol::Triangle => serializer.serialize_str("triangle"),
            Symbol::Diamond => serializer.serialize_str("diamond"),
            Symbol::Pin => serializer.serialize_str("pin"),
            Symbol::Arrow => serializer.serialize_str("arrow"),
            Symbol::None => serializer.serialize_str("none"),
            Symbol::Custom(s) => serializer.serialize_str(s),
        }
    }
}