actix_http/header/
into_value.rs1use bytes::Bytes;
4use http::{header::InvalidHeaderValue, Error as HttpError, HeaderValue};
5use mime::Mime;
6
7pub trait TryIntoHeaderValue: Sized {
9 type Error: Into<HttpError>;
11
12 fn try_into_value(self) -> Result<HeaderValue, Self::Error>;
14}
15
16impl TryIntoHeaderValue for HeaderValue {
17 type Error = InvalidHeaderValue;
18
19 #[inline]
20 fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
21 Ok(self)
22 }
23}
24
25impl TryIntoHeaderValue for &HeaderValue {
26 type Error = InvalidHeaderValue;
27
28 #[inline]
29 fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
30 Ok(self.clone())
31 }
32}
33
34impl TryIntoHeaderValue for &str {
35 type Error = InvalidHeaderValue;
36
37 #[inline]
38 fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
39 self.parse()
40 }
41}
42
43impl TryIntoHeaderValue for &[u8] {
44 type Error = InvalidHeaderValue;
45
46 #[inline]
47 fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
48 HeaderValue::from_bytes(self)
49 }
50}
51
52impl TryIntoHeaderValue for Bytes {
53 type Error = InvalidHeaderValue;
54
55 #[inline]
56 fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
57 HeaderValue::from_maybe_shared(self)
58 }
59}
60
61impl TryIntoHeaderValue for Vec<u8> {
62 type Error = InvalidHeaderValue;
63
64 #[inline]
65 fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
66 HeaderValue::try_from(self)
67 }
68}
69
70impl TryIntoHeaderValue for String {
71 type Error = InvalidHeaderValue;
72
73 #[inline]
74 fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
75 HeaderValue::try_from(self)
76 }
77}
78
79impl TryIntoHeaderValue for usize {
80 type Error = InvalidHeaderValue;
81
82 #[inline]
83 fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
84 HeaderValue::try_from(self.to_string())
85 }
86}
87
88impl TryIntoHeaderValue for i64 {
89 type Error = InvalidHeaderValue;
90
91 #[inline]
92 fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
93 HeaderValue::try_from(self.to_string())
94 }
95}
96
97impl TryIntoHeaderValue for u64 {
98 type Error = InvalidHeaderValue;
99
100 #[inline]
101 fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
102 HeaderValue::try_from(self.to_string())
103 }
104}
105
106impl TryIntoHeaderValue for i32 {
107 type Error = InvalidHeaderValue;
108
109 #[inline]
110 fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
111 HeaderValue::try_from(self.to_string())
112 }
113}
114
115impl TryIntoHeaderValue for u32 {
116 type Error = InvalidHeaderValue;
117
118 #[inline]
119 fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
120 HeaderValue::try_from(self.to_string())
121 }
122}
123
124impl TryIntoHeaderValue for Mime {
125 type Error = InvalidHeaderValue;
126
127 #[inline]
128 fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
129 HeaderValue::from_str(self.as_ref())
130 }
131}