reifydb_value/value/
as_string.rs1use crate::value::Value;
5
6pub trait AsString {
7 fn as_string(&self) -> String;
8}
9
10impl AsString for Value {
11 fn as_string(&self) -> String {
12 match self {
13 Value::None {
14 ..
15 } => "none".to_string(),
16 Value::Boolean(b) => b.to_string(),
17 Value::Float4(f) => f.to_string(),
18 Value::Float8(f) => f.to_string(),
19 Value::Int1(i) => i.to_string(),
20 Value::Int2(i) => i.to_string(),
21 Value::Int4(i) => i.to_string(),
22 Value::Int8(i) => i.to_string(),
23 Value::Int16(i) => i.to_string(),
24 Value::Utf8(s) => s.clone(),
25 Value::Enum(value) => value.variant.clone(),
26 Value::Uint1(u) => u.to_string(),
27 Value::Uint2(u) => u.to_string(),
28 Value::Uint4(u) => u.to_string(),
29 Value::Uint8(u) => u.to_string(),
30 Value::Uint16(u) => u.to_string(),
31 Value::Date(d) => d.to_string(),
32 Value::DateTime(dt) => dt.to_string(),
33 Value::Time(t) => t.to_string(),
34 Value::Duration(i) => i.to_string(),
35 Value::IdentityId(id) => id.to_string(),
36 Value::Uuid4(u) => u.to_string(),
37 Value::Uuid7(u) => u.to_string(),
38 Value::Blob(b) => b.to_string(),
39 Value::Decimal(bd) => bd.to_string(),
40 Value::DictionaryId(id) => id.to_string(),
41 Value::Type(t) => t.to_string(),
42 Value::Any(v) => v.as_string(),
43 Value::List(items) => {
44 let inner: Vec<String> = items.iter().map(|v| v.as_string()).collect();
45 format!("[{}]", inner.join(", "))
46 }
47 Value::Tuple(items) => {
48 let inner: Vec<String> = items.iter().map(|v| v.as_string()).collect();
49 format!("({})", inner.join(", "))
50 }
51 Value::Record(fields) => {
52 let inner: Vec<String> =
53 fields.iter().map(|(k, v)| format!("{}: {}", k, v.as_string())).collect();
54 format!("{{{}}}", inner.join(", "))
55 }
56 Value::Digest(_) => self.to_string(),
57 }
58 }
59}
60
61impl Value {
62 pub fn as_string(&self) -> String {
63 AsString::as_string(self)
64 }
65}