flatbuffers_rust/flatbuffers/
flatbuffer_var.rs

1#[derive(Debug, Clone)]
2pub enum FlatBufferType {
3    FBBool,
4    FBString,
5    FBList,
6    FBStruct,
7}
8
9    // FlatBufferVar.type 判断字段类型
10    // FBString => FlatBuffer 需要 FlatBufferVar.value
11    // FBBool => FlatBuffer 需要 FlatBufferVar.value
12    // FBList => Flatbuffer 需要 FlatBufferVar.len FlatBufferVar.child(FlatBufferVar的数组)
13    // FBStruct => Flatbuffer 需要 FlatbufferVar.value 
14#[derive(Debug, Clone)]
15pub struct FlatBufferVar {
16    t: FlatBufferType,
17    v: Option<Vec<u8>>,
18    l: Option<u8>,
19    child: Option<Vec<FlatBufferVar>>, // list成员
20    p: Option<u32>
21}
22impl FlatBufferVar {
23    pub fn new( t: FlatBufferType, 
24                v: Option<Vec<u8>>, 
25                l: Option<u8>, 
26                child: Option<Vec<FlatBufferVar>>,
27                p: Option<u32> )
28             -> Option<FlatBufferVar>
29        {
30            Some(FlatBufferVar { t: t, v: v, l: l, child: child, p:p })
31        }
32    pub fn inner_field(&mut self)
33            -> (FlatBufferType, Option<Vec<u8>>, Option<u8>, Option<Vec<FlatBufferVar>>, Option<u32>)
34    {
35        (self.t.clone(), self.v.clone(), self.l, self.child.clone(), self.p)
36    }
37}