use super::prelude::*; use crate::protocol::common::thread_id::ThreadId; use crate::protocol::ConcreteThreadId; #[derive(Debug)] pub struct qThreadExtraInfo<'a> { pub id: ConcreteThreadId, pub buf: &'a mut [u8], } impl<'a> ParseCommand<'a> for qThreadExtraInfo<'a> { #[inline(always)] fn from_packet(buf: PacketBuf<'a>) -> Option { let (buf, body_range) = buf.into_raw_buf(); let body = buf.get(body_range.start..body_range.end)?; if body.is_empty() { return None; } match body { [b',', body @ ..] => { let id = ConcreteThreadId::try_from(ThreadId::try_from(body).ok()?).ok()?; Some(qThreadExtraInfo { id, buf }) } _ => None, } } }