在示例中,hs 从 std 重新导出 HashSet。但它编译时没有错误或警告。为什么?
#![no_std]
pub use hs::HashSet;
pub fn new() -> HashSet<usize> {
HashSet::new()
}
pub fn insert(a: &mut HashSet<usize>, v: usize) {
a.insert(v);
}
Run Code Online (Sandbox Code Playgroud)
好吧,只是意味着您默认#![no_std]不包含. 这并不意味着您不能显式或隐式(即通过其他板条箱)仍然包含. 换句话说,不禁止使用,但默认情况下禁用它。std std#![no_std]std
例如,这也有效:
#![no_std]
extern crate std;
fn main() {
std::println!("hello!");
}
Run Code Online (Sandbox Code Playgroud)