diff --git a/src/bytes.rs b/src/bytes.rs index 12872ec..2211387 100644 --- a/src/bytes.rs +++ b/src/bytes.rs @@ -12,7 +12,7 @@ use alloc::boxed::Box; #[cfg(any(feature = "std", feature = "alloc"))] use crate::ByteBuf; -use serde::de::{Deserialize, Deserializer, Error, Visitor}; +use serde::de::{Deserialize, Deserializer}; use serde::ser::{Serialize, Serializer}; /// Wrapper around `[u8]` to serialize and deserialize efficiently. @@ -161,35 +161,11 @@ impl Serialize for Bytes { } } -struct BytesVisitor; - -impl<'de> Visitor<'de> for BytesVisitor { - type Value = &'de Bytes; - - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter.write_str("a borrowed byte array") - } - - fn visit_borrowed_bytes(self, v: &'de [u8]) -> Result - where - E: Error, - { - Ok(Bytes::new(v)) - } - - fn visit_borrowed_str(self, v: &'de str) -> Result - where - E: Error, - { - Ok(Bytes::new(v.as_bytes())) - } -} - impl<'a, 'de: 'a> Deserialize<'de> for &'a Bytes { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { - deserializer.deserialize_bytes(BytesVisitor) + Deserialize::deserialize(deserializer).map(Bytes::new) } }