【问题标题】:Rust: Convert a mutable u8 pointer to a mutable referenceRust:将可变 u8 指针转换为可变引用
【发布时间】:2022-11-29 20:50:53
【问题描述】:
如何将可变 u8 指针转换为另一种类型的可变引用?
let ptr: *mut u8;
let reference: &mut SomeType = ?; // What should i do here?
我找到了一种可行的解决方案,但我想知道是否有更好的方法:
let reference = unsafe { &mut *(ptr as *mut SomeType) };
【问题讨论】:
标签:
pointers
rust
types
casting
【解决方案1】:
您可以改用 std::mem::transmute:
use std::mem::transmute;
#[repr(transparent)]
struct SomeStruct(u8);
fn main() {
let a = &mut 10u8;
let ptr = a as *mut u8;
let reference: &mut SomeStruct = unsafe { transmute(ptr) };
}