我对以下问题感到困惑.如果我理解正确的话
let x = &42;
Run Code Online (Sandbox Code Playgroud)
在内部扩展到
let x_value = 42;
let x = &x;
Run Code Online (Sandbox Code Playgroud)
我想我已经在Rust书中看到了这个,但我找不到它的引用.
我的问题是关于以下代码:
let x = 42;
let rx = &x;
let px = rx as *const i32 as *mut i32;
unsafe {
*px = 0;
}
println!("{}", x);
Run Code Online (Sandbox Code Playgroud)
正如预期的那样打印0.但是,如果我写的话
let rx = &42;
let px = rx as *const i32 as *mut i32;
unsafe {
println!("Deref");
*px = 0;
}
println!("{}", x);
Run Code Online (Sandbox Code Playgroud)
程序在打印完毕后终止Deref.当px被取消引用时,显然会出现问题.我想我对let x = &42内部扩展的第一次评估是错误的.
| 归档时间: |
|
| 查看次数: |
1217 次 |
| 最近记录: |