stream_httparse/
header.rs1mod key;
2pub use key::HeaderKey;
3mod value;
4pub use value::HeaderValue;
5
6#[derive(Clone, Debug)]
8pub struct Header<'a> {
9 pub key: HeaderKey<'a>,
11 pub value: HeaderValue<'a>,
13}
14
15impl PartialEq for Header<'_> {
16 fn eq(&self, other: &Self) -> bool {
17 self.key.eq(&other.key)
18 }
19}
20
21impl<'a> Header<'a> {
22 pub fn serialize(&self, buf: &mut Vec<u8>) {
25 self.key.serialize(buf);
26 buf.extend_from_slice(": ".as_bytes());
27 self.value.serialize(buf);
28 buf.extend_from_slice("\r\n".as_bytes());
29 }
30
31 pub fn to_owned<'refed, 'owned>(&'refed self) -> Header<'owned> {
34 Header {
35 key: self.key.to_owned(),
36 value: self.value.to_owned(),
37 }
38 }
39}
40
41#[cfg(test)]
42mod tests {
43 use super::*;
44
45 #[test]
46 fn compare() {
47 assert_eq!(
48 Header {
49 key: HeaderKey::StrRef("test"),
50 value: HeaderValue::StrRef("value"),
51 },
52 Header {
53 key: HeaderKey::StrRef("test"),
54 value: HeaderValue::StrRef("some other value"),
55 }
56 );
57 }
58
59 #[test]
60 fn serialize() {
61 let header = Header {
62 key: HeaderKey::StrRef("test-key"),
63 value: HeaderValue::StrRef("test-value"),
64 };
65
66 let mut buf: Vec<u8> = Vec::new();
67 header.serialize(&mut buf);
68 assert_eq!("test-key: test-value\r\n".as_bytes(), &buf);
69 }
70}