如何修改原始指针中的值而不将其转换为引用?

时间:2018-03-08 01:09:16

标签: rust

Storing value of a pointer in another pointer in Rust中,有人建议您可以修改Rust中原始指针的值,而不将其转换为引用(强调添加):

  

你根本不需要转化;说" Box相当于* T"只是勉强准确; 您无需转换为修改数据的引用;不需要掉落的电话;提到互斥锁似乎是左边的场(这里没有线程);关于何时发生可变混叠的问题存在分歧。虽然这个答案中有一些正确的观点,但我不建议人们使用它,除非他们已经知道他们在做什么(这不是Stack Overflow的重点)。 - Shepmaster 10小时前

如何做到这一点?

是否违反了可变别名规则,如果没有,为什么不呢?

1 个答案:

答案 0 :(得分:1)

您可以通过取消引用并直接存储到原始指针中来编写值:

unsafe fn example(ptr: *mut u8) {
    *ptr = 42;
}

fn main() {
    let mut a = 0;
    unsafe { example(&mut a); }
    println!("{}", a);
}