Skip to main content

reifydb_type/value/
as_string.rs

1// SPDX-License-Identifier: AGPL-3.0-or-later
2// Copyright (c) 2025 ReifyDB
3
4use 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::Uint1(u) => u.to_string(),
26			Value::Uint2(u) => u.to_string(),
27			Value::Uint4(u) => u.to_string(),
28			Value::Uint8(u) => u.to_string(),
29			Value::Uint16(u) => u.to_string(),
30			Value::Date(d) => d.to_string(),
31			Value::DateTime(dt) => dt.to_string(),
32			Value::Time(t) => t.to_string(),
33			Value::Duration(i) => i.to_string(),
34			Value::IdentityId(id) => id.to_string(),
35			Value::Uuid4(u) => u.to_string(),
36			Value::Uuid7(u) => u.to_string(),
37			Value::Blob(b) => b.to_string(),
38			Value::Int(bi) => bi.to_string(),
39			Value::Uint(bu) => bu.to_string(),
40			Value::Decimal(bd) => bd.to_string(),
41			Value::DictionaryId(id) => id.to_string(),
42			Value::Type(t) => t.to_string(),
43			Value::Any(v) => v.as_string(),
44		}
45	}
46}
47
48impl Value {
49	pub fn as_string(&self) -> String {
50		AsString::as_string(self)
51	}
52}