| 38 | /// Write a msgpack string (header + UTF-8 bytes). |
| 39 | #[inline] |
| 40 | pub fn write_str(buf: &mut Vec<u8>, s: &str) { |
| 41 | let bytes = s.as_bytes(); |
| 42 | let len = bytes.len(); |
| 43 | if len < 32 { |
| 44 | buf.push(0xA0 | len as u8); |
| 45 | } else if len <= u8::MAX as usize { |
| 46 | buf.push(0xD9); |
| 47 | buf.push(len as u8); |
| 48 | } else if len <= u16::MAX as usize { |
| 49 | buf.push(0xDA); |
| 50 | buf.extend_from_slice(&(len as u16).to_be_bytes()); |
| 51 | } else { |
| 52 | buf.push(0xDB); |
| 53 | buf.extend_from_slice(&(len as u32).to_be_bytes()); |
| 54 | } |
| 55 | buf.extend_from_slice(bytes); |
| 56 | } |
| 57 | |
| 58 | /// Write a msgpack integer using the most compact encoding. |
| 59 | #[inline] |