kvsd 0.1.3

Simple key value store
Documentation
use crate::common::Result;
use crate::protocol::message::{MessageFrames, MessageType, Parse};
use crate::protocol::{Key, Value};

#[derive(Debug, Clone, PartialEq)]
pub(crate) struct Set {
    pub(crate) key: Key,
    pub(crate) value: Value,
}

impl Set {
    pub(crate) fn new(key: Key, value: Value) -> Self {
        Self { key, value }
    }

    pub(crate) fn parse_frames(parse: &mut Parse) -> Result<Self> {
        let key = Key::new(parse.next_string()?)?;
        let value = Value::new(parse.next_bytes()?)?;

        Ok(Set::new(key, value))
    }
}
impl From<Set> for MessageFrames {
    fn from(set: Set) -> Self {
        let mut frames = MessageFrames::with_capacity(MessageType::Set, 2);

        frames.push_string(set.key.into_string());
        frames.push_bytes(set.value.into_boxed_bytes());

        frames
    }
}