use super::prelude::*; #[derive(Debug)] pub struct QEnvironmentHexEncoded<'a> { pub key: &'a [u8], pub value: Option<&'a [u8]>, } impl<'a> ParseCommand<'a> for QEnvironmentHexEncoded<'a> { fn from_packet(buf: PacketBuf<'a>) -> Option { let body = buf.into_body(); let (key, value) = match body { [b':', keyval @ ..] => { let keyval = decode_hex_buf(keyval).ok()?; let mut keyval = keyval.splitn(2, |b| *b == b'='); let key = keyval.next()?; let value = match keyval.next()? { [] => None, s => Some(s), }; (key, value) } _ => return None, }; Some(QEnvironmentHexEncoded { key, value }) } }