Rust 结构中的类C指针

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

我正在尝试将这个简单的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: 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
}