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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
use crate::model::TypeBool;
use crate::model::TypeChr;
use crate::model::TypeEnum;
use crate::model::TypeF32;
use crate::model::TypeF64;
use crate::model::TypeFlags;
use crate::model::TypeList;
use crate::model::TypeOption;
use crate::model::TypeRecord;
use crate::model::TypeResult;
use crate::model::TypeS16;
use crate::model::TypeS32;
use crate::model::TypeS64;
use crate::model::TypeS8;
use crate::model::TypeStr;
use crate::model::TypeTuple;
use crate::model::TypeU16;
use crate::model::TypeU32;
use crate::model::TypeU64;
use crate::model::TypeU8;
use crate::model::TypeVariant;
use serde::Deserialize;
use serde::Serialize;

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum Type {
    Variant(TypeVariant),
    Result(Box<TypeResult>),
    Option(Box<TypeOption>),
    Enum(TypeEnum),
    Flags(TypeFlags),
    Record(TypeRecord),
    Tuple(TypeTuple),
    List(Box<TypeList>),
    Str(TypeStr),
    Chr(TypeChr),
    F64(TypeF64),
    F32(TypeF32),
    U64(TypeU64),
    S64(TypeS64),
    U32(TypeU32),
    S32(TypeS32),
    U16(TypeU16),
    S16(TypeS16),
    U8(TypeU8),
    S8(TypeS8),
    Bool(TypeBool),
}