@@ -27,6 +27,7 @@ enum ErrorKind {
27
27
UriParts ( uri:: InvalidUriParts ) ,
28
28
HeaderName ( header:: InvalidHeaderName ) ,
29
29
HeaderValue ( header:: InvalidHeaderValue ) ,
30
+ MaxSizeReached ( MaxSizeReached ) ,
30
31
}
31
32
32
33
impl fmt:: Debug for Error {
@@ -61,6 +62,7 @@ impl Error {
61
62
UriParts ( ref e) => e,
62
63
HeaderName ( ref e) => e,
63
64
HeaderValue ( ref e) => e,
65
+ MaxSizeReached ( ref e) => e,
64
66
}
65
67
}
66
68
}
@@ -73,6 +75,14 @@ impl error::Error for Error {
73
75
}
74
76
}
75
77
78
+ impl From < MaxSizeReached > for Error {
79
+ fn from ( err : MaxSizeReached ) -> Error {
80
+ Error {
81
+ inner : ErrorKind :: MaxSizeReached ( err) ,
82
+ }
83
+ }
84
+ }
85
+
76
86
impl From < status:: InvalidStatusCode > for Error {
77
87
fn from ( err : status:: InvalidStatusCode ) -> Error {
78
88
Error {
@@ -127,6 +137,35 @@ impl From<std::convert::Infallible> for Error {
127
137
}
128
138
}
129
139
140
+ /// Error returned when max capacity of `HeaderMap` is exceeded
141
+ pub struct MaxSizeReached {
142
+ _priv : ( ) ,
143
+ }
144
+
145
+ impl MaxSizeReached {
146
+ /// Create new `MaxSizeReached` instance
147
+ pub fn new ( ) -> MaxSizeReached {
148
+ MaxSizeReached { _priv : ( ) }
149
+ }
150
+ }
151
+
152
+ impl fmt:: Debug for MaxSizeReached {
153
+ fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
154
+ f. debug_struct ( "MaxSizeReached" )
155
+ // skip _priv noise
156
+ . finish ( )
157
+ }
158
+ }
159
+
160
+ impl fmt:: Display for MaxSizeReached {
161
+ fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
162
+ f. write_str ( "max size reached" )
163
+ }
164
+ }
165
+
166
+ impl std:: error:: Error for MaxSizeReached { }
167
+
168
+
130
169
#[ cfg( test) ]
131
170
mod tests {
132
171
use super :: * ;
0 commit comments