1. Struct转&[u8]
- struct定义如下
#[repr(C)]
struct Row {
id: u32,
username: [u8; 32],
email: [u8; 255],
}
- Struct转
&[u8]
, 约束条件是Sized
pub unsafe fn serialize_row<T: Sized>(src: &T) ->&[u8] {
::std::slice::from_raw_parts((src as *const T) as *const u8, ::std::mem::size_of::<T>())
}
2. &[u8]
转Struct
这里是Vec<u8>
.
pub unsafe fn deserialize_row(src: Vec<u8>) -> Row{
std::ptr::read(src.as_ptr() as *const _)
}
3. 注意
&[u8]
转为Vec<u8>
会有性能问题. 毕竟是clone.- 这里的问题是不能对
Box