From ddd4552e09accb1d7d5823f69151e2156f35a764 Mon Sep 17 00:00:00 2001 From: alemi Date: Wed, 21 Aug 2024 20:16:14 +0200 Subject: [PATCH] feat: represent uuids with u64 pairs --- proto/common.proto | 4 ++-- src/lib.rs | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/proto/common.proto b/proto/common.proto index adae915..0b45c4d 100644 --- a/proto/common.proto +++ b/proto/common.proto @@ -4,8 +4,8 @@ package common; // a wrapper payload representing an uuid message Identity { - // uuid bytes, as string - required string id = 1; + required uint64 hi = 1; + required uint64 lo = 2; } // a collection of identities diff --git a/src/lib.rs b/src/lib.rs index fb4c737..fed3963 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,25 +4,27 @@ pub mod common { impl From for Identity { fn from(id: uuid::Uuid) -> Self { - Identity { id: id.to_string() } + let (hi, lo) = id.as_u64_pair(); + Identity { hi, lo } } } impl From<&uuid::Uuid> for Identity { fn from(id: &uuid::Uuid) -> Self { - Identity { id: id.to_string() } + let (hi, lo) = id.as_u64_pair(); + Identity { hi, lo } } } impl From for uuid::Uuid { fn from(value: Identity) -> Self { - uuid::Uuid::parse_str(&value.id).expect("invalid uuid in identity") + uuid::Uuid::from_u64_pair(value.hi, value.lo) } } impl From<&Identity> for uuid::Uuid { fn from(value: &Identity) -> Self { - uuid::Uuid::parse_str(&value.id).expect("invalid uuid in identity") + uuid::Uuid::from_u64_pair(value.hi, value.lo) } } }