scatter_net/legacy/packet/methods/
from_bytes.rs

1use anyhow::Result;
2use ps_deflate::decompress;
3
4use crate::Packet;
5
6impl Packet {
7    pub fn from_bytes<B>(bytes: B) -> Result<Self>
8    where
9        B: AsRef<[u8]>,
10    {
11        let bytes = bytes.as_ref();
12
13        let size = bytes.get(4..8).unwrap_or(&[]).try_into()?;
14        let size = usize::try_from(u32::from_be_bytes(size))?;
15
16        let bytes = decompress(&bytes[8..], size)?;
17
18        let packet = bitcode::deserialize(&bytes)?;
19
20        Ok(packet)
21    }
22}