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