-
Notifications
You must be signed in to change notification settings - Fork 320
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