use crate::{
dump::{Dump, FrameTarget, FrameWriter},
grab::{FrameReader, Grab},
};
pub struct ShortStr<'a>(pub &'a str);
impl<'a> Dump for ShortStr<'a> {
fn dump_to<T: FrameTarget>(&self, writer: &mut FrameWriter<T>) {
let bytes = self.0.as_bytes();
writer.write(bytes.len() as u8);
writer.write_bytes(bytes);
}
}
impl<'a> Grab<'a> for ShortStr<'a> {
fn grab_from(reader: &mut FrameReader<'a>) -> Option<ShortStr<'a>> {
let len = reader.read::<u8>()? as usize;
let bytes = reader.read_bytes(len)?;
let text = std::str::from_utf8(bytes).ok()?;
Some(ShortStr(text))
}
}