From 22ad62fcb316f38f8c2da22fcf3c045f7530a63e Mon Sep 17 00:00:00 2001 From: Noa Date: Wed, 9 Apr 2025 14:22:35 -0500 Subject: [PATCH] Make `StatusCode::from_u16` const --- src/status.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) 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: () } } }