flow_record_common/
field_type.rs1use 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}