我很好奇这两个模块在实践中是否有区别?如果没有,那为什么会有这两个副本呢?
std::rc::Rc
是alloc::rc::Rc
的转口产品。你可以在src/std/lib中看到。整个rc
模块重新导出:pub use alloc::rc;
alloc
crate适用于任何类型的内存分配。引用计数、装箱、原始分配和对底层分配器的一般访问(Rust中通常是jemalloc
)。由于Rc
类型是如此常见的类型,它应该存在于标准库中,但alloc
crate不应该是标准库的一部分,只是alloc
的rc
模块被重新导出到标准库中。这使用户不必关心alloc
crate,而是提供了一个干净的标准库,没有奇怪的东西,容易使用起来不舒服。