Skip to main content

interstice_abi/
interstice_type_def.rs

1use crate::IntersticeType;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Deserialize, Serialize)]
5pub enum IntersticeTypeDef {
6    Struct {
7        name: String,
8        fields: Vec<FieldDef>,
9    },
10    Enum {
11        name: String,
12        variants: Vec<FieldDef>,
13    },
14}
15
16impl IntersticeTypeDef {
17    pub fn get_name(&self) -> &String {
18        match &self {
19            IntersticeTypeDef::Struct { name, .. } => name,
20            IntersticeTypeDef::Enum { name, .. } => name,
21        }
22    }
23}
24
25#[derive(Debug, Clone, Deserialize, Serialize)]
26pub struct FieldDef {
27    pub name: String,
28    pub field_type: IntersticeType,
29}