引入:
use std::mem;
结构体:
#[derive(Debug)]
struct Person {
age: i32,
}
struct转换成bytes:
let person = Person { age: 18 };
let bytes: &[u8] = unsafe {
let ptr = &person as *const Person as *const u8;
std::slice::from_raw_parts(ptr, mem::size_of::<Person>())
};
bytes转换成struct:
let person: Person = unsafe { std::ptr::read(bytes.as_ptr() as *const _) };
完整代码:
//main.rs
use std::mem;
#[derive(Debug)]
struct Person {
age: i32,
}
fn main() {
let bytes = struct_to_bytes();
println!("{:?}", bytes);
let person = bytes_to_struct(bytes);
println!("{:?}", person);
}
//struct转换bytes
fn struct_to_bytes() -> &'static [u8] {
let person = Person { age: 18 };
let bytes: &[u8] = unsafe {
let ptr = &person as *const Person as *const u8;
std::slice::from_raw_parts(ptr, mem::size_of::<Person>())
};
bytes
}
//bytes转换struct
fn bytes_to_struct(bytes: &[u8]) -> Person {
let person: Person = unsafe { std::ptr::read(bytes.as_ptr() as *const _) };
return person;
}