Expand description
Utilities to serialize/deserialize types.
§Implementing a serializer/deserializer
use std::convert::Infallible;
use channels_serdes::{Serializer, Deserializer};
struct MyI32;
#[derive(Debug, PartialEq, Eq)]
enum I32DeserializeError {
NotEnough,
}
impl Serializer<i32> for MyI32 {
type Error = Infallible; // serializing an i32 cannot fail
fn serialize(&mut self, t: &i32) -> Result<Vec<u8>, Self::Error> {
let vec = t.to_be_bytes().to_vec();
Ok(vec)
}
}
impl Deserializer<i32> for MyI32 {
type Error = I32DeserializeError;
fn deserialize(&mut self, buf: &mut [u8]) -> Result<i32, Self::Error> {
buf.get(..4)
.map(|slice| -> [u8; 4] { slice.try_into().unwrap() })
.map(i32::from_be_bytes)
.ok_or(I32DeserializeError::NotEnough)
}
}
let mut sd = MyI32;
let mut serialized: Vec<u8> = sd.serialize(&42).unwrap();
assert_eq!(serialized, [0, 0, 0, 42]);
let deserialized = sd.deserialize(&mut serialized[..]);
assert_eq!(deserialized, Ok(42));Re-exports§
pub use self::bincode::Bincode;bincodepub use self::cbor::Cbor;cborpub use self::json::Json;jsonpub use self::borsh::Borsh;borshpub use self::crc::Crc;crcpub use self::deflate::Deflate;deflatepub use self::hmac::Hmac;hmac
Modules§
- aead
aead - Middleware that encrypts data for transport.
- bincode
bincode - The
bincodeserializer which automatically works with all types that implementserde::Serializeandserde::Deserialize. - borsh
borsh - The
borshserializer which automatically works with all types that implementborsh::BorshSerializeandborsh::BorshDeserialize. - cbor
cbor - The
ciboriumserializer which automatically works with all types that implementserde::Serializeandserde::Deserialize. - crc
crc - Middleware that verifies data with a CRC checksum.
- deflate
deflate - Middleware that compresses data with DEFLATE.
- hmac
hmac - Middleware that verifies data with HMAC.
- json
json - The
serde_jsonserializer which automatically works with all types that implementserde::Serializeandserde::Deserialize.
Traits§
- Deserializer
- The
Deserializertrait allows converting a byte slice to a typeT. - Serializer
- The
Serializertrait allows converting a typeTto safe-to-transport byte sequences.