From 25b7b16dfe0f98e105f4d8fcaf7aaef5da95aed1 Mon Sep 17 00:00:00 2001 From: Marijn Schouten Date: Wed, 11 Dec 2024 10:41:47 +0100 Subject: [PATCH] Make parse_method return const slice Performance experiment --- src/lib.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 8c09acb..d90778e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -851,18 +851,16 @@ pub fn parse_method<'a>(bytes: &mut Bytes<'a>) -> Result<&'a str> { Some(GET) => { // SAFETY: matched the ASCII string and boundary checked let method = unsafe { - bytes.advance(4); - let buf = bytes.slice_skip(1); - str::from_utf8_unchecked(buf) + bytes.advance_and_commit(4); + str::from_utf8_unchecked(GET[..GET.len()-1]) }; Ok(Status::Complete(method)) } Some(POST) if bytes.peek_ahead(4) == Some(b' ') => { // SAFETY: matched the ASCII string and boundary checked let method = unsafe { - bytes.advance(5); - let buf = bytes.slice_skip(1); - str::from_utf8_unchecked(buf) + bytes.advance_and_commit(5); + str::from_utf8_unchecked(POST[..]) }; Ok(Status::Complete(method)) }