- ($msg: expr, $msg_code: expr) => {
- {
- let just_msg = $msg.encode();
- let mut encoded_msg = Vec::with_capacity(just_msg.len() + 2);
- encoded_msg.extend_from_slice(&byte_utils::be16_to_array($msg_code));
- encoded_msg.extend_from_slice(&just_msg[..]);
- encoded_msg
- }
- }
+ ($msg: expr, $msg_code: expr) => {{
+ let mut w = Writer::new(::std::io::Cursor::new(vec![]));
+ 0u16.write(&mut w).unwrap();
+ $msg.write(&mut w).unwrap();
+ let mut msg = w.into_inner().into_inner();
+ let len = msg.len();
+ msg[..2].copy_from_slice(&byte_utils::be16_to_array(len as u16 - 2));
+ msg
+ }}