use crate::*;
use payload::*;
impl PayloadSize for String {
fn size(&self, _: &mut Self::Context<'_>) -> std::io::Result<u64> {
Ok(self.len() as u64)
}
}
impl PayloadCrc for String {}
impl PayloadSignature for String {
fn sig(&self) -> ByteBlock {
<String as StaticPayloadSignature>::ssig()
}
}
impl StaticPayloadSignature for String {
fn ssig() -> ByteBlock {
let mut hasher = crc32fast::Hasher::new();
hasher.update("String".as_bytes());
ByteBlock::Len4(hasher.finalize().to_le_bytes())
}
}
impl PayloadSchema for String {
type Context<'a> = DefaultPayloadContext;
}
impl PayloadEncode for String {
fn encode(&self, _: &mut Self::Context<'_>) -> std::io::Result<Vec<u8>> {
Ok(self.as_bytes().to_vec())
}
}
impl PayloadEncodeReferred for String {
fn encode(&self, _: &mut Self::Context<'_>) -> std::io::Result<Option<&[u8]>> {
Ok(Some(self.as_bytes()))
}
}
impl PayloadDecode<String> for String {
fn decode(buf: &[u8], _: &mut Self::Context<'_>) -> std::io::Result<String> {
Ok(String::from_utf8_lossy(buf).to_string())
}
}
impl ReadPayloadFrom<String> for String {}
impl TryReadPayloadFrom<String> for String {}
impl TryReadPayloadFromBuffered<String> for String {}
impl WritePayloadWithHeaderTo for String {}
impl WriteVectoredPayloadWithHeaderTo for String {}
impl PayloadHooks for String {}