1use super::*;
2
3#[derive(Debug)]
4pub enum Value {
5 Bool(bool),
6 U8(u8),
7 I8(i8),
8 U16(u16),
9 I16(i16),
10 U32(u32),
11 I32(i32),
12 U64(u64),
13 I64(i64),
14 F32(f32),
15 F64(f64),
16 Str(&'static str),
17 String(String),
18 TypeName(TypeName),
19}
20
21impl Value {
22 pub fn write(&self) -> TokenStream {
23 match self {
24 Self::Bool(value) => quote! { #value },
25 Self::U8(value) => quote! { #value },
26 Self::I8(value) => quote! { #value },
27 Self::U16(value) => quote! { #value },
28 Self::I16(value) => quote! { #value },
29 Self::U32(value) => quote! { #value },
30 Self::I32(value) => quote! { #value },
31 Self::U64(value) => quote! { #value },
32 Self::I64(value) => quote! { #value },
33 Self::F32(value) => quote! { #value },
34 Self::F64(value) => quote! { #value },
35 Self::String(value) => {
36 let mut tokens = "\"".to_string();
37
38 for u in value.chars() {
39 write!(tokens, "{}", u.escape_default()).unwrap();
40 }
41
42 tokens.push('\"');
43 tokens.into()
44 }
45 rest => panic!("{rest:?}"),
46 }
47 }
48}
49