【发布时间】:2018-02-18 10:37:21
【问题描述】:
我正在用 Rust 编写一个操作系统,需要直接调用我正在计算的虚拟地址(u32 类型)。我希望这相对简单:
let code = virtual_address as (extern "C" fn ());
(code)();
但是,这抱怨演员表是非原始的。它建议我使用 From 特征,但我看不出这有什么帮助(尽管我对 Rust 比较陌生,所以可能会遗漏一些东西)。
error[E0605]: non-primitive cast: `u32` as `extern "C" fn()`
--> src/main.rs:3:16
|
3 | let code = virtual_address as (extern "C" fn ());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: an `as` expression can only be used to convert between primitive types. Consider using the `From` trait
我可以使用 libcore 中的所有内容,但尚未移植 std,因此不能依赖任何不是 no_std 的东西
【问题讨论】:
标签: rust function-pointers osdev