pub struct ResponseParser { /* private fields */ }Expand description
有状态增量响应解析器
解决 parse_response 在 chunked 分帧下 O(n²) 的性能问题:
维持 ChunkedDecoder 跨调用,仅处理新增字节,总复杂度 O(n)。
§用法
ⓘ
let mut parser = ResponseParser::new();
loop {
// 读取数据追加到 buf...
match parser.feed(&buf)? {
Some((resp, consumed)) => { /* 完整响应 */ break; }
None => { /* 等待更多数据 */ }
}
}Implementations§
Source§impl ResponseParser
impl ResponseParser
Sourcepub fn feed(
&mut self,
buf: &[u8],
) -> Result<Option<(ClientResponse, usize)>, ClientError>
pub fn feed( &mut self, buf: &[u8], ) -> Result<Option<(ClientResponse, usize)>, ClientError>
增量解析:输入当前全量缓冲,返回已完成的响应或等待更多数据
与 parse_response API 兼容:返回 Ok(Some((resp, consumed))) 表示
完整响应已就绪(consumed 为从头开始的消费字节数),Ok(None) 表示
等待更多数据。
Trait Implementations§
Source§impl Debug for ResponseParser
impl Debug for ResponseParser
Auto Trait Implementations§
impl Freeze for ResponseParser
impl RefUnwindSafe for ResponseParser
impl Send for ResponseParser
impl Sync for ResponseParser
impl Unpin for ResponseParser
impl UnsafeUnpin for ResponseParser
impl UnwindSafe for ResponseParser
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more