generic_core/
value.rs

1use std::collections::HashMap;
2
3///////////////////////////////////////////////////////////////////////////////
4// VALUES
5///////////////////////////////////////////////////////////////////////////////
6
7#[derive(Clone, Debug)]
8pub enum Value {
9    Unit,
10    Bool(bool),
11    Numeric(Numeric),
12    String(String),
13    Collection(Collection),
14    Option(Box<Option<Value>>),
15    Tuple(Vec<Value>),
16    Struct(Struct),
17    TupleStruct(TupleStruct),
18    Variant(Variant),
19}
20
21
22#[derive(Clone, Debug)]
23pub enum Numeric {
24    I64(i64),
25    I128(i128),
26    U64(u64),
27    U128(u128),
28    F64(f64),
29}
30
31
32#[derive(Clone, Debug)]
33pub enum Collection {
34    Map(HashMap<String, Value>),
35    Vec(Vec<Value>),
36}
37
38
39#[derive(Clone, Debug)]
40pub struct Struct {
41    pub type_name: String,
42    pub data: HashMap<String, Value>,
43}
44
45#[derive(Clone, Debug)]
46pub struct TupleStruct {
47    pub type_name: String,
48    pub data: Vec<Value>,
49}
50
51#[derive(Clone, Debug)]
52pub enum Variant {
53    TupleVariant {
54        type_name: String,
55        variant_name: String,
56        data: Vec<Value>
57    },
58    StructVariant {
59        type_name: String,
60        variant_name: String,
61        data: HashMap<String, Value>
62    },
63    UnitVariant {
64        type_name: String,
65        variant_name: String,
66    }
67}
68