flow_record_common/
field_type.rs

1use proc_macro2::TokenStream;
2use quote::{quote, ToTokens, TokenStreamExt};
3use rmpv::Value;
4use strum::Display;
5
6#[derive(Clone, Eq, PartialEq, Debug, Hash, Display)]
7#[allow(dead_code)]
8#[strum(serialize_all = "snake_case")]
9pub enum FieldType {
10    Boolean,
11
12    #[strum(to_string="uint16")]
13    UInt16,
14
15    #[strum(to_string="uint32")]
16
17    UInt32,
18    #[strum(to_string="varint")]
19    VarInt,
20    Float,
21    String,
22    Bin,
23    Datetime,
24    Filesize,
25    Path,
26    UnixFileMode,
27    Record,
28    
29    #[strum(to_string="stringlist")]
30    StringList,
31
32    #[strum(to_string="dictlist")]
33    DictList,
34    Dynamic
35}
36
37impl From<FieldType> for Value {
38    fn from(value: FieldType) -> Self {
39        Value::String(value.to_string().into())
40    }
41}
42
43impl ToTokens for FieldType {
44    fn to_tokens(&self, tokens: &mut TokenStream) {
45        tokens.append_all(quote! {flow_record::prelude::#self});
46    }
47}