Skip to content

Commit 22448cd

Browse files
David Barskyseanmonstar
authored andcommitted
Switch HttpTryFrom to TryFrom.
1 parent 9d8058a commit 22448cd

File tree

15 files changed

+125
-276
lines changed

15 files changed

+125
-276
lines changed

src/convert.rs

Lines changed: 0 additions & 75 deletions
This file was deleted.

src/error.rs

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -167,33 +167,9 @@ impl From<header::InvalidHeaderValueBytes> for Error {
167167
}
168168
}
169169

170-
// A crate-private type until we can use !.
171-
//
172-
// Being crate-private, we should be able to swap the type out in a
173-
// backwards compatible way.
174-
pub enum Never {}
175-
176-
impl From<Never> for Error {
177-
fn from(never: Never) -> Error {
178-
match never {}
179-
}
180-
}
181-
182-
impl fmt::Debug for Never {
183-
fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
184-
match *self {}
185-
}
186-
}
187-
188-
impl fmt::Display for Never {
189-
fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
190-
match *self {}
191-
}
192-
}
193-
194-
impl error::Error for Never {
195-
fn description(&self) -> &str {
196-
match *self {}
170+
impl From<std::convert::Infallible> for Error {
171+
fn from(err: std::convert::Infallible) -> Error {
172+
match err {}
197173
}
198174
}
199175

src/header/map.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
use std::collections::HashMap;
22
use std::collections::hash_map::RandomState;
3+
use std::convert::TryFrom;
34
use std::hash::{BuildHasher, Hash, Hasher};
45
use std::iter::{FromIterator, FusedIterator};
56
use std::marker::PhantomData;
67
use std::{fmt, mem, ops, ptr, vec};
78

8-
use crate::convert::{HttpTryFrom, HttpTryInto};
99
use crate::Error;
1010

1111
use super::HeaderValue;
@@ -1815,27 +1815,30 @@ impl<T> FromIterator<(HeaderName, T)> for HeaderMap<T> {
18151815
///
18161816
/// ```
18171817
/// use std::collections::HashMap;
1818-
/// use http::{HttpTryFrom, header::HeaderMap};
1818+
/// use std::convert::TryInto;
1819+
/// use http::HeaderMap;
18191820
///
18201821
/// let mut map = HashMap::new();
18211822
/// map.insert("X-Custom-Header".to_string(), "my value".to_string());
18221823
///
1823-
/// let headers: HeaderMap = HttpTryFrom::try_from(&map).expect("valid headers");
1824+
/// let headers: HeaderMap = (&map).try_into().expect("valid headers");
18241825
/// assert_eq!(headers["X-Custom-Header"], "my value");
18251826
/// ```
1826-
impl<'a, K, V, T> HttpTryFrom<&'a HashMap<K, V>> for HeaderMap<T>
1827+
impl<'a, K, V, T> TryFrom<&'a HashMap<K, V>> for HeaderMap<T>
18271828
where
18281829
K: Eq + Hash,
1829-
HeaderName: HttpTryFrom<&'a K>,
1830-
T: HttpTryFrom<&'a V>
1830+
HeaderName: TryFrom<&'a K>,
1831+
<HeaderName as TryFrom<&'a K>>::Error: Into<crate::Error>,
1832+
T: TryFrom<&'a V>,
1833+
T::Error: Into<crate::Error>,
18311834
{
18321835
type Error = Error;
18331836

18341837
fn try_from(c: &'a HashMap<K, V>) -> Result<Self, Self::Error> {
18351838
c.into_iter()
1836-
.map(|(k, v)| {
1837-
let name = k.http_try_into()?;
1838-
let value = v.http_try_into()?;
1839+
.map(|(k, v)| -> crate::Result<(HeaderName, T)> {
1840+
let name = TryFrom::try_from(k).map_err(Into::into)?;
1841+
let value = TryFrom::try_from(v).map_err(Into::into)?;
18391842
Ok((name, value))
18401843
})
18411844
.collect()

src/header/name.rs

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
use crate::byte_str::ByteStr;
2-
use crate::HttpTryFrom;
32
use bytes::{Bytes, BytesMut};
43

54
use std::borrow::Borrow;
65
use std::error::Error;
6+
use std::convert::{TryFrom};
77
use std::hash::{Hash, Hasher};
88
use std::str::FromStr;
99
use std::{fmt, mem};
@@ -1888,40 +1888,31 @@ impl From<HeaderName> for Bytes {
18881888
}
18891889
}
18901890

1891-
impl<'a> HttpTryFrom<&'a HeaderName> for HeaderName {
1892-
type Error = crate::error::Never;
1893-
1894-
#[inline]
1895-
fn try_from(t: &'a HeaderName) -> Result<Self, Self::Error> {
1896-
Ok(t.clone())
1897-
}
1898-
}
1899-
1900-
impl<'a> HttpTryFrom<&'a str> for HeaderName {
1891+
impl<'a> TryFrom<&'a str> for HeaderName {
19011892
type Error = InvalidHeaderName;
19021893
#[inline]
19031894
fn try_from(s: &'a str) -> Result<Self, Self::Error> {
19041895
Self::from_bytes(s.as_bytes())
19051896
}
19061897
}
19071898

1908-
impl<'a> HttpTryFrom<&'a String> for HeaderName {
1899+
impl<'a> TryFrom<&'a String> for HeaderName {
19091900
type Error = InvalidHeaderName;
19101901
#[inline]
19111902
fn try_from(s: &'a String) -> Result<Self, Self::Error> {
19121903
Self::from_bytes(s.as_bytes())
19131904
}
19141905
}
19151906

1916-
impl<'a> HttpTryFrom<&'a [u8]> for HeaderName {
1907+
impl<'a> TryFrom<&'a [u8]> for HeaderName {
19171908
type Error = InvalidHeaderName;
19181909
#[inline]
19191910
fn try_from(s: &'a [u8]) -> Result<Self, Self::Error> {
19201911
Self::from_bytes(s)
19211912
}
19221913
}
19231914

1924-
impl HttpTryFrom<Bytes> for HeaderName {
1915+
impl TryFrom<Bytes> for HeaderName {
19251916
type Error = InvalidHeaderNameBytes;
19261917
#[inline]
19271918
fn try_from(bytes: Bytes) -> Result<Self, Self::Error> {

src/header/value.rs

Lines changed: 6 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
use bytes::{Bytes, BytesMut};
22

3+
use std::convert::TryFrom;
34
use std::error::Error;
45
use std::str::FromStr;
56
use std::{cmp, fmt, mem, str};
67

7-
use crate::convert::HttpTryFrom;
8-
use crate::error::Never;
98
use crate::header::name::HeaderName;
109

1110
/// Represents an HTTP header field value.
@@ -397,15 +396,6 @@ macro_rules! from_integers {
397396
}
398397
}
399398

400-
impl HttpTryFrom<$t> for HeaderValue {
401-
type Error = Never;
402-
403-
#[inline]
404-
fn try_from(num: $t) -> Result<Self, Self::Error> {
405-
Ok(num.into())
406-
}
407-
}
408-
409399
#[test]
410400
fn $name() {
411401
let n: $t = 55;
@@ -499,16 +489,7 @@ impl<'a> From<&'a HeaderValue> for HeaderValue {
499489
}
500490
}
501491

502-
impl<'a> HttpTryFrom<&'a HeaderValue> for HeaderValue {
503-
type Error = crate::error::Never;
504-
505-
#[inline]
506-
fn try_from(t: &'a HeaderValue) -> Result<Self, Self::Error> {
507-
Ok(t.clone())
508-
}
509-
}
510-
511-
impl<'a> HttpTryFrom<&'a str> for HeaderValue {
492+
impl<'a> TryFrom<&'a str> for HeaderValue {
512493
type Error = InvalidHeaderValue;
513494

514495
#[inline]
@@ -517,15 +498,15 @@ impl<'a> HttpTryFrom<&'a str> for HeaderValue {
517498
}
518499
}
519500

520-
impl<'a> HttpTryFrom<&'a String> for HeaderValue {
501+
impl<'a> TryFrom<&'a String> for HeaderValue {
521502
type Error = InvalidHeaderValue;
522503
#[inline]
523504
fn try_from(s: &'a String) -> Result<Self, Self::Error> {
524505
Self::from_bytes(s.as_bytes())
525506
}
526507
}
527508

528-
impl<'a> HttpTryFrom<&'a [u8]> for HeaderValue {
509+
impl<'a> TryFrom<&'a [u8]> for HeaderValue {
529510
type Error = InvalidHeaderValue;
530511

531512
#[inline]
@@ -534,7 +515,7 @@ impl<'a> HttpTryFrom<&'a [u8]> for HeaderValue {
534515
}
535516
}
536517

537-
impl HttpTryFrom<String> for HeaderValue {
518+
impl TryFrom<String> for HeaderValue {
538519
type Error = InvalidHeaderValueBytes;
539520

540521
#[inline]
@@ -543,7 +524,7 @@ impl HttpTryFrom<String> for HeaderValue {
543524
}
544525
}
545526

546-
impl HttpTryFrom<Bytes> for HeaderValue {
527+
impl TryFrom<Bytes> for HeaderValue {
547528
type Error = InvalidHeaderValueBytes;
548529

549530
#[inline]
@@ -552,16 +533,6 @@ impl HttpTryFrom<Bytes> for HeaderValue {
552533
}
553534
}
554535

555-
impl HttpTryFrom<HeaderName> for HeaderValue {
556-
type Error = InvalidHeaderValue;
557-
558-
#[inline]
559-
fn try_from(name: HeaderName) -> Result<Self, Self::Error> {
560-
// Infallable as header names have the same validations
561-
Ok(name.into())
562-
}
563-
}
564-
565536
#[cfg(test)]
566537
mod try_from_header_name_tests {
567538
use super::*;

src/lib.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,11 +176,9 @@ pub mod uri;
176176
pub mod version;
177177

178178
mod byte_str;
179-
mod convert;
180179
mod error;
181180
mod extensions;
182181

183-
pub use crate::convert::HttpTryFrom;
184182
pub use crate::error::{Error, Result};
185183
pub use crate::extensions::Extensions;
186184
#[doc(no_inline)]

src/method.rs

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
//! ```
1717
1818
use self::Inner::*;
19-
use crate::HttpTryFrom;
2019

2120
use std::convert::AsRef;
2221
use std::error::Error;
2322
use std::str::FromStr;
23+
use std::convert::TryFrom;
2424
use std::{fmt, str};
2525

2626
/// The Request Method (VERB)
@@ -322,16 +322,7 @@ impl<'a> From<&'a Method> for Method {
322322
}
323323
}
324324

325-
impl<'a> HttpTryFrom<&'a Method> for Method {
326-
type Error = crate::error::Never;
327-
328-
#[inline]
329-
fn try_from(t: &'a Method) -> Result<Self, Self::Error> {
330-
Ok(t.clone())
331-
}
332-
}
333-
334-
impl<'a> HttpTryFrom<&'a [u8]> for Method {
325+
impl<'a> TryFrom<&'a [u8]> for Method {
335326
type Error = InvalidMethod;
336327

337328
#[inline]
@@ -340,12 +331,12 @@ impl<'a> HttpTryFrom<&'a [u8]> for Method {
340331
}
341332
}
342333

343-
impl<'a> HttpTryFrom<&'a str> for Method {
334+
impl<'a> TryFrom<&'a str> for Method {
344335
type Error = InvalidMethod;
345336

346337
#[inline]
347338
fn try_from(t: &'a str) -> Result<Self, Self::Error> {
348-
HttpTryFrom::try_from(t.as_bytes())
339+
TryFrom::try_from(t.as_bytes())
349340
}
350341
}
351342

@@ -354,7 +345,7 @@ impl FromStr for Method {
354345

355346
#[inline]
356347
fn from_str(t: &str) -> Result<Self, Self::Err> {
357-
HttpTryFrom::try_from(t)
348+
TryFrom::try_from(t)
358349
}
359350
}
360351

0 commit comments

Comments
 (0)