Skip to content

Commit 9a02e17

Browse files
committed
More conversions for HeaderValues
1 parent 5ff049b commit 9a02e17

File tree

3 files changed

+40
-2
lines changed

3 files changed

+40
-2
lines changed

src/headers/header_value.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use std::fmt::{self, Display};
22
use std::str::FromStr;
33

4+
use crate::headers::HeaderValues;
45
use crate::Error;
56
use crate::{Cookie, Mime};
67

@@ -119,3 +120,9 @@ impl<'a> PartialEq<&String> for HeaderValue {
119120
&&self.inner == other
120121
}
121122
}
123+
124+
impl From<HeaderValues> for HeaderValue {
125+
fn from(other: HeaderValues) -> Self {
126+
other[0]
127+
}
128+
}

src/headers/header_values.rs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::headers::HeaderValue;
22
use std::fmt::{self, Display};
33
use std::iter::FromIterator;
4-
use std::ops::Index;
4+
use std::ops::{Deref, DerefMut, Index};
55
use std::slice::SliceIndex;
66

77
/// A list of `HeaderValue`s.
@@ -87,3 +87,34 @@ impl<'a> PartialEq<&String> for HeaderValues {
8787
&&self.inner[0] == other
8888
}
8989
}
90+
91+
impl From<HeaderValue> for HeaderValues {
92+
fn from(other: HeaderValue) -> Self {
93+
Self { inner: vec![other] }
94+
}
95+
}
96+
97+
impl AsRef<HeaderValue> for HeaderValues {
98+
fn as_ref(&self) -> &HeaderValue {
99+
&self.inner[0]
100+
}
101+
}
102+
103+
impl AsMut<HeaderValue> for HeaderValues {
104+
fn as_mut(&mut self) -> &mut HeaderValue {
105+
&mut self.inner[0]
106+
}
107+
}
108+
impl Deref for HeaderValues {
109+
type Target = HeaderValue;
110+
111+
fn deref(&self) -> &HeaderValue {
112+
&self.inner[0]
113+
}
114+
}
115+
116+
impl DerefMut for HeaderValues {
117+
fn deref_mut(&mut self) -> &mut HeaderValue {
118+
&mut self.inner[0]
119+
}
120+
}

src/headers/values.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::iter::Iterator;
33

44
use crate::headers::{HeaderName, HeaderValue, HeaderValues};
55

6-
/// Iterator over the headers.
6+
/// Iterator over the header values.
77
#[derive(Debug)]
88
pub struct Values<'a> {
99
pub(super) inner: hash_map::Values<'a, HeaderName, HeaderValues>,

0 commit comments

Comments
 (0)