mclib 0.0.1

Utils and helpers for Minecraft protocol
Documentation
use crate::types::base::MCType;
use crate::types::boolean::MCBoolean;
use std::io::Read;

impl<P: MCType> MCType for Option<P> {
    fn pack(&self) -> Vec<u8> {
        match self {
            None => MCBoolean::from(false).pack(),
            Some(inner) => {
                let mut result = Vec::new();
                result.extend(MCBoolean::from(true).pack());
                result.extend(inner.pack());
                result
            }
        }
    }

    fn unpack(src: &mut dyn Read) -> Self {
        let is_some = MCBoolean::unpack(src);
        if is_some.into() {
            Some(P::unpack(src))
        } else {
            None
        }
    }
}