Я пытаюсь преобразовать этот простой код C в Руст:C-подобный указатель в структуре
#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;
}
Выход «8 8».
Нет необходимости в сборке мусора или других указателях, о которых я читал.
Я попытался это:
struct n {
p: *mut int
}
fn main() {
let mut i: int = 8;
let mut m: n;
m.p = &i;
println!("{} ", i);
println!("{}", *(m.p));
}
Но я получаю:
error: mismatched types: expected `*mut int`, found `&int` (expected *-ptr, found &-ptr).
Относительно этой ошибки:
m.p = &i;
Там нет ошибок для других линий.
Я прочитал, что & должен получить адрес переменной, но как я могу сохранить адрес?
структура п { \t р: & ают INT } это дает ошибку "отсутствует спецификатор пожизненную" – Jimmay
Т.пл = & аю я, как * аю _; это дает ошибку «разыменование небезопасного указателя требует небезопасной функции или блока» – Jimmay
Потенциально небезопасный код должен быть помещен в небезопасный блок: 'unsafe {...}'. Это не назначение, которое небезопасно, но позже. –