small_http/
header_map.rs

1/*
2 * Copyright (c) 2025 Bastiaan van der Plaat
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7/// HeaderMap
8#[derive(Default, Clone)]
9pub struct HeaderMap(Vec<(String, String)>);
10
11impl HeaderMap {
12    /// Create new HeaderMap
13    pub fn new() -> Self {
14        Self::default()
15    }
16
17    /// Get header value
18    pub fn get(&self, name: &str) -> Option<&str> {
19        self.0
20            .iter()
21            .find(|(n, _)| n.eq_ignore_ascii_case(name))
22            .map(|(_, v)| v.as_str())
23    }
24
25    /// Insert header
26    pub fn insert(&mut self, name: String, value: String) {
27        self.0.push((name, value));
28    }
29
30    /// Iterate over headers
31    pub fn iter(&self) -> impl Iterator<Item = (&str, &str)> {
32        self.0.iter().map(|(n, v)| (n.as_str(), v.as_str()))
33    }
34}