-
Notifications
You must be signed in to change notification settings - Fork 315
Open
Description
I'm using BytesMut::unsplit
in a project and would like to raise an error when the bytes cannot be unsplitted, instead of silently copying. An Err(_)
would let me know I messed up somewhere, so I can go fix the problem.
Reading the source code, I came across try_unsplit
, which seems to do exactly what I need, but is private. Have you considered making it public? Or is there a suitable workaround for people like me, who want to guarantee that no data is ever copied from one BytesMut
to the other?
In case it's relevant, below is the code for try_unsplit
that I think could be made public:
Lines 908 to 926 in cb7f844
fn try_unsplit(&mut self, other: BytesMut) -> Result<(), BytesMut> { | |
if other.capacity() == 0 { | |
return Ok(()); | |
} | |
let ptr = unsafe { self.ptr.as_ptr().add(self.len) }; | |
if ptr == other.ptr.as_ptr() | |
&& self.kind() == KIND_ARC | |
&& other.kind() == KIND_ARC | |
&& self.data == other.data | |
{ | |
// Contiguous blocks, just combine directly | |
self.len += other.len; | |
self.cap += other.cap; | |
Ok(()) | |
} else { | |
Err(other) | |
} | |
} |
Metadata
Metadata
Assignees
Labels
No labels