Rust 通过'core'而不是'std'引用模块有什么缺点吗?

Rust 通过'core'而不是'std'引用模块有什么缺点吗?,rust,Rust,Rust的标准库公开为两个包:std和core。就API而言,core中的功能是std的子集,可以在不依赖任何操作系统集成或堆分配的情况下得到支持。在为我的库编写导入时,我一直试图通过更兼容的core来引用模块,而不是std,如果两者都有 然而,我不清楚他们对相同功能的实现是否会有所不同。如果我使用core::cell::RefCell,我能得到一个比引用std::cell::RefCell效率更低的实现吗 通过core而不是std引用模块(如果两者都有)有什么缺点吗?Rust旨在成为一种通用语

Rust的标准库公开为两个包:
std
core
。就API而言,
core
中的功能是
std
的子集,可以在不依赖任何操作系统集成或堆分配的情况下得到支持。在为我的库编写导入时,我一直试图通过更兼容的
core
来引用模块,而不是
std
,如果两者都有

然而,我不清楚他们对相同功能的实现是否会有所不同。如果我使用
core::cell::RefCell
,我能得到一个比引用
std::cell::RefCell
效率更低的实现吗


通过
core
而不是
std
引用模块(如果两者都有)有什么缺点吗?

Rust旨在成为一种通用语言,可以运行在多种体系结构(x86_64、i686、PowerPC、ARM、RISC-V)和系统(Windows、macOS、Linux)上,甚至嵌入式系统上

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

这就是
#![no_std]
开始发挥作用。如果您将该指令放入lib.rs,您将告诉Rust编译器不要链接
std
板条箱,而只使用
core
。正如您所说,
core
std
的一个子集,并且(大部分)拥有不需要分配内存或其他需要底层操作系统的东西

不过,在实际实现中没有区别。如果该功能是在
core
中提供的,则
std
中的功能只是一个示例


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

我同意你的大部分解释,但不同意你的结论。大多数人应该使用
std
而不是
core
,除非他们有意创建在无std环境下工作的代码。@Shepmaster我看不出我的结论与你的有什么不同^^^你想让我扩展它吗?