diff --git a/libs/rust/Cargo.lock b/libs/rust/Cargo.lock index b8d8dc2..0367a03 100644 --- a/libs/rust/Cargo.lock +++ b/libs/rust/Cargo.lock @@ -4,7 +4,7 @@ version = 3 [[package]] name = "dalet" -version = "1.0.0-pre0" +version = "1.0.0-pre1" dependencies = [ "serde", ] diff --git a/libs/rust/Cargo.toml b/libs/rust/Cargo.toml index 90b5678..c738659 100644 --- a/libs/rust/Cargo.toml +++ b/libs/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dalet" -version = "1.0.0-pre0" +version = "1.0.0-pre1" edition = "2021" authors = ["artegoser"] license = "MIT" diff --git a/libs/rust/src/types.rs b/libs/rust/src/types.rs index f2c2638..198b61f 100644 --- a/libs/rust/src/types.rs +++ b/libs/rust/src/types.rs @@ -1,6 +1,6 @@ -use serde::{Deserialize, Serialize}; +use serde::Serialize; -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Debug)] pub struct Tag { id: i8, body: Body, @@ -13,16 +13,42 @@ impl Tag { } } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Debug)] pub enum Body { Text(String), Tag(Box), Null, } -#[derive(Serialize, Deserialize, Debug)] +impl Serialize for Body { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + match *self { + Body::Text(ref text) => serializer.serialize_str(text), + Body::Tag(ref tag) => tag.serialize(serializer), + Body::Null => serializer.serialize_str("null"), + } + } +} + +#[derive(Debug)] pub enum Argument { Text(String), Number(i8), Null, } + +impl Serialize for Argument { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + match *self { + Argument::Text(ref text) => serializer.serialize_str(text), + Argument::Number(number) => serializer.serialize_i8(number), + Argument::Null => serializer.serialize_str("null"), + } + } +}