2016-08-04 5 views
0

Я не совсем понял, как работают небезопасные задания. Следующий код дает мне ошибку:Небезопасное присваивание возвращает пустую структуру

fn num() -> u64 { 
    1; 
} 

fn test() -> u64 { 
    let x = unsafe { 
     num(); 
    }; 
    return x; 
} 

ошибка:

src/main.rs:37:9: 37:10 note: expected type `u64` 
src/main.rs:37:9: 37:10 note: found type `()` 

Мой реальный example похож на этот. Странно, что у меня есть тот же самый код, хотя я не могу скомпилировать его.

ответ

2

Точки с запятой.

fn num() -> u64 { 
    1 
} 

fn test() -> u64 { 
    let x = unsafe { 
     num() 
    }; 
    return x; 
} 

See also this answer about semicolons.

+0

И, конечно, функция не должна иметь 'return' вообще:' fn test() -> u64 {unsafe {num()}} '. – Shepmaster

+0

Это вопрос стиля, неправы или морали. –

+0

Я более чем счастлив отказаться от предложений стиля (и морали) как Евангелия. Кроме того, Клиппи соглашается со мной. – Shepmaster

Смежные вопросы