sqlx_core_oldapi/postgres/message/
query.rs1use crate::io::{BufMutExt, Encode};
2
3#[derive(Debug)]
4pub struct Query<'a>(pub &'a str);
5
6impl Encode<'_> for Query<'_> {
7 fn encode_with(&self, buf: &mut Vec<u8>, _: ()) {
8 let len = 4 + self.0.len() + 1;
9 let len_i32 = i32::try_from(len).expect("buffer too large");
10 buf.reserve(len + 1);
11 buf.push(b'Q');
12 buf.extend_from_slice(&len_i32.to_be_bytes());
13 buf.put_str_nul(self.0);
14 }
15}
16
17#[test]
18fn test_encode_query() {
19 const EXPECTED: &[u8] = b"Q\0\0\0\rSELECT 1\0";
20
21 let mut buf = Vec::new();
22 let m = Query("SELECT 1");
23
24 m.encode(&mut buf);
25
26 assert_eq!(buf, EXPECTED);
27}