pub struct ByteVec;Expand description
Adapter for contiguous byte sequences that can be converted from Vec<u8>
Bytes is preferred if the type to serialize is an array. It avoids allocating a Vec when
deserializing.
This allows optimized handling of byte sequences when serializing. This is similar to
serde_bytes. Practically, this adapter allows serialization of
bytes to go through Serializer::serialize_bytes and deserialization through
Deserializer::deserialize_bytes or Deserializer::deserialize_byte_buf.
This adapter always serializes as a serde variable-length byte sequence, even if the collection type to serialize has a statically known length.
§Example
use serde::{Deserialize, Serialize};
struct ByteWrapper(Vec<u8>);
impl From<Vec<u8>> for ByteWrapper {
fn from(v: Vec<u8>) -> Self {
Self(v)
}
}
impl AsRef<[u8]> for ByteWrapper {
fn as_ref(&self) -> &[u8] {
&self.0
}
}
#[derive(Deserialize, Serialize)]
struct Foo {
#[serde(with = "serdapt::ByteVec")]
bytes: ByteWrapper,
}Implementations§
Source§impl ByteVec
impl ByteVec
Sourcepub fn serialize<T, S>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
pub fn serialize<T, S>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
Serializes value as bytes
Sourcepub fn deserialize<'de, T, D>(deserializer: D) -> Result<T, D::Error>where
D: Deserializer<'de>,
Self: DeserializeWith<'de, T>,
pub fn deserialize<'de, T, D>(deserializer: D) -> Result<T, D::Error>where
D: Deserializer<'de>,
Self: DeserializeWith<'de, T>,
Deserializes value from bytes
Trait Implementations§
Source§impl<'de, T> DeserializeWith<'de, T> for ByteVec
impl<'de, T> DeserializeWith<'de, T> for ByteVec
Source§fn deserialize_with<D>(deserializer: D) -> Result<T, D::Error>where
D: Deserializer<'de>,
fn deserialize_with<D>(deserializer: D) -> Result<T, D::Error>where
D: Deserializer<'de>,
Deserializes a value using
deserializerSource§impl<T> SerializeWith<T> for ByteVec
impl<T> SerializeWith<T> for ByteVec
Source§fn serialize_with<S: Serializer>(
value: &T,
serializer: S,
) -> Result<S::Ok, S::Error>
fn serialize_with<S: Serializer>( value: &T, serializer: S, ) -> Result<S::Ok, S::Error>
Serializes
value using serializerAuto Trait Implementations§
impl Freeze for ByteVec
impl RefUnwindSafe for ByteVec
impl Send for ByteVec
impl Sync for ByteVec
impl Unpin for ByteVec
impl UnwindSafe for ByteVec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more