`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
箱子,而是提供了一个干净的标准库,没有奇怪的东西,这些东西使用起来很不舒服。
我很好奇这两个模块在实践中有什么区别吗?如果不是,为什么会有这两个副本?
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
箱子,而是提供了一个干净的标准库,没有奇怪的东西,这些东西使用起来很不舒服。