stk/value/
value_type_info.rs1use crate::hash::Hash;
2use std::fmt;
3
4#[derive(Debug, Clone, Copy)]
7pub enum ValueTypeInfo {
8 Unit,
10 String,
12 Array,
14 Object,
16 Integer,
18 Float,
20 Bool,
22 Char,
24 External(&'static str),
26 Type,
28 Ptr,
30 Fn(Hash),
32}
33
34impl fmt::Display for ValueTypeInfo {
35 fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
36 match *self {
37 ValueTypeInfo::Unit => {
38 write!(fmt, "unit")?;
39 }
40 ValueTypeInfo::String => {
41 write!(fmt, "String")?;
42 }
43 ValueTypeInfo::Array => {
44 write!(fmt, "Array")?;
45 }
46 ValueTypeInfo::Object => {
47 write!(fmt, "Object")?;
48 }
49 ValueTypeInfo::Integer => {
50 write!(fmt, "int")?;
51 }
52 ValueTypeInfo::Float => {
53 write!(fmt, "float")?;
54 }
55 ValueTypeInfo::Bool => {
56 write!(fmt, "bool")?;
57 }
58 ValueTypeInfo::Char => {
59 write!(fmt, "char")?;
60 }
61 ValueTypeInfo::External(type_name) => {
62 write!(fmt, "{}", type_name)?;
63 }
64 ValueTypeInfo::Type => {
65 write!(fmt, "type")?;
66 }
67 ValueTypeInfo::Ptr => {
68 write!(fmt, "ptr")?;
69 }
70 ValueTypeInfo::Fn(hash) => {
71 write!(fmt, "fn({})", hash)?;
72 }
73 }
74
75 Ok(())
76 }
77}