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}