sqlx_core/mysql/io/
buf.rs1use bytes::{Buf, Bytes};
2
3use crate::error::Error;
4use crate::io::BufExt;
5
6pub trait MySqlBufExt: Buf {
7 fn get_uint_lenenc(&mut self) -> u64;
12
13 fn get_str_lenenc(&mut self) -> Result<String, Error>;
15
16 fn get_bytes_lenenc(&mut self) -> Bytes;
18}
19
20impl MySqlBufExt for Bytes {
21 fn get_uint_lenenc(&mut self) -> u64 {
22 match self.get_u8() {
23 0xfc => u64::from(self.get_u16_le()),
24 0xfd => self.get_uint_le(3),
25 0xfe => self.get_u64_le(),
26
27 v => u64::from(v),
28 }
29 }
30
31 fn get_str_lenenc(&mut self) -> Result<String, Error> {
32 let size = self.get_uint_lenenc();
33 self.get_str(size as usize)
34 }
35
36 fn get_bytes_lenenc(&mut self) -> Bytes {
37 let size = self.get_uint_lenenc();
38 self.split_to(size as usize)
39 }
40}