aboutsummaryrefslogtreecommitdiff
path: root/src/primitive/variant.rs
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2021-04-05 18:03:46 +0200
committerMax Audron <audron@cocaine.farm>2021-04-05 18:03:46 +0200
commitd7488b8040278c2cf9cd1b1eead206efe408cd9f (patch)
tree1188190a730e6c0d4277c588545c5ff557afb3cd /src/primitive/variant.rs
parentWIP: impl signalproxy types (diff)
WIP: impl more signalproxy objects
Diffstat (limited to 'src/primitive/variant.rs')
-rw-r--r--src/primitive/variant.rs30
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;