nodedb_types/value/
display.rs1use std::fmt;
6
7use crate::value::core::Value;
8
9impl fmt::Display for Value {
10 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
11 match self {
12 Value::Vector(v) => {
13 write!(f, "vector(")?;
14 let show = v.len().min(8);
15 for (i, elem) in v[..show].iter().enumerate() {
16 if i > 0 {
17 write!(f, ", ")?;
18 }
19 write!(f, "{elem}")?;
20 }
21 if v.len() > 8 {
22 write!(f, ", … ({} total)", v.len())?;
23 }
24 write!(f, ")")
25 }
26 Value::Null => write!(f, "null"),
27 Value::Bool(b) => write!(f, "{b}"),
28 Value::Integer(i) => write!(f, "{i}"),
29 Value::Float(fl) => write!(f, "{fl}"),
30 Value::String(s) | Value::Uuid(s) | Value::Ulid(s) | Value::Regex(s) => {
31 write!(f, "{s}")
32 }
33 Value::Bytes(b) => write!(f, "<bytes:{}>", b.len()),
34 Value::Array(arr) | Value::Set(arr) => {
35 write!(f, "[")?;
36 for (i, v) in arr.iter().enumerate() {
37 if i > 0 {
38 write!(f, ", ")?;
39 }
40 write!(f, "{v}")?;
41 }
42 write!(f, "]")
43 }
44 Value::Object(map) => {
45 write!(f, "{{")?;
46 for (i, (k, v)) in map.iter().enumerate() {
47 if i > 0 {
48 write!(f, ", ")?;
49 }
50 write!(f, "{k}: {v}")?;
51 }
52 write!(f, "}}")
53 }
54 Value::DateTime(dt) | Value::NaiveDateTime(dt) => write!(f, "{dt}"),
55 Value::Duration(d) => write!(f, "{d}"),
56 Value::Decimal(d) => write!(f, "{d}"),
57 Value::Geometry(g) => write!(f, "{g:?}"),
58 Value::Range {
59 start,
60 end,
61 inclusive,
62 } => {
63 if let Some(s) = start {
64 write!(f, "{s}")?;
65 }
66 if *inclusive {
67 write!(f, "..=")?;
68 } else {
69 write!(f, "..")?;
70 }
71 if let Some(e) = end {
72 write!(f, "{e}")?;
73 }
74 Ok(())
75 }
76 Value::Record { table, id } => write!(f, "{table}:{id}"),
77 Value::ArrayCell(cell) => write!(f, "<array_cell coords={}>", cell.coords.len()),
78 }
79 }
80}