1use serde::de::{Deserializer, Visitor};
2use error::{Error, ResultE};
3
4#[derive(Debug)]
7pub enum OscType {
8 I32(i32),
9 F32(f32),
10 String(String),
11 Blob(Vec<u8>),
12}
13
14
15impl<'de> Deserializer<'de> for OscType {
16 type Error = Error;
17 fn deserialize_any<V>(self, visitor: V) -> ResultE<V::Value>
19 where
20 V: Visitor<'de>
21 {
22 match self {
23 OscType::I32(i) => visitor.visit_i32(i),
24 OscType::F32(f) => visitor.visit_f32(f),
25 OscType::String(s) => visitor.visit_string(s),
26 OscType::Blob(b) => visitor.visit_byte_buf(b),
30 }
31 }
32
33 forward_to_deserialize_any! {
36 bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string unit option
37 seq bytes byte_buf map unit_struct newtype_struct
38 tuple_struct struct identifier tuple enum ignored_any
39 }
40}
41
42