diff --git a/src/status.rs b/src/status.rs index 7b3e8d64..0e3ca711 100644 --- a/src/status.rs +++ b/src/status.rs @@ -70,14 +70,13 @@ impl StatusCode { /// assert!(err.is_err()); /// ``` #[inline] - pub fn from_u16(src: u16) -> Result { - if !(100..1000).contains(&src) { - return Err(InvalidStatusCode::new()); + pub const fn from_u16(src: u16) -> Result { + if let 100..=999 = src { + if let Some(code) = NonZeroU16::new(src) { + return Ok(StatusCode(code)); + } } - - NonZeroU16::new(src) - .map(StatusCode) - .ok_or_else(InvalidStatusCode::new) + Err(InvalidStatusCode::new()) } /// Converts a `&[u8]` to a status code. @@ -523,7 +522,7 @@ status_codes! { } impl InvalidStatusCode { - fn new() -> InvalidStatusCode { + const fn new() -> InvalidStatusCode { InvalidStatusCode { _priv: () } } }