use axum::http::{HeaderName, HeaderValue}; pub struct LastEventId(pub String); static LAST_EVENT_ID: HeaderName = HeaderName::from_static("last-event-id"); impl headers::Header for LastEventId { fn name() -> &'static HeaderName { &LAST_EVENT_ID } fn decode<'i, I>(values: &mut I) -> Result where I: Iterator, { let value = values.next().ok_or_else(headers::Error::invalid)?; if let Ok(value) = value.to_str() { Ok(Self(value.into())) } else { Err(headers::Error::invalid()) } } fn encode(&self, values: &mut E) where E: Extend, { let Self(value) = self; // Must panic or suppress; the trait provides no other options. let value = HeaderValue::from_str(value).expect("LastEventId is a valid header value"); values.extend(std::iter::once(value)); } }