`alloc::rc::Rc` 和 `std::rc::Rc` 有什么区别?

What is the difference between `alloc::rc::Rc` and `std::rc::Rc`?

我很好奇这两个模块在实践中有什么区别吗?如果不是,为什么会有这两个副本?

std::rc::Rc 只是 alloc::rc::Rc 的再导出。您可以在 src/std/lib.rs 中看到整个 rc 模块被重新导出:pub use alloc::rc;

alloc crate 用于任何类型的内存分配。引用计数、盒装、原始分配和对底层分配器的一般访问(在 Rust 中通常 jemalloc)。由于 Rc 类型是如此常见的类型,它应该存在于标准库中,但是 alloc crate 不应该是标准库的一部分,只是 rc 模块 alloc 被重新导出到标准库。这使用户不必关心 alloc 箱子,而是提供了一个干净的标准库,没有奇怪的东西,这些东西使用起来很不舒服。