这是我遇到的错误:
error[E0381]: use of possibly uninitialized variable: `mbinfo.flags`
--> kernel/src/loader/mod.rs:256:20
|
256 | mbinfo.flags = mbinfo.flags | multiboot::MULTIBOOT_INFO_CMDLINE;
| ^^^^^^^^^^^^ use of possibly uninitialized `mbinfo.flags`
这是代码:
let mut mbinfo: multiboot::multiboot_info;
mbinfo.flags = 0 as u32;
mbinfo.flags = mbinfo.flags | multiboot::MULTIBOOT_INFO_CMDLINE
即使我明确地对其进行了初始化,我仍然收到错误。我尝试使该结构派生Default,但是问题是该结构包含联合,当我尝试派生Default时,我得到
error: this trait cannot be derived for unions
有没有简单的出路?谢谢。
multiboot模块是由bindgen从头文件自动生成的。
Rust Playground上的MWE,代码位于结尾
答案 0 :(得分:2)
error[E0381]: assign to part of possibly uninitialized variable: `mbinfo`
--> src/lib.rs:1178:4
|
1178 | mbinfo.flags = 0;
| ^^^^^^^^^^^^^^^^ use of possibly uninitialized `mbinfo`
编译器会告诉您确切的问题:您正在尝试使用未初始化的结构。您正在尝试仅初始化结构的一个字段,Rust不允许这样做。
multiboot_info
没有实现Default
特征,因此您需要弄清楚如何使用其API创建它。