Rust 结构中的类C指针
我正在尝试将这个简单的C代码转换为Rust:Rust 结构中的类C指针,rust,Rust,我正在尝试将这个简单的C代码转换为Rust: #include <stdio.h> struct n { int *p; }; int main(void) { int i = 8; struct n m; m.p = &i; printf("%d ", i); printf("%d", *(m.p)); return 0; } 但我得到: error: mismatched types: expec
#include <stdio.h>
struct n {
int *p;
};
int main(void) {
int i = 8;
struct n m;
m.p = &i;
printf("%d ", i);
printf("%d", *(m.p));
return 0;
}
但我得到:
error: mismatched types: expected `*mut int`, found `&int` (expected *-ptr, found &-ptr).
关于这一错误:
m.p = &i;
其他行没有错误
我读到&是为了获取一个变量的地址,但是如何存储地址呢?Change
m.p=&I代码>到m.p=&mut i as*mut代码>
不过,更惯用的方法是:
let mut m = n {
p: &mut i
};
更惯用的做法是,除非必要,否则不要使用原始指针
struct N<'a> {
p: &'a mut int
}
struct-nstuct n{p:&mut int}这会给出错误“缺少生存期说明符”m.p=&mut i as*mut;这会导致错误“取消对不安全指针的引用需要不安全的函数或块”,潜在的不安全代码必须放在不安全的块中:unsafe{…}
。不安全的不是赋值,而是后面的deref。你能解释一下上一个例子中不使用原始指针的情况吗?@Jimmay,你应该认真阅读,尤其是。有关参考文献的更多信息,请参阅。
struct N<'a> {
p: &'a mut int
}