pub fn read_cookies(header: &str) -> Vec<(&str, &str)> {
header
.split(';')
.filter_map(|pair| {
let (name, value) = pair.split_once('=')?;
let (name, value) = (name.trim(), value.trim());
(!name.is_empty()).then_some((name, value))
})
.collect()
}
#[cfg(test)]
mod tests {
use super::read_cookies;
#[test]
fn reads_the_names_and_values_a_header_states() {
assert_eq!(read_cookies("session=abc; theme=dark"), [("session", "abc"), ("theme", "dark")]);
assert_eq!(read_cookies(" session = abc ;broken; theme=dark"), [("session", "abc"), ("theme", "dark")]);
assert!(read_cookies("").is_empty());
}
}