mirror of
https://github.com/tokio-rs/bytes.git
synced 2026-08-15 00:00:18 +02:00
Don't transmute & to &mut
This commit is contained in:
+4
-1
@@ -64,7 +64,10 @@ impl MemRef {
|
||||
|
||||
#[inline]
|
||||
pub fn bytes_mut(&mut self) -> &mut [u8] {
|
||||
unsafe { mem::transmute(self.bytes()) }
|
||||
use std::slice;
|
||||
unsafe {
|
||||
slice::from_raw_parts_mut(self.ptr(), self.mem().len)
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
|
||||
+18
-14
@@ -97,24 +97,28 @@ impl Bytes {
|
||||
|
||||
fn obj(&self) -> &ByteStrPriv {
|
||||
unsafe {
|
||||
let obj = if self.is_inline() {
|
||||
TraitObject {
|
||||
data: mem::transmute(&self.data),
|
||||
vtable: mem::transmute(self.vtable - 1),
|
||||
}
|
||||
} else {
|
||||
TraitObject {
|
||||
data: self.data,
|
||||
vtable: mem::transmute(self.vtable),
|
||||
}
|
||||
};
|
||||
|
||||
mem::transmute(obj)
|
||||
mem::transmute(self.to_trait_object())
|
||||
}
|
||||
}
|
||||
|
||||
fn obj_mut(&mut self) -> &mut ByteStrPriv {
|
||||
unsafe { mem::transmute(self.obj()) }
|
||||
unsafe {
|
||||
mem::transmute(self.to_trait_object())
|
||||
}
|
||||
}
|
||||
|
||||
unsafe fn to_trait_object(&self) -> TraitObject {
|
||||
if self.is_inline() {
|
||||
TraitObject {
|
||||
data: mem::transmute(&self.data),
|
||||
vtable: mem::transmute(self.vtable - 1),
|
||||
}
|
||||
} else {
|
||||
TraitObject {
|
||||
data: self.data,
|
||||
vtable: mem::transmute(self.vtable),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn is_inline(&self) -> bool {
|
||||
|
||||
Reference in New Issue
Block a user