neco_server_core/
headers.rs1#[derive(Clone, Debug, Default, PartialEq, Eq)]
3pub struct HeaderMap {
4 entries: Vec<(String, String)>,
5}
6
7impl HeaderMap {
8 pub fn new() -> Self {
10 Self::default()
11 }
12
13 pub fn insert(&mut self, name: impl Into<String>, value: impl Into<String>) {
15 let name = name.into();
16 let value = value.into();
17 if let Some((_, existing)) = self
18 .entries
19 .iter_mut()
20 .find(|(existing_name, _)| existing_name.eq_ignore_ascii_case(&name))
21 {
22 *existing = value;
23 return;
24 }
25 self.entries.push((name, value));
26 }
27
28 pub fn get(&self, name: &str) -> Option<&str> {
30 self.entries
31 .iter()
32 .find(|(existing_name, _)| existing_name.eq_ignore_ascii_case(name))
33 .map(|(_, value)| value.as_str())
34 }
35
36 pub fn iter(&self) -> impl Iterator<Item = (&str, &str)> {
38 self.entries
39 .iter()
40 .map(|(name, value)| (name.as_str(), value.as_str()))
41 }
42}