perf(h1): remove book keeping on final body writes
This commit is contained in:
		
							
								
								
									
										34
									
								
								src/common/buf.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/common/buf.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| use bytes::Buf; | ||||
| use iovec::IoVec; | ||||
|  | ||||
| /// A `Buf` wrapping a static byte slice. | ||||
| #[derive(Debug)] | ||||
| pub(crate) struct StaticBuf(pub(crate) &'static [u8]); | ||||
|  | ||||
| impl Buf for StaticBuf { | ||||
|     #[inline] | ||||
|     fn remaining(&self) -> usize { | ||||
|         self.0.len() | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     fn bytes(&self) -> &[u8] { | ||||
|         self.0 | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     fn advance(&mut self, cnt: usize) { | ||||
|         self.0 = &self.0[cnt..]; | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     fn bytes_vec<'t>(&'t self, dst: &mut [&'t IoVec]) -> usize { | ||||
|         if dst.is_empty() { | ||||
|             return 0; | ||||
|         } else { | ||||
|             dst[0] = self.0.into(); | ||||
|             return 1; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -1,5 +1,7 @@ | ||||
| mod buf; | ||||
| mod exec; | ||||
| mod never; | ||||
|  | ||||
| pub(crate) use self::buf::StaticBuf; | ||||
| pub(crate) use self::exec::Exec; | ||||
| pub use self::never::Never; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user