我想将*mut指针转换为&mut引用。
// Both setting a value to ptr and getting a value from ptr succeeds.
let ptr: &mut usize = unsafe { &mut *(VIRTUAL_ADDRESS_TO_ACCESS_FREE_PAGE as *mut usize) };
Run Code Online (Sandbox Code Playgroud)
这有效。但是,如果&mut在unsafe块之外,代码将无法部分工作。*ptr = foo不会存储foo到内存ptr点,但let foo = *ptr会将值分配*ptr给foo。
// Setting a value to ptr fails, but getting a value from ptr succeeds.
let ptr: &mut usize = &mut unsafe { *(VIRTUAL_ADDRESS_TO_ACCESS_FREE_PAGE as *mut usize) …Run Code Online (Sandbox Code Playgroud) 从Rust库中读取文档时遇到了这段代码:
for (ent, pos, vel) in (&*entities, &mut pos_storage, &vel_storage).join() {
println!("Processing entity: {:?}", ent);
*pos += *vel;
}
Run Code Online (Sandbox Code Playgroud)
原始链接:https : //slide-rs.github.io/specs/08_join.html
&*实体在这里做什么。据我所知,它是在取消引用实体,然后再次引用它?
rust ×2