通过`core`而不是`std`引用模块有什么不利之处吗?

4 rust

Rust的标准库作为两个包公开:stdcore.就API而言,其中的功能corestd可以支持的子集,而不依赖于任何操作系统集成或堆分配.在为我的库编写导入时,我总是试图通过更兼容的方式core来引用模块而不是std,如果两者都可用的话.

但是,我不清楚它们的相同功能的实现是否会有所不同.如果我使用core::cell::RefCell,我可以得到一个比我提到的效率更低的实现std::cell::RefCell吗?

引用模块是否有任何不利之处,core而不是std两者都可用?

hel*_*low 7

锈的目标是能够在多种架构下(x86_64,i686的,的PowerPC,ARM,RISC-V)和系统(在Windows,MacOS的,Linux的),甚至嵌入式系统没有运行通用语言Ø操作摄像机小号 ystem.

但是当你没有操作系统时,你不一定有内存分配器或文件处理,因为这些是操作系统通常会做的事情.

这是#![no_std]发挥作用的地方.如果将该指令放在lib.rs中,则会告诉Rust编译器不链接std包,但只能使用core.正如你所说,core它是一部分,std并且(大部分)不需要分配内存或其他需要底层操作系统的东西.

但实际执行情况没有区别.如果提供了core该功能,则函数std只是重新导出.

TL; DR:std如果您正在运行操作系统,请使用,否则使用core.没有必要混合它们.