Skip to content

Commit 98ed9dc

Browse files
committed
Add FromIterator<HeaderName> to Vary header
1 parent 04e44af commit 98ed9dc

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

src/common/vary.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use http::{HeaderName, HeaderValue};
2+
use std::iter::FromIterator;
23

34
use crate::util::FlatCsv;
45

@@ -59,6 +60,15 @@ impl From<HeaderName> for Vary {
5960
}
6061
}
6162

63+
impl FromIterator<HeaderName> for Vary {
64+
fn from_iter<I>(iter: I) -> Self
65+
where
66+
I: IntoIterator<Item = HeaderName>,
67+
{
68+
Vary(iter.into_iter().map(HeaderValue::from).collect())
69+
}
70+
}
71+
6272
/*
6373
test_vary {
6474
test_header!(test1, vec![b"accept-encoding, accept-language"]);
@@ -80,10 +90,34 @@ test_vary {
8090

8191
#[cfg(test)]
8292
mod tests {
93+
use http::header::{ACCEPT_ENCODING, ACCEPT_LANGUAGE};
94+
8395
use super::*;
8496

8597
#[test]
8698
fn any_is_any() {
8799
assert!(Vary::any().is_any());
88100
}
101+
102+
#[test]
103+
fn from_header_name() {
104+
let vary = Vary::from(ACCEPT_ENCODING);
105+
106+
assert!(!vary.is_any());
107+
assert_eq!(
108+
vary.iter_strs().collect::<Vec<_>>(),
109+
vec![ACCEPT_ENCODING.as_str()]
110+
);
111+
}
112+
113+
#[test]
114+
fn from_iter_header_name() {
115+
let vary = Vary::from_iter([ACCEPT_ENCODING, ACCEPT_LANGUAGE]);
116+
117+
assert!(!vary.is_any());
118+
assert_eq!(
119+
vary.iter_strs().collect::<Vec<_>>(),
120+
vec![ACCEPT_ENCODING.as_str(), ACCEPT_LANGUAGE.as_str()]
121+
);
122+
}
89123
}

0 commit comments

Comments
 (0)