代码之家  ›  专栏  ›  技术社区  ›  Jeremy Meo

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

  •  4
  • Jeremy Meo  · 技术社区  · 6 年前

    Rust的标准库暴露为两个包: std core . 就API而言, 核心 是的子集 性病 这可以在不依赖任何操作系统集成或堆分配的情况下得到支持。在为我的库编写导入时,我一直希望通过更兼容的 核心 而不是 性病 如果两者都有。

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

    通过引用模块是否有任何缺点? 核心 而不是 性病 如果两者都有?

    1 回复  |  直到 6 年前
        1
  •  7
  •   Shepmaster Tim Diekmann    6 年前

    Rust的目标是成为一种通用语言,可以运行在多种体系结构(x86_、i686、PowerPC、ARM、RISC-V)和系统(Windows、MacOS、Linux)上,甚至可以运行在没有 O perating S ystem .

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

    这里就是 #![no_std] 开始发挥作用。如果你在你的 利比 ,您将告诉Rust编译器不要链接 std 板条箱,但只能使用 core 相反。正如你所说的, 核心 是的子集 标准 并且拥有(大部分)不需要分配内存或其他需要底层操作系统的东西。

    不过,实际的实现没有区别。如果函数在中提供 核心 ,中的函数 标准 只是一个 reexport .

    DR:使用 性病 如果操作系统正在运行,则使用 核心 . 不需要混合它们。