1use core::fmt;
2
3pub const SEP: &str = "&";
4pub const EQ: &str = "=";
5
6#[inline]
7pub fn push_pair(key: &str, value: &str, out: &mut Vec<u8>) {
8 out.reserve(key.len() + value.len() + 1);
9
10 if !out.is_empty() {
11 out.extend_from_slice(SEP.as_bytes());
12 }
13
14 for part in form_urlencoded::byte_serialize(key.as_bytes()) {
15 out.extend_from_slice(part.as_bytes());
16 }
17 out.extend_from_slice(EQ.as_bytes());
18 for part in form_urlencoded::byte_serialize(value.as_bytes()) {
19 out.extend_from_slice(part.as_bytes());
20 }
21}
22
23#[inline]
24pub fn format_pair(key: &str, value: &str, fmt: &mut fmt::Formatter) -> fmt::Result {
25 for part in form_urlencoded::byte_serialize(key.as_bytes()) {
26 fmt.write_str(part)?;
27 }
28 fmt.write_str(EQ)?;
29 for part in form_urlencoded::byte_serialize(value.as_bytes()) {
30 fmt.write_str(part)?;
31 }
32
33 Ok(())
34}