我想在Box
的箱子里使用no_std
。这可能吗?到目前为止,我的简单尝试都没有奏效。
这编译(但使用标准库):
fn main() {
let _: Box<[u8]> = Box::new([0; 10]);
}
这不是:
#![no_std]
fn main() {
let _: Box<[u8]> = Box::new([0; 10]);
}
但是,查看Rust源代码,我看到Box
在liballoc中定义了警告
此库与libcore一样,不是用于一般用途,而是用作其他库的构建块。此库中的类型和接口通过标准库重新导出,不应通过此库使用。
由于Box
不依赖于std但只是为它重新导出,似乎我只需要找出将其导入我的代码的正确方法。 (尽管这似乎不推荐。)
答案 0 :(得分:1)
您必须导入alloc
crate:
#![no_std]
#![feature(alloc)]
extern crate alloc;
use alloc::boxed::Box;
fn main() {
let _: Box<[u8]> = Box::new([0; 10]);
}
请注意,这会编译为lib,但不会因为缺少lang_items
而编译为二进制文件。