From 85a57a24264f58abee12fe7925d37374bb49319d Mon Sep 17 00:00:00 2001 From: "Augusto F. Hack" Date: Mon, 11 Mar 2024 14:13:52 +0100 Subject: [PATCH] serde: add impl for String --- utils/core/src/serde/mod.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/utils/core/src/serde/mod.rs b/utils/core/src/serde/mod.rs index 8ee06482a..910fd30d8 100644 --- a/utils/core/src/serde/mod.rs +++ b/utils/core/src/serde/mod.rs @@ -209,6 +209,13 @@ impl Serializable for BTreeSet { } } +impl Serializable for String { + fn write_into(&self, target: &mut W) { + target.write_usize(self.len()); + target.write_many(self.as_bytes()); + } +} + // DESERIALIZABLE // ================================================================================================ @@ -422,3 +429,13 @@ impl Deserializable for BTreeSet { Ok(BTreeSet::from_iter(data)) } } + +impl Deserializable for String { + fn read_from(source: &mut R) -> Result { + let len = source.read_usize()?; + let data = source.read_many(len)?; + + String::from_utf8(data) + .map_err(|err| DeserializationError::InvalidValue(format!("{}", err))) + } +}