@@ -9,6 +9,7 @@ use serde::{
99 Deserialize , Serialize ,
1010} ;
1111use std:: { collections:: BTreeMap , ops:: Deref , sync:: Arc } ;
12+ use uuid:: Uuid ;
1213
1314#[ derive( Debug , Clone , Copy , PartialEq , Eq , Hash , PartialOrd , Ord ) ]
1415pub struct RangeValue {
@@ -76,6 +77,7 @@ pub enum KeyValue {
7677 Bool ( bool ) ,
7778 Int64 ( i64 ) ,
7879 Range ( RangeValue ) ,
80+ Uuid ( Uuid ) ,
7981 Struct ( Vec < KeyValue > ) ,
8082}
8183
@@ -141,6 +143,7 @@ impl std::fmt::Display for KeyValue {
141143 KeyValue :: Bool ( v) => write ! ( f, "{}" , v) ,
142144 KeyValue :: Int64 ( v) => write ! ( f, "{}" , v) ,
143145 KeyValue :: Range ( v) => write ! ( f, "[{}, {})" , v. start, v. end) ,
146+ KeyValue :: Uuid ( v) => write ! ( f, "{}" , v) ,
144147 KeyValue :: Struct ( v) => {
145148 write ! (
146149 f,
@@ -205,6 +208,7 @@ impl KeyValue {
205208 output. push ( v. start . to_string ( ) ) ;
206209 output. push ( v. end . to_string ( ) ) ;
207210 }
211+ KeyValue :: Uuid ( v) => output. push ( v. to_string ( ) ) ,
208212 KeyValue :: Struct ( v) => {
209213 for part in v {
210214 part. parts_to_strs ( output) ;
@@ -235,6 +239,7 @@ impl KeyValue {
235239 KeyValue :: Bool ( _) => "bool" ,
236240 KeyValue :: Int64 ( _) => "int64" ,
237241 KeyValue :: Range { .. } => "range" ,
242+ KeyValue :: Uuid ( _) => "uuid" ,
238243 KeyValue :: Struct ( _) => "struct" ,
239244 }
240245 }
@@ -299,6 +304,7 @@ pub enum BasicValue {
299304 Float32 ( f32 ) ,
300305 Float64 ( f64 ) ,
301306 Range ( RangeValue ) ,
307+ Uuid ( Uuid ) ,
302308 Json ( Arc < serde_json:: Value > ) ,
303309 Vector ( Arc < [ BasicValue ] > ) ,
304310}
@@ -373,6 +379,7 @@ impl BasicValue {
373379 BasicValue :: Bool ( v) => KeyValue :: Bool ( v) ,
374380 BasicValue :: Int64 ( v) => KeyValue :: Int64 ( v) ,
375381 BasicValue :: Range ( v) => KeyValue :: Range ( v) ,
382+ BasicValue :: Uuid ( v) => KeyValue :: Uuid ( v) ,
376383 BasicValue :: Float32 ( _)
377384 | BasicValue :: Float64 ( _)
378385 | BasicValue :: Json ( _)
@@ -388,6 +395,7 @@ impl BasicValue {
388395 BasicValue :: Bool ( v) => KeyValue :: Bool ( * v) ,
389396 BasicValue :: Int64 ( v) => KeyValue :: Int64 ( * v) ,
390397 BasicValue :: Range ( v) => KeyValue :: Range ( * v) ,
398+ BasicValue :: Uuid ( v) => KeyValue :: Uuid ( * v) ,
391399 BasicValue :: Float32 ( _)
392400 | BasicValue :: Float64 ( _)
393401 | BasicValue :: Json ( _)
@@ -405,6 +413,7 @@ impl BasicValue {
405413 BasicValue :: Float32 ( _) => "float32" ,
406414 BasicValue :: Float64 ( _) => "float64" ,
407415 BasicValue :: Range ( _) => "range" ,
416+ BasicValue :: Uuid ( _) => "uuid" ,
408417 BasicValue :: Json ( _) => "json" ,
409418 BasicValue :: Vector ( _) => "vector" ,
410419 }
@@ -436,6 +445,7 @@ impl From<KeyValue> for Value {
436445 KeyValue :: Bool ( v) => Value :: Basic ( BasicValue :: Bool ( v) ) ,
437446 KeyValue :: Int64 ( v) => Value :: Basic ( BasicValue :: Int64 ( v) ) ,
438447 KeyValue :: Range ( v) => Value :: Basic ( BasicValue :: Range ( v) ) ,
448+ KeyValue :: Uuid ( v) => Value :: Basic ( BasicValue :: Uuid ( v) ) ,
439449 KeyValue :: Struct ( v) => Value :: Struct ( FieldValues {
440450 fields : v. into_iter ( ) . map ( Value :: from) . collect ( ) ,
441451 } ) ,
@@ -734,6 +744,7 @@ impl serde::Serialize for BasicValue {
734744 BasicValue :: Float32 ( v) => serializer. serialize_f32 ( * v) ,
735745 BasicValue :: Float64 ( v) => serializer. serialize_f64 ( * v) ,
736746 BasicValue :: Range ( v) => v. serialize ( serializer) ,
747+ BasicValue :: Uuid ( v) => serializer. serialize_str ( & v. to_string ( ) ) ,
737748 BasicValue :: Json ( v) => v. serialize ( serializer) ,
738749 BasicValue :: Vector ( v) => v. serialize ( serializer) ,
739750 }
0 commit comments