gpt4 book ai didi

rust - 通过 `core` 而不是 `std` 引用模块有什么缺点吗?

转载 作者:行者123 更新时间:2023-11-29 07:52:49 24 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

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

虽然在实际实现中没有区别。如果函数在core中提供,那么在std中的函数只是一个reexport。 .

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

关于rust - 通过 `core` 而不是 `std` 引用模块有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53800450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com