相关疑难解决方法(0)

&mut unsafe { } 和 unsafe { &mut } 有什么区别?

我想将*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)

这有效。但是,如果&mutunsafe块之外,代码将无法部分工作。*ptr = foo不会存储foo到内存ptr点,但let foo = *ptr会将值分配*ptrfoo

// 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

9
推荐指数
1
解决办法
215
查看次数

Rust中“&*”的作用是什么

从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

7
推荐指数
1
解决办法
131
查看次数

标签 统计

rust ×2