5.12.不使用标准库开发 Rust
优质
小牛编辑
129浏览
2023-12-01
Rust 的标准库提供了很多有用的功能,不过它假设它的 host 系统的多种功能的支持:线程,网络,堆分配和其他功能。有些系统并没有这些功能,不过,Rust也能在这些系统上工作。为此,我们可以通过一个属性来告诉 Rust 我们不想使用标准库:#![no_std]
。
注意:这个功能技术上是稳定的,不过有些附加条件。其一,你可以构建一个稳定的
#![no_std]
库,但二进制文件不行。关于没有标准库的库文件的细节,查看关于#![no_std]
的章节。
为了使用#![no_std]
,在 crate 的根文件上加入:
#![no_std]
fn plus_one(x: i32) -> i32 {
x + 1
}
很多暴露于标准库中的功能通过core
crate也同样可用。当我们使用标准库时,Rust 自动将std
引入到作用域中,允许我们不用显示导入就能使用相关功能。相似的,当使用#![no_std]
,Rust 会将core
引入作用域中,以及它的 prelude。这意味着很多代码也是能正常运行的:
#![no_std]
fn may_fail(failure: bool) -> Result<(), &'static str> {
if failure {
Err("this didn’t work!")
} else {
Ok(())
}
}