toe_beans/v4/message/options/
max_message.rs1use crate::v4::error::Result;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
10pub struct MaxMessage(u16);
11
12impl MaxMessage {
13 pub fn new(size: u16) -> Result<Self> {
15 if size < 576 {
16 return Err("Maximum message size must be at least 576");
17 }
18
19 Ok(Self(size))
20 }
21
22 #[inline]
24 pub fn extend_into(&self, bytes: &mut Vec<u8>, tag: u8) {
25 bytes.push(tag); bytes.push(2); bytes.extend_from_slice(&self.0.to_be_bytes()); }
29}
30
31impl From<&[u8]> for MaxMessage {
32 fn from(value: &[u8]) -> Self {
33 let bytes: [u8; 2] = value.try_into().unwrap();
34 Self(u16::from_be_bytes(bytes))
35 }
36}