diff options
| author | Max Audron <audron@cocaine.farm> | 2021-04-05 18:03:46 +0200 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2021-04-05 18:03:46 +0200 |
| commit | d7488b8040278c2cf9cd1b1eead206efe408cd9f (patch) | |
| tree | 1188190a730e6c0d4277c588545c5ff557afb3cd /src/primitive/variant.rs | |
| parent | WIP: impl signalproxy types (diff) | |
WIP: impl more signalproxy objects
Diffstat (limited to 'src/primitive/variant.rs')
| -rw-r--r-- | src/primitive/variant.rs | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/src/primitive/variant.rs b/src/primitive/variant.rs index 8a98d59..efe69b8 100644 --- a/src/primitive/variant.rs +++ b/src/primitive/variant.rs @@ -7,8 +7,7 @@ use log::{error, trace}; use crate::error::ProtocolError; use crate::primitive; use crate::primitive::StringList; -use crate::{Deserialize, DeserializeUTF8}; -use crate::{Serialize, SerializeUTF8}; +use crate::{deserialize::*, serialize::*}; use crate::primitive::{BufferInfo, Date, DateTime, Message, Time, VariantList, VariantMap}; @@ -35,6 +34,7 @@ pub enum Variant { DateTime(DateTime), VariantMap(VariantMap), VariantList(VariantList), + #[from(ignore)] String(String), #[from(ignore)] ByteArray(String), @@ -50,6 +50,32 @@ pub enum Variant { i8(i8), } +impl From<Variant> for String { + fn from(input: Variant) -> Self { + match input { + Variant::String(value) => value, + Variant::ByteArray(value) => value, + _ => panic!("unknown variant expected string or bytearray"), + } + } +} + +impl From<&Variant> for String { + fn from(input: &Variant) -> Self { + match input { + Variant::String(value) => value.clone(), + Variant::ByteArray(value) => value.clone(), + _ => panic!("unknown variant expected string or bytearray"), + } + } +} + +impl From<String> for Variant { + fn from(input: String) -> Self { + Self::String(input) + } +} + impl Serialize for Variant { fn serialize(&self) -> Result<Vec<u8>, Error> { let unknown: u8 = 0x00; |
