我很好奇这两个模块在实践中有区别吗?如果没有,为什么这两个重复呢?
答案 0 :(得分:7)
std::rc::Rc
只是alloc::rc::Rc
的重新导出。您可以在src/std/lib.rs中看到整个rc
模块已重新导出:pub use alloc::rc;
alloc
crate适用于任何类型的内存分配。引用计数,盒装,原始分配和对底层分配器的一般访问(通常在Rust中jemalloc
)。由于Rc
类型是标准库中应该存在的常见类型,但alloc
包不应该是标准库的一部分,而只是rc
模块{ {1}}被重新导出到标准库。这样可以避免用户不必关心alloc
箱子,而是提供一个干净的标准库,而不会出现使用起来不舒服的奇怪东西。